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

Method push_ref

nodedb-columnar/src/memtable/column_data/mutation_ingest.rs:12–119  ·  view source on GitHub ↗

Append a borrowed value (zero-copy for strings). Used by `ingest_row_refs`.

(
        &mut self,
        value: &IngestValue<'_>,
        col_name: &str,
    )

Source from the content-addressed store, hash-verified

10impl ColumnData {
11 /// Append a borrowed value (zero-copy for strings). Used by `ingest_row_refs`.
12 pub(crate) fn push_ref(
13 &mut self,
14 value: &IngestValue<'_>,
15 col_name: &str,
16 ) -> Result<(), ColumnarError> {
17 match (self, value) {
18 (Self::Int64 { values, valid }, IngestValue::Null) => {
19 values.push(0);
20 Self::push_valid(valid, false);
21 }
22 (Self::Float64 { values, valid }, IngestValue::Null) => {
23 values.push(0.0);
24 Self::push_valid(valid, false);
25 }
26 (Self::Bool { values, valid }, IngestValue::Null) => {
27 values.push(false);
28 Self::push_valid(valid, false);
29 }
30 (Self::Timestamp { values, valid }, IngestValue::Null) => {
31 values.push(0);
32 Self::push_valid(valid, false);
33 }
34 (Self::String { offsets, valid, .. }, IngestValue::Null) => {
35 offsets.push(*offsets.last().unwrap_or(&0));
36 Self::push_valid(valid, false);
37 }
38 (Self::DictEncoded { ids, valid, .. }, IngestValue::Null) => {
39 ids.push(0);
40 Self::push_valid(valid, false);
41 }
42 (Self::Int64 { values, valid }, IngestValue::Int64(v)) => {
43 values.push(*v);
44 Self::push_valid(valid, true);
45 }
46 (Self::Float64 { values, valid }, IngestValue::Float64(v)) => {
47 values.push(*v);
48 Self::push_valid(valid, true);
49 }
50 (Self::Float64 { values, valid }, IngestValue::Int64(v)) => {
51 values.push(*v as f64);
52 Self::push_valid(valid, true);
53 }
54 (Self::Bool { values, valid }, IngestValue::Bool(v)) => {
55 values.push(*v);
56 Self::push_valid(valid, true);
57 }
58 (Self::Timestamp { values, valid }, IngestValue::Timestamp(v)) => {
59 values.push(*v);
60 Self::push_valid(valid, true);
61 }
62 (Self::Timestamp { values, valid }, IngestValue::Int64(v)) => {
63 values.push(*v);
64 Self::push_valid(valid, true);
65 }
66 (
67 Self::String {
68 data,
69 offsets,

Callers

nothing calls this directly

Calls 7

to_stringMethod · 0.80
pushMethod · 0.45
lastMethod · 0.45
as_bytesMethod · 0.45
lenMethod · 0.45
getMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected