pub mod chunk;
pub mod chunk_encoding;
pub mod chunk_residency;
#[allow(clippy::module_inception)]
pub mod column;
pub mod column_eviction;
pub mod column_store;
pub mod encoding;
pub mod fixed_width;
pub mod mvcc;
pub mod overflow;
pub mod page_io;
pub mod variable_width;
pub mod zone_map;
pub use chunk::{ChunkFlushView, ColumnChunk};
pub use column::{
BufferLedger, Column, ColumnStorage, EVICTION_SEGMENT_BYTES, MAX_BACKGROUND_LOAD_CHUNKS,
};
pub use column_store::ColumnStore;
pub use fixed_width::{element_size, FIXED_STRING_INLINE_LIMIT, VECTOR_DENSE_FIXED_MAX_DIM};
pub use zone_map::{
compare_values, complex_key_fp, complex_leaf_range, complex_len, ZONE_MAP_CHUNK_ROWS,
};
use linkrs_core::DataType;
pub fn is_variable_length_type(data_type: &DataType) -> bool {
if let DataType::FixedString(n) = data_type {
return *n == 0 || *n > FIXED_STRING_INLINE_LIMIT;
}
if let DataType::VectorDense(dim) = data_type {
return *dim == 0 || *dim > VECTOR_DENSE_FIXED_MAX_DIM;
}
!matches!(
data_type,
DataType::Bool
| DataType::SmallInt
| DataType::Int
| DataType::BigInt
| DataType::Float
| DataType::Double
| DataType::Date
| DataType::Time
| DataType::DateTime
| DataType::Uuid
)
}
pub(crate) use column_store::{ensure_bitmap_len, value_payload_bytes};
#[cfg(test)]
mod tests;