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

Function decode_column

nodedb/src/engine/timeseries/columnar_segment/codec.rs:94–127  ·  view source on GitHub ↗

Decode a column file using the codec pipeline.

(
    data: &[u8],
    col_type: ColumnType,
    codec: ResolvedColumnCodec,
)

Source from the content-addressed store, hash-verified

92
93/// Decode a column file using the codec pipeline.
94pub(super) fn decode_column(
95 data: &[u8],
96 col_type: ColumnType,
97 codec: ResolvedColumnCodec,
98) -> Result<ColumnData, SegmentError> {
99 let map_err = |e: nodedb_codec::CodecError| SegmentError::Corrupt(format!("{codec}: {e}"));
100
101 match col_type {
102 ColumnType::Timestamp => {
103 let values = nodedb_codec::decode_i64_pipeline(data, codec.into_column_codec())
104 .map_err(map_err)?;
105 Ok(ColumnData::Timestamp(values))
106 }
107 ColumnType::Float64 => {
108 let values = nodedb_codec::decode_f64_pipeline(data, codec.into_column_codec())
109 .map_err(map_err)?;
110 Ok(ColumnData::Float64(values))
111 }
112 ColumnType::Int64 => {
113 let values = nodedb_codec::decode_i64_pipeline(data, codec.into_column_codec())
114 .map_err(map_err)?;
115 Ok(ColumnData::Int64(values))
116 }
117 ColumnType::Symbol => {
118 let raw = nodedb_codec::decode_bytes_pipeline(data, codec.into_column_codec())
119 .map_err(map_err)?;
120 let ids: Vec<u32> = raw
121 .chunks_exact(4)
122 .map(|c| u32::from_le_bytes([c[0], c[1], c[2], c[3]]))
123 .collect();
124 Ok(ColumnData::Symbol(ids))
125 }
126 }
127}

Callers 3

read_column_blocksMethod · 0.85

Calls 5

decode_i64_pipelineFunction · 0.85
decode_f64_pipelineFunction · 0.85
decode_bytes_pipelineFunction · 0.85
into_column_codecMethod · 0.80
collectMethod · 0.80

Tested by

no test coverage detected