#[non_exhaustive]pub enum ColumnType {
}Expand description
Typed column definition for strict document and columnar collections.
#[non_exhaustive] — this enum grows with each type system expansion
(e.g. future variants may add Decimal { precision, scale } or split
Timestamp/TimestampTz). External exhaustive match arms must handle
future variants via a typed error arm rather than _ => unreachable!().
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Int64
Float64
String
Bool
Bytes
Timestamp
Naive (no-timezone) timestamp with microsecond precision. OID 1114.
Timestamptz
UTC (timezone-aware) timestamp with microsecond precision. OID 1184.
SystemTimestamp
System-assigned timestamp (bitemporal system_from_ms). Same 8-byte
layout as Timestamp, but tagged distinctly so the planner and DDL
layer can reject user-supplied values — the column is populated by the
engine from HLC at commit.
Decimal
Arbitrary-precision decimal with explicit precision and scale.
precision: total significant digits, 1–38. scale: digits after the
decimal point, 0–precision. Default when unspecified: {38, 10}.
Geometry
Vector(u32)
Fixed-dimension float32 vector.
Uuid
Json
Arbitrary nested data stored as inline MessagePack. Variable-length. Accepts any Value type.
Ulid
ULID: 16-byte Crockford Base32-encoded sortable ID.
Duration
Duration: signed microsecond precision (i64 internally).
Array
Ordered array of values. Variable-length, inline MessagePack.
Set
Ordered set (auto-deduplicated). Variable-length, inline MessagePack.
Regex
Compiled regex pattern. Stored as string internally.
Range
Bounded range of values. Variable-length, inline MessagePack.
Record
Typed reference to another record (table:id). Variable-length, inline MessagePack.
Implementations§
Source§impl ColumnType
impl ColumnType
Sourcepub fn fixed_size(&self) -> Option<usize>
pub fn fixed_size(&self) -> Option<usize>
Whether this type has a fixed byte size in Binary Tuple layout.
Sourcepub fn is_variable_length(&self) -> bool
pub fn is_variable_length(&self) -> bool
Whether this type is variable-length (requires offset table entry).
Sourcepub fn to_pg_oid(&self) -> u32
pub fn to_pg_oid(&self) -> u32
Return the canonical PostgreSQL type OID for this column type.
This is the single authoritative mapping between NodeDB ColumnType
variants and PostgreSQL wire-protocol OIDs. All pgwire code must derive
OIDs from this method — no local string-matching tables.
Choices for non-native types:
Geometry→25(TEXT): no standard pg geometry OID; PostGIS uses its own extension OID which we cannot claim. TEXT lets clients at least see the WKT/WKB string.Vector(_)→1021(FLOAT4_ARRAY): closest built-in pg type for a fixed-dimension float32 vector; pgvector uses a custom OID, which we avoid to stay dependency-free.Array,Set,Range,Record,Regex→114(JSON): these are variable-length MessagePack-encoded structures; JSON is the safest generic text OID for clients that need to read the value as a string.
Sourcepub fn accepts(&self, value: &Value) -> bool
pub fn accepts(&self, value: &Value) -> bool
Whether a Value is compatible with this column type.
Accepts both native Value types (e.g., Value::DateTime for Timestamp)
AND coercion sources from SQL input (e.g., Value::String for Timestamp).
Null is accepted for any type — nullability is enforced at schema level.
Trait Implementations§
Source§impl Clone for ColumnType
impl Clone for ColumnType
Source§fn clone(&self) -> ColumnType
fn clone(&self) -> ColumnType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ColumnType
impl Debug for ColumnType
Source§impl<'de> Deserialize<'de> for ColumnType
impl<'de> Deserialize<'de> for ColumnType
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for ColumnType
impl Display for ColumnType
Source§impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ColumnType
impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ColumnType
Source§impl FromStr for ColumnType
impl FromStr for ColumnType
Source§impl Hash for ColumnType
impl Hash for ColumnType
Source§impl PartialEq for ColumnType
impl PartialEq for ColumnType
Source§fn eq(&self, other: &ColumnType) -> bool
fn eq(&self, other: &ColumnType) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ColumnType
impl Serialize for ColumnType
Source§impl ToMessagePack for ColumnType
impl ToMessagePack for ColumnType
impl Copy for ColumnType
impl Eq for ColumnType
impl StructuralPartialEq for ColumnType
Auto Trait Implementations§
impl Freeze for ColumnType
impl RefUnwindSafe for ColumnType
impl Send for ColumnType
impl Sync for ColumnType
impl Unpin for ColumnType
impl UnsafeUnpin for ColumnType
impl UnwindSafe for ColumnType
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.