Skip to main content

DataTypeNode

Enum DataTypeNode 

Source
#[non_exhaustive]
pub enum DataTypeNode {
Show 47 variants Bool, UInt8, UInt16, UInt32, UInt64, UInt128, UInt256, Int8, Int16, Int32, Int64, Int128, Int256, Float32, Float64, BFloat16, Decimal(u8, u8, DecimalType), String, FixedString(usize), UUID, Date, Date32, DateTime(Option<String>), DateTime64(DateTimePrecision, Option<String>), Time, Time64(DateTimePrecision), Interval(IntervalType), IPv4, IPv6, Nullable(Box<DataTypeNode>), LowCardinality(Box<DataTypeNode>), Array(Box<DataTypeNode>), Tuple(Vec<DataTypeNode>), Enum(EnumType, HashMap<i16, String>), Map([Box<DataTypeNode>; 2]), AggregateFunction(String, Vec<DataTypeNode>), SimpleAggregateFunction(String, Box<DataTypeNode>), Variant(Vec<DataTypeNode>), Dynamic, JSON, JsonWithHint(Vec<(String, Box<DataTypeNode>)>), Point, Ring, LineString, MultiLineString, Polygon, MultiPolygon,
}
Expand description

Represents a data type in ClickHouse. See https://clickhouse.com/docs/sql-reference/data-types

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Bool

§

UInt8

§

UInt16

§

UInt32

§

UInt64

§

UInt128

§

UInt256

§

Int8

§

Int16

§

Int32

§

Int64

§

Int128

§

Int256

§

Float32

§

Float64

§

BFloat16

§

Decimal(u8, u8, DecimalType)

Scale, Precision, 32 | 64 | 128 | 256

§

String

§

FixedString(usize)

§

UUID

§

Date

§

Date32

§

DateTime(Option<String>)

Optional timezone

§

DateTime64(DateTimePrecision, Option<String>)

Precision and optional timezone

§

Time

Time-of-day, no timezone (timezone is ignored in value operations)

§

Time64(DateTimePrecision)

Precision and optional timezone (timezone is ignored in value operations)

§

Interval(IntervalType)

§

IPv4

§

IPv6

§

Nullable(Box<DataTypeNode>)

§

LowCardinality(Box<DataTypeNode>)

§

Array(Box<DataTypeNode>)

§

Tuple(Vec<DataTypeNode>)

§

Enum(EnumType, HashMap<i16, String>)

§

Map([Box<DataTypeNode>; 2])

Key-Value pairs are defined as an array, so it can be used as a slice

§

AggregateFunction(String, Vec<DataTypeNode>)

Function name and its arguments

§

SimpleAggregateFunction(String, Box<DataTypeNode>)

Function name and the inner type. The wire format is identical to the inner type; the function name is metadata for the MergeTree engine, not the client protocol.

§

Variant(Vec<DataTypeNode>)

Contains all possible types for this variant

§

Dynamic

§

JSON

§

JsonWithHint(Vec<(String, Box<DataTypeNode>)>)

§

Point

§

Ring

§

LineString

§

MultiLineString

§

Polygon

§

MultiPolygon

Implementations§

Source§

impl DataTypeNode

Source

pub fn new(name: &str) -> Result<DataTypeNode, TypesError>

Parses a data type from a string that is received in the RowBinaryWithNamesAndTypes and Native formats headers. See also: https://clickhouse.com/docs/interfaces/formats/RowBinaryWithNamesAndTypes#description

Source

pub fn remove_low_cardinality(&self) -> &DataTypeNode

LowCardinality(T) -> T

Source

pub fn remove_simple_aggregate_function(&self) -> &DataTypeNode

SimpleAggregateFunction(fn, T) -> T

The wire format of a SimpleAggregateFunction column is identical to its inner type. This method strips the wrapper so that (de)serialization validation can treat it as the inner type.

Source

pub fn remove_compatible_wrappers(&self) -> &DataTypeNode

Remove wrapper types that are semantically identical from a data consumer’s perspective.

N.B. Nullable is not a valid lift here as nullable column data is not compatible with a non-nullable Rust type and vice versa (e.g. Nullable(UInt64) is not strictly compatible with u64).

Current types covered:

  • LowCardinality
  • SimpleAggregateFunction
Source

pub fn as_str(&self) -> Option<&'static str>

If self has a static string representation (e.g. "UInt8"), return it.

Returns None for polymorphic types (e.g. Array(T) or Decimal(P, S)).

Source

pub fn to_str(&self) -> Cow<'static, str>

Return the string representation for this type, without allocating if possible.

Trait Implementations§

Source§

impl Clone for DataTypeNode

Source§

fn clone(&self) -> DataTypeNode

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 Debug for DataTypeNode

Source§

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

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

impl Display for DataTypeNode

Source§

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

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

impl PartialEq for DataTypeNode

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for DataTypeNode

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<U> As for U

Source§

fn as_<T>(self) -> T
where T: CastFrom<U>, U: Sized,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more