pub enum ColumnArray {
Int64(Arc<Vec<i64>>, Option<Arc<Vec<bool>>>),
Int32(Arc<Vec<i32>>, Option<Arc<Vec<bool>>>),
Float64(Arc<Vec<f64>>, Option<Arc<Vec<bool>>>),
Float32(Arc<Vec<f32>>, Option<Arc<Vec<bool>>>),
String(Arc<Vec<Arc<str>>>, Option<Arc<Vec<bool>>>),
FixedString(Arc<Vec<Arc<str>>>, Option<Arc<Vec<bool>>>),
Date(Arc<Vec<i32>>, Option<Arc<Vec<bool>>>),
Timestamp(Arc<Vec<i64>>, Option<Arc<Vec<bool>>>),
Boolean(Arc<Vec<u8>>, Option<Arc<Vec<bool>>>),
Mixed(Arc<Vec<SqlValue>>),
}Expand description
Type-specialized column storage
Each variant stores values in a native array for maximum SIMD efficiency. NULL values are tracked separately in a boolean bitmap.
§Zero-Copy Design
All column data is wrapped in Arc<Vec<T>>, enabling:
- Zero-copy sharing with storage layer
- O(1) clone operations for query execution
- Direct SIMD access via
as_slice()on Arc contents
Variants§
Int64(Arc<Vec<i64>>, Option<Arc<Vec<bool>>>)
64-bit integers (INT, BIGINT)
Int32(Arc<Vec<i32>>, Option<Arc<Vec<bool>>>)
32-bit integers (INT, SMALLINT)
Float64(Arc<Vec<f64>>, Option<Arc<Vec<bool>>>)
64-bit floats (DOUBLE PRECISION, FLOAT)
Float32(Arc<Vec<f32>>, Option<Arc<Vec<bool>>>)
32-bit floats (REAL)
String(Arc<Vec<Arc<str>>>, Option<Arc<Vec<bool>>>)
Variable-length strings (VARCHAR, TEXT)
FixedString(Arc<Vec<Arc<str>>>, Option<Arc<Vec<bool>>>)
Fixed-length strings (CHAR)
Date(Arc<Vec<i32>>, Option<Arc<Vec<bool>>>)
Dates (stored as i32 days since epoch)
Timestamp(Arc<Vec<i64>>, Option<Arc<Vec<bool>>>)
Timestamps (stored as i64 microseconds since epoch)
Boolean(Arc<Vec<u8>>, Option<Arc<Vec<bool>>>)
Booleans (stored as bytes for SIMD compatibility)
Mixed(Arc<Vec<SqlValue>>)
Mixed-type column (fallback for complex types)
Implementations§
Trait Implementations§
Source§impl Clone for ColumnArray
impl Clone for ColumnArray
Source§fn clone(&self) -> ColumnArray
fn clone(&self) -> ColumnArray
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ColumnArray
impl RefUnwindSafe for ColumnArray
impl Send for ColumnArray
impl Sync for ColumnArray
impl Unpin for ColumnArray
impl UnwindSafe for ColumnArray
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more