Extract PK bytes from a row of values.
(&self, values: &[Value])
| 261 | |
| 262 | /// Extract PK bytes from a row of values. |
| 263 | pub(super) fn extract_pk_bytes(&self, values: &[Value]) -> Result<Vec<u8>, ColumnarError> { |
| 264 | if values.len() != self.schema.columns.len() { |
| 265 | return Err(ColumnarError::SchemaMismatch { |
| 266 | expected: self.schema.columns.len(), |
| 267 | got: values.len(), |
| 268 | }); |
| 269 | } |
| 270 | |
| 271 | if self.pk_col_indices.len() == 1 { |
| 272 | Ok(encode_pk(&values[self.pk_col_indices[0]])) |
| 273 | } else { |
| 274 | let pk_values: Vec<&Value> = self.pk_col_indices.iter().map(|&i| &values[i]).collect(); |
| 275 | Ok(crate::pk_index::encode_composite_pk(&pk_values)) |
| 276 | } |
| 277 | } |
| 278 | } |
| 279 | |
| 280 | #[cfg(test)] |
no test coverage detected