Enum mz_repr::row::encode::DatumColumnEncoder
source · enum DatumColumnEncoder {
Show 29 variants
Bool(BooleanBuilder),
U8(UInt8Builder),
U16(UInt16Builder),
U32(UInt32Builder),
U64(UInt64Builder),
I16(Int16Builder),
I32(Int32Builder),
I64(Int64Builder),
F32(Float32Builder),
F64(Float64Builder),
Numeric {
binary_values: BinaryBuilder,
approx_values: Float64Builder,
numeric_context: Context<Numeric>,
},
Bytes(BinaryBuilder),
String(StringBuilder),
Date(Int32Builder),
Time(FixedSizeBinaryBuilder),
Timestamp(FixedSizeBinaryBuilder),
TimestampTz(FixedSizeBinaryBuilder),
MzTimestamp(UInt64Builder),
Interval(FixedSizeBinaryBuilder),
Uuid(FixedSizeBinaryBuilder),
AclItem(FixedSizeBinaryBuilder),
MzAclItem(BinaryBuilder),
Range(BinaryBuilder),
Jsonb {
offsets: Vec<i32>,
buf: Vec<u8>,
nulls: Option<BooleanBufferBuilder>,
},
Array {
dims: ListBuilder<FixedSizeBinaryBuilder>,
val_lengths: Vec<usize>,
vals: Box<DatumColumnEncoder>,
nulls: Option<BooleanBufferBuilder>,
},
List {
lengths: Vec<usize>,
values: Box<DatumColumnEncoder>,
nulls: Option<BooleanBufferBuilder>,
},
Map {
lengths: Vec<usize>,
keys: StringBuilder,
vals: Box<DatumColumnEncoder>,
nulls: Option<BooleanBufferBuilder>,
},
Record {
fields: Vec<DatumEncoder>,
nulls: Option<BooleanBufferBuilder>,
length: usize,
},
RecordEmpty(BooleanBuilder),
}
Expand description
An encoder for a single column of Datum
s. To encode an entire row see
RowColumnarEncoder
.
Note: We specifically structure the encoder as an enum instead of using trait objects because Datum encoding is an extremely hot path and downcasting objects is relatively slow.
Variants§
Bool(BooleanBuilder)
U8(UInt8Builder)
U16(UInt16Builder)
U32(UInt32Builder)
U64(UInt64Builder)
I16(Int16Builder)
I32(Int32Builder)
I64(Int64Builder)
F32(Float32Builder)
F64(Float64Builder)
Numeric
Fields
binary_values: BinaryBuilder
The raw bytes so we can losslessly roundtrip Numerics.
approx_values: Float64Builder
Also maintain a float64 approximation for sorting.
Bytes(BinaryBuilder)
String(StringBuilder)
Date(Int32Builder)
Time(FixedSizeBinaryBuilder)
Timestamp(FixedSizeBinaryBuilder)
TimestampTz(FixedSizeBinaryBuilder)
MzTimestamp(UInt64Builder)
Interval(FixedSizeBinaryBuilder)
Uuid(FixedSizeBinaryBuilder)
AclItem(FixedSizeBinaryBuilder)
MzAclItem(BinaryBuilder)
Range(BinaryBuilder)
Jsonb
Hand rolled “StringBuilder” that reduces the number of copies required to serialize JSON.
An alternative would be to use StringBuilder
but that requires
serializing to an intermediary string, and then copying that
intermediary string into an underlying buffer.
Fields
nulls: Option<BooleanBufferBuilder>
Null entries, if any.
Array
Fields
dims: ListBuilder<FixedSizeBinaryBuilder>
Binary encoded ArrayDimension
s.
vals: Box<DatumColumnEncoder>
Contiguous array of underlying data.
nulls: Option<BooleanBufferBuilder>
Null entires, if any.
List
Fields
values: Box<DatumColumnEncoder>
Contiguous array of underlying data.
nulls: Option<BooleanBufferBuilder>
Null entires, if any.
Map
Fields
keys: StringBuilder
Contiguous array of key data.
vals: Box<DatumColumnEncoder>
Contiguous array of val data.
nulls: Option<BooleanBufferBuilder>
Null entires, if any.
Record
Fields
fields: Vec<DatumEncoder>
Columns in the record.
nulls: Option<BooleanBufferBuilder>
Null entries, if any.
RecordEmpty(BooleanBuilder)
Special encoder for a ScalarType::Record
that has no inner fields.
We have a special case for this scenario because Arrow does not allow a
StructArray
(what normally use to encod a Record
) with no fields.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DatumColumnEncoder
impl RefUnwindSafe for DatumColumnEncoder
impl Send for DatumColumnEncoder
impl Sync for DatumColumnEncoder
impl Unpin for DatumColumnEncoder
impl UnwindSafe for DatumColumnEncoder
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
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign
, for types that do not implement AddAssign
.