Skip to main content

DataType

Enum DataType 

Source
pub enum DataType {
Show 16 variants SmallInt, Int, BigInt, Float, Text, Varchar(u32), Char(u32), Bool, Vector { dim: u32, encoding: VecEncoding, }, Numeric { precision: u8, scale: u8, }, Date, Timestamp, Timestamptz, Interval, Json, Jsonb,
}
Expand description

Runtime type tags. Vector { dim, encoding } / Varchar(max) / Char(size) are parameterised; the parameter travels with both the column schema and the on-wire serialised representation.

Variants§

§

SmallInt

16-bit signed. Backed by Value::SmallInt(i16); arithmetic that would overflow surfaces as a type error at INSERT time.

§

Int

§

BigInt

§

Float

§

Text

§

Varchar(u32)

VARCHAR(n) — same byte representation as Text, but INSERT rejects values longer than n Unicode characters.

§

Char(u32)

CHAR(n) — same representation as Text, but INSERT right-pads with U+0020 to exactly n Unicode characters (or rejects when the input is already longer).

§

Bool

§

Vector

pgvector-style fixed-dimension vector. encoding selects the in-cell representation (F32 = pre-v6 raw f32 buffer; Sq8 = v6.0.1 8-bit scalar-quantised). The DDL grammar surfaces encoding via the optional USING <encoding> clause: VECTOR(128) USING SQ8.

Fields

§dim: u32
§encoding: VecEncoding
§

Numeric

NUMERIC(precision, scale) — exact fixed-point decimal stored as a scaled i128. precision caps total decimal digits, scale fixes digits after the decimal point. v1.12 supports up to precision 38 (the i128-safe ceiling). NUMERIC and NUMERIC(p) surface as Numeric { precision: p, scale: 0 }.

Fields

§precision: u8
§scale: u8
§

Date

DATE — calendar date with day precision, stored as i32 days since the Unix epoch (1970-01-01).

§

Timestamp

TIMESTAMP (a.k.a. MySQL DATETIME) — instant with microsecond precision, stored as i64 microseconds since the Unix epoch.

§

Timestamptz

v7.9.2 TIMESTAMPTZ — bit-identical to Timestamp on disk (i64 microseconds, UTC by convention). Carried as a distinct type tag so the PG-wire layer can advertise OID 1184 (PG’s timestamp with time zone) and sqlx/pgx/JDBC clients decode into their TZ-aware datetime types. The internal semantics are unchanged: SPG never stored per-row offsets, and neither did PG — TIMESTAMPTZ in PG is also UTC i64.

§

Interval

INTERVAL — calendar-aware span (months + microseconds). v2.11 supports INTERVAL only as a runtime intermediate (literals, arithmetic results); on-disk encoding is rejected so this branch can’t appear in a ColumnSchema.

§

Json

v4.9: JSON — text-backed JSON document. We don’t parse the content (no path operators or jsonb functions yet) — the column accepts any TEXT-compatible value and round-trips it verbatim. PG OID 114 on the wire.

§

Jsonb

v7.9.0: JSONB — semantically identical to Json on the storage side (same Value::Json cells, same row codec), but advertised as PG OID 3802 on the wire so sqlx-style clients that bind jsonb columns decode correctly. mailrs migration blocker #3.

Trait Implementations§

Source§

impl Clone for DataType

Source§

fn clone(&self) -> DataType

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for DataType

Source§

impl Debug for DataType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for DataType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for DataType

Source§

impl PartialEq for DataType

Source§

fn eq(&self, other: &DataType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for DataType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.