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

Method push

nodedb-columnar/src/memtable/column_data/push.rs:97–357  ·  view source on GitHub ↗

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

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

Source from the content-addressed store, hash-verified

95
96 /// Append a value. Returns error if type doesn't match.
97 pub(crate) fn push(
98 &mut self,
99 value: &Value,
100 col_name: &str,
101 col_type: &ColumnType,
102 ) -> Result<(), ColumnarError> {
103 match (self, value) {
104 (Self::Int64 { values, valid }, Value::Null) => {
105 values.push(0);
106 Self::push_valid(valid, false);
107 }
108 (Self::Float64 { values, valid }, Value::Null) => {
109 values.push(0.0);
110 Self::push_valid(valid, false);
111 }
112 (Self::Bool { values, valid }, Value::Null) => {
113 values.push(false);
114 Self::push_valid(valid, false);
115 }
116 (Self::Timestamp { values, valid }, Value::Null) => {
117 values.push(0);
118 Self::push_valid(valid, false);
119 }
120 (Self::Decimal { values, valid }, Value::Null) => {
121 values.push([0u8; 16]);
122 Self::push_valid(valid, false);
123 }
124 (Self::Uuid { values, valid }, Value::Null) => {
125 values.push([0u8; 16]);
126 Self::push_valid(valid, false);
127 }
128 (Self::String { offsets, valid, .. }, Value::Null) => {
129 offsets.push(*offsets.last().unwrap_or(&0));
130 Self::push_valid(valid, false);
131 }
132 (Self::Bytes { offsets, valid, .. }, Value::Null) => {
133 offsets.push(*offsets.last().unwrap_or(&0));
134 Self::push_valid(valid, false);
135 }
136 (Self::Geometry { offsets, valid, .. }, Value::Null) => {
137 offsets.push(*offsets.last().unwrap_or(&0));
138 Self::push_valid(valid, false);
139 }
140 (Self::Vector { data, dim, valid }, Value::Null) => {
141 data.extend(std::iter::repeat_n(0.0f32, *dim as usize));
142 Self::push_valid(valid, false);
143 }
144 (Self::Int64 { values, valid }, Value::Integer(v)) => {
145 values.push(*v);
146 Self::push_valid(valid, true);
147 }
148 (Self::Float64 { values, valid }, Value::Float(v)) => {
149 values.push(*v);
150 Self::push_valid(valid, true);
151 }
152 (Self::Float64 { values, valid }, Value::Integer(v)) => {
153 values.push(*v as f64);
154 Self::push_valid(valid, true);

Callers 15

make_dict_colFunction · 0.45
make_decoded_colFunction · 0.45
encode_row_for_walFunction · 0.45
decode_row_from_walFunction · 0.45
encode_composite_pkFunction · 0.45
append_null_fillFunction · 0.45
decode_blockFunction · 0.45
write_segmentMethod · 0.45
encode_column_blocksFunction · 0.45
encode_single_blockFunction · 0.45
append_rowMethod · 0.45
get_rowMethod · 0.45

Calls 14

parse_range_literalFunction · 0.85
encode_as_msgpackFunction · 0.85
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

Tested by

no test coverage detected