Append a borrowed value (zero-copy for strings). Used by `ingest_row_refs`.
(
&mut self,
value: &IngestValue<'_>,
col_name: &str,
)
| 10 | impl 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, |