#[repr(u8)]pub enum EncodingType {
Show 26 variants
DeltaOfDelta = 0,
Chimp = 1,
Gorilla = 2,
IntegerI64 = 3,
IntegerU64 = 4,
Dictionary = 5,
Bitmap = 6,
PlainF64 = 7,
PlainI64 = 8,
PlainU64 = 9,
PlainBool = 10,
PlainString = 11,
Nullable = 12,
Rle = 13,
VarintI64 = 14,
VarintU64 = 15,
Chimp128 = 16,
ForI64 = 17,
ForU64 = 18,
Patas = 19,
Alp = 20,
Pco = 21,
PcoI64 = 22,
PcoU64 = 23,
DecimalI128 = 24,
Bytes = 25,
}Expand description
Discriminant tag stored as the first byte of every EncodedBlock.
Variants§
DeltaOfDelta = 0
Delta-of-delta for timestamps.
Kept as a selectable codec — it still wins on a perfect metronome —
but no longer the default: see ColumnEncoder::encode_timestamps.
Chimp = 1
Chimp XOR for floats.
Gorilla = 2
Gorilla XOR for floats.
IntegerI64 = 3
Delta + ZigZag for i64.
IntegerU64 = 4
Delta + ZigZag for u64.
Dictionary = 5
Dictionary encoding for strings.
Bitmap = 6
Bitmap for booleans.
PlainF64 = 7
Plain f64.
PlainI64 = 8
Plain i64.
PlainU64 = 9
Plain u64.
PlainBool = 10
Plain bool.
PlainString = 11
Plain string.
Nullable = 12
Nullable wrapper — validity bitmap + inner encoded payload.
Payload format:
[inner_encoding: u8][total_count: u32 LE][validity_bitmap: ceil(count/8) bytes][inner_payload…]Bit 1 in the validity bitmap means the value is present; 0 means null.
Only non-null values are encoded in inner_payload.
Rle = 13
Run-length encoding for columns with repeated consecutive values.
VarintI64 = 14
Delta + ZigZag + LEB128 varint for i64.
Better than IntegerI64 for sparse or highly
variable data where most deltas are small but occasional outliers
would inflate the fixed bit width.
VarintU64 = 15
Delta + ZigZag + LEB128 varint for u64.
Chimp128 = 16
Chimp128 ring-buffer XOR for floats.
ForI64 = 17
Frame-of-Reference for narrow-range integers.
ForU64 = 18
Frame-of-Reference for narrow-range unsigned integers.
Patas = 19
Patas byte-aligned XOR for floats (VLDB 2023).
Alp = 20
ALP adaptive lossless floating-point compression (SIGMOD 2024).
A second opinion behind Pco for f64 columns whose
values originated as decimals — which most sensor, meter and price
data does. See crate::alp.
Pco = 21
Pcodec for floats (Loncaric 2025): mode recovery, delta, binned ANS.
Leads every float candidate list — see crate::pco.
PcoI64 = 22
Pcodec for signed integers, and the default timestamp codec.
PcoU64 = 23
Pcodec for unsigned integers.
DecimalI128 = 24
Exact decimal mantissas (i128) — see crate::decimal.
Not a codec of its own so much as a shape: the narrow form, which is
nearly every real decimal column, delegates straight to the i64
stack above and therefore inherits RLE, FOR, varint and pco.
Bytes = 25
Opaque byte strings — a count, then a length and payload per value.
For columns whose values are composite objects rather than numbers: today, native histograms. There is deliberately no clever codec here. A histogram’s own encoding already packs it, and a second-guessing layer over an opaque blob would compress nothing while adding a decoder to audit — so this is a framing, and the general-purpose block compression underneath the segment does the rest.
Implementations§
Source§impl EncodingType
impl EncodingType
Sourcepub const ALL: &'static [Self]
pub const ALL: &'static [Self]
Every encoding type, in tag order.
Complete by construction — generated from the same list as the enum itself, so a codec cannot be added without appearing here, and therefore in the fuzz corpus.
Trait Implementations§
Source§impl Clone for EncodingType
impl Clone for EncodingType
Source§fn clone(&self) -> EncodingType
fn clone(&self) -> EncodingType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more