Struct mz_repr::adt::date::Date

source ·
pub struct Date { /* private fields */ }
Expand description

A Postgres-compatible Date. Additionally clamp valid dates for the range that chrono supports to allow for safe string operations. Infinite dates are not yet supported.

Implementations§

source§

impl Date

source

pub const UNIX_EPOCH_TO_PG_EPOCH: i32 = 10_957i32

source

pub const LOW_DAYS: i32 = -2_451_545i32

source

pub const HIGH_DAYS: i32 = 95_015_279i32

Largest date support by Materialize. Although Postgres can go up to 5874897-12-31, chrono is limited to December 31, 262142, which we mirror here so we can use chrono’s formatting methods and have guaranteed safe conversions.

source

pub fn from_pg_epoch(days: i32) -> Result<Date, DateError>

Constructs a new Date as the days since the postgres epoch (2000-01-01).

source

pub fn from_unix_epoch(unix_days: i32) -> Result<Date, DateError>

Constructs a new Date as the days since the Unix epoch.

source

pub fn pg_epoch_days(&self) -> i32

Returns the number of days since the postgres epoch.

source

pub fn is_finite(&self) -> bool

Returns whether this is the infinity or -infinity date.

Currently we do not support these, so this function is a light protection against if they are added for functions that will produce incorrect results for these values.

source

pub fn unix_epoch_days(&self) -> i32

Returns the number of days since the Unix epoch.

source

pub fn checked_add(self, days: i32) -> Result<Date, DateError>

Returns this date with days added to it.

Trait Implementations§

source§

impl<'a> AsColumnType for Date

source§

fn as_column_type() -> ColumnType

The SQL column type of this Rust type
source§

impl Clone for Date

source§

fn clone(&self) -> Date

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl DatumToPersist for Date

§

type Data = i32

The persist columnar type we’re mapping to/from.
§

type Cfg = ()

Any information, in addition to the type of Self::Data, that is necessary to derive the columnar schema of this type. E.g. for ScalarType::Record, this will be the schema of the record.
source§

const CFG: Self::Cfg = ()

source§

const STATS_FN: StatsFn = StatsFn::Default

Which logic to use for computing aggregate stats.
source§

fn encode(col: &mut <Self::Data as Data>::Mut, datum: Datum<'_>)

Encodes and pushes the given Datum into the persist column. Read more
source§

fn decode(days: <Self::Data as Data>::Ref<'_>, row: &mut RowPacker<'_>)

Decodes the data with the given reference into a Datum. This Datum is returned by pushing it in to the given RowPacker.
source§

fn encode_default(col: &mut <Self::Data as Data>::Mut)

Pushes the default value for this type into the column. Read more
source§

impl<'a, E> DatumType<'a, E> for Date

source§

fn nullable() -> bool

Whether this Rust type can represent NULL values
source§

fn fallible() -> bool

Whether this Rust type can represent errors
source§

fn try_from_result( res: Result<Datum<'a>, E> ) -> Result<Self, Result<Datum<'a>, E>>

Try to convert a Result whose Ok variant is a Datum into this native Rust type (Self). If it fails the error variant will contain the original result.
source§

fn into_result(self, _temp_storage: &'a RowArena) -> Result<Datum<'a>, E>

Convert this Rust type into a Result containing a Datum, or an error
source§

impl Debug for Date

source§

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

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

impl<'de> Deserialize<'de> for Date

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Date

Format an Date in a human form

source§

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

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

impl From<&Date> for NaiveDate

source§

fn from(date: &Date) -> Self

Converts to this type from the input type.
source§

impl<'a> From<Date> for Datum<'a>

source§

fn from(d: Date) -> Datum<'a>

Converts to this type from the input type.
source§

impl From<Date> for NaiveDate

source§

fn from(date: Date) -> Self

Converts to this type from the input type.
source§

impl FromStr for Date

§

type Err = Error

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Date

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Date

source§

fn cmp(&self, other: &Date) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Date

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Date

source§

fn partial_cmp(&self, other: &Date) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<'a> RangeOps<'a> for Date

source§

fn step(self) -> Option<Date>

Increment self one step forward, if applicable. Return None if overflows.
source§

fn err_type_name() -> &'static str

source§

fn unwrap_datum(d: Datum<'a>) -> Self

source§

impl RustType<ProtoDate> for Date

source§

fn into_proto(&self) -> ProtoDate

Convert a Self into a Proto value.
source§

fn from_proto(proto: ProtoDate) -> Result<Self, TryFromProtoError>

Consume and convert a Proto back into a Self value. Read more
source§

impl Serialize for Date

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for Date

§

type Output = i32

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl TryFrom<Datum<'_>> for Date

§

type Error = ()

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

fn try_from(from: Datum<'_>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<NaiveDate> for Date

§

type Error = DateError

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

fn try_from(value: NaiveDate) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Copy for Date

source§

impl Eq for Date

source§

impl StructuralPartialEq for Date

Auto Trait Implementations§

§

impl Freeze for Date

§

impl RefUnwindSafe for Date

§

impl Send for Date

§

impl Sync for Date

§

impl Unpin for Date

§

impl UnwindSafe for Date

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, U> CastInto<U> for T
where U: CastFrom<T>,

source§

fn cast_into(self) -> U

Performs the cast.
source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
source§

impl<R, O, T> CopyOnto<ConsecutiveOffsetPairs<R, O>> for T
where R: Region<Index = (usize, usize)>, O: OffsetContainer<usize>, T: CopyOnto<R>,

source§

fn copy_onto( self, target: &mut ConsecutiveOffsetPairs<R, O> ) -> <ConsecutiveOffsetPairs<R, O> as Region>::Index

Copy self into the target container, returning an index that allows to look up the corresponding read item.
source§

impl<T> CopyOnto<MirrorRegion<T>> for T
where T: Index,

source§

fn copy_onto(self, _target: &mut MirrorRegion<T>) -> T

Copy self into the target container, returning an index that allows to look up the corresponding read item.
source§

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

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> Hashable for T
where T: Hash,

§

type Output = u64

The type of the output value.
source§

fn hashed(&self) -> u64

A well-distributed integer derived from the data.
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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T, U> OverrideFrom<Option<&T>> for U
where U: OverrideFrom<T>,

source§

fn override_from(self, layer: &Option<&T>) -> U

Override the configuration represented by Self with values from the given layer.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> PreferredContainer for T
where T: Ord + Clone + 'static,

§

type Container = Vec<T>

The preferred container for the type.
source§

impl<T> ProgressEventTimestamp for T
where T: Data + Debug + Any,

source§

fn as_any(&self) -> &(dyn Any + 'static)

Upcasts this ProgressEventTimestamp to Any. Read more
source§

fn type_name(&self) -> &'static str

Returns the name of the concrete type of this object. Read more
source§

impl<P, R> ProtoType<R> for P
where R: RustType<P>,

source§

impl<R, T> PushInto<FlatStack<R>> for T
where R: Region + Clone + 'static, T: CopyOnto<R>,

source§

fn push_into(self, target: &mut FlatStack<R>)

Push self into the target container.
source§

impl<T> PushInto<Vec<T>> for T

source§

fn push_into(self, target: &mut Vec<T>)

Push self into the target container.
source§

impl<T> ReserveItems<MirrorRegion<T>> for T
where T: Index,

source§

fn reserve_items<I>(_target: &mut MirrorRegion<T>, _items: I)
where I: Iterator<Item = T> + Clone,

Ensure that the region can absorb items without reallocation.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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§

default 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>,

§

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>,

§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

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
source§

impl<T> Data for T
where T: Clone + 'static,

source§

impl<T> Data for T
where T: Send + Sync + Any + Serialize + for<'a> Deserialize<'a> + 'static,

source§

impl<T> Data for T
where T: Data + Ord + Debug,

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> ExchangeData for T
where T: Data + Data,

source§

impl<T> ExchangeData for T
where T: ExchangeData + Ord + Debug,

source§

impl<T> Index for T
where T: Copy + Serialize + for<'a> Deserialize<'a>,

source§

impl<T> Sequence for T
where T: Eq + Hash,