reifydb_core/value/column/
compressed.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4#[derive(Clone, Debug, PartialEq)]
5pub enum CompressionType {
6	None,
7	Dictionary,
8	Delta,
9	RunLength,
10	BitPacking,
11}
12
13#[derive(Clone, Debug)]
14pub struct CompressedColumn {
15	pub data: Vec<u8>,
16	pub compression: CompressionType,
17	pub uncompressed_size: usize,
18	pub undefined_count: usize,
19	pub row_count: usize,
20}
21
22impl CompressedColumn {
23	pub fn compression_ratio(&self) -> f64 {
24		if self.uncompressed_size == 0 {
25			1.0
26		} else {
27			self.data.len() as f64 / self.uncompressed_size as f64
28		}
29	}
30}