#[repr(u8)]pub enum EncodingType {
Show 25 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,
}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.
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