MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / append_row

Method append_row

nodedb-columnar/src/memtable/mod.rs:58–79  ·  view source on GitHub ↗

Append a row of values. Validates types and nullability.

(&mut self, values: &[Value])

Source from the content-addressed store, hash-verified

56
57 /// Append a row of values. Validates types and nullability.
58 pub fn append_row(&mut self, values: &[Value]) -> Result<(), ColumnarError> {
59 if values.len() != self.schema.columns.len() {
60 return Err(ColumnarError::SchemaMismatch {
61 expected: self.schema.columns.len(),
62 got: values.len(),
63 });
64 }
65
66 for (i, (col_def, value)) in self.schema.columns.iter().zip(values.iter()).enumerate() {
67 if matches!(value, Value::Null) && !col_def.nullable {
68 return Err(ColumnarError::NullViolation(col_def.name.clone()));
69 }
70 self.columns[i].push(value, &col_def.name, &col_def.column_type)?;
71 }
72
73 self.row_count += 1;
74 debug_assert!(
75 self.columns.iter().all(|c| c.len() == self.row_count),
76 "column lengths must stay aligned with row_count"
77 );
78 Ok(())
79 }
80
81 /// Number of rows currently buffered.
82 pub fn row_count(&self) -> usize {

Calls 4

lenMethod · 0.45
iterMethod · 0.45
cloneMethod · 0.45
pushMethod · 0.45