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

Method push

nodedb-columnar/src/memtable/column_data/mutation.rs:134–325  ·  view source on GitHub ↗

Append a value. Returns error if type doesn't match.

(&mut self, value: &Value, col_name: &str)

Source from the content-addressed store, hash-verified

132
133 /// Append a value. Returns error if type doesn't match.
134 pub(crate) fn push(&mut self, value: &Value, col_name: &str) -> Result<(), ColumnarError> {
135 match (self, value) {
136 (Self::Int64 { values, valid }, Value::Null) => {
137 values.push(0);
138 Self::push_valid(valid, false);
139 }
140 (Self::Float64 { values, valid }, Value::Null) => {
141 values.push(0.0);
142 Self::push_valid(valid, false);
143 }
144 (Self::Bool { values, valid }, Value::Null) => {
145 values.push(false);
146 Self::push_valid(valid, false);
147 }
148 (Self::Timestamp { values, valid }, Value::Null) => {
149 values.push(0);
150 Self::push_valid(valid, false);
151 }
152 (Self::Decimal { values, valid }, Value::Null) => {
153 values.push([0u8; 16]);
154 Self::push_valid(valid, false);
155 }
156 (Self::Uuid { values, valid }, Value::Null) => {
157 values.push([0u8; 16]);
158 Self::push_valid(valid, false);
159 }
160 (Self::String { offsets, valid, .. }, Value::Null) => {
161 offsets.push(*offsets.last().unwrap_or(&0));
162 Self::push_valid(valid, false);
163 }
164 (Self::Bytes { offsets, valid, .. }, Value::Null) => {
165 offsets.push(*offsets.last().unwrap_or(&0));
166 Self::push_valid(valid, false);
167 }
168 (Self::Geometry { offsets, valid, .. }, Value::Null) => {
169 offsets.push(*offsets.last().unwrap_or(&0));
170 Self::push_valid(valid, false);
171 }
172 (Self::Vector { data, dim, valid }, Value::Null) => {
173 data.extend(std::iter::repeat_n(0.0f32, *dim as usize));
174 Self::push_valid(valid, false);
175 }
176 (Self::Int64 { values, valid }, Value::Integer(v)) => {
177 values.push(*v);
178 Self::push_valid(valid, true);
179 }
180 (Self::Float64 { values, valid }, Value::Float(v)) => {
181 values.push(*v);
182 Self::push_valid(valid, true);
183 }
184 (Self::Float64 { values, valid }, Value::Integer(v)) => {
185 values.push(*v as f64);
186 Self::push_valid(valid, true);
187 }
188 (Self::Bool { values, valid }, Value::Bool(v)) => {
189 values.push(*v);
190 Self::push_valid(valid, true);
191 }

Callers 1

push_validMethod · 0.45

Calls 12

to_stringMethod · 0.80
lastMethod · 0.45
extendMethod · 0.45
serializeMethod · 0.45
as_bytesMethod · 0.45
lenMethod · 0.45
takeMethod · 0.45
iterMethod · 0.45
getMethod · 0.45
as_strMethod · 0.45
cloneMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected