Skip to main content

TypedFunction

Enum TypedFunction 

Source
pub enum TypedFunction {
Show 72 variants DateAdd { expr: Box<Expr>, interval: Box<Expr>, unit: Option<DateTimeField>, }, DateDiff { start: Box<Expr>, end: Box<Expr>, unit: Option<DateTimeField>, }, DateTrunc { unit: DateTimeField, expr: Box<Expr>, }, DateSub { expr: Box<Expr>, interval: Box<Expr>, unit: Option<DateTimeField>, }, CurrentDate, CurrentTimestamp, StrToTime { expr: Box<Expr>, format: Box<Expr>, }, TimeToStr { expr: Box<Expr>, format: Box<Expr>, }, TsOrDsToDate { expr: Box<Expr>, }, Year { expr: Box<Expr>, }, Month { expr: Box<Expr>, }, Day { expr: Box<Expr>, }, Trim { expr: Box<Expr>, trim_type: TrimType, trim_chars: Option<Box<Expr>>, }, Substring { expr: Box<Expr>, start: Box<Expr>, length: Option<Box<Expr>>, }, Upper { expr: Box<Expr>, }, Lower { expr: Box<Expr>, }, RegexpLike { expr: Box<Expr>, pattern: Box<Expr>, flags: Option<Box<Expr>>, }, RegexpExtract { expr: Box<Expr>, pattern: Box<Expr>, group_index: Option<Box<Expr>>, }, RegexpReplace { expr: Box<Expr>, pattern: Box<Expr>, replacement: Box<Expr>, flags: Option<Box<Expr>>, }, ConcatWs { separator: Box<Expr>, exprs: Vec<Expr>, }, Split { expr: Box<Expr>, delimiter: Box<Expr>, }, Initcap { expr: Box<Expr>, }, Length { expr: Box<Expr>, }, Replace { expr: Box<Expr>, from: Box<Expr>, to: Box<Expr>, }, Reverse { expr: Box<Expr>, }, Left { expr: Box<Expr>, n: Box<Expr>, }, Right { expr: Box<Expr>, n: Box<Expr>, }, Lpad { expr: Box<Expr>, length: Box<Expr>, pad: Option<Box<Expr>>, }, Rpad { expr: Box<Expr>, length: Box<Expr>, pad: Option<Box<Expr>>, }, Count { expr: Box<Expr>, distinct: bool, }, Sum { expr: Box<Expr>, distinct: bool, }, Avg { expr: Box<Expr>, distinct: bool, }, Min { expr: Box<Expr>, }, Max { expr: Box<Expr>, }, ArrayAgg { expr: Box<Expr>, distinct: bool, }, ApproxDistinct { expr: Box<Expr>, }, Variance { expr: Box<Expr>, }, Stddev { expr: Box<Expr>, }, ArrayConcat { arrays: Vec<Expr>, }, ArrayContains { array: Box<Expr>, element: Box<Expr>, }, ArraySize { expr: Box<Expr>, }, Explode { expr: Box<Expr>, }, GenerateSeries { start: Box<Expr>, stop: Box<Expr>, step: Option<Box<Expr>>, }, Flatten { expr: Box<Expr>, }, JSONExtract { expr: Box<Expr>, path: Box<Expr>, }, JSONExtractScalar { expr: Box<Expr>, path: Box<Expr>, }, ParseJSON { expr: Box<Expr>, }, JSONFormat { expr: Box<Expr>, }, RowNumber, Rank, DenseRank, NTile { n: Box<Expr>, }, Lead { expr: Box<Expr>, offset: Option<Box<Expr>>, default: Option<Box<Expr>>, }, Lag { expr: Box<Expr>, offset: Option<Box<Expr>>, default: Option<Box<Expr>>, }, FirstValue { expr: Box<Expr>, }, LastValue { expr: Box<Expr>, }, Abs { expr: Box<Expr>, }, Ceil { expr: Box<Expr>, }, Floor { expr: Box<Expr>, }, Round { expr: Box<Expr>, decimals: Option<Box<Expr>>, }, Log { expr: Box<Expr>, base: Option<Box<Expr>>, }, Ln { expr: Box<Expr>, }, Pow { base: Box<Expr>, exponent: Box<Expr>, }, Sqrt { expr: Box<Expr>, }, Greatest { exprs: Vec<Expr>, }, Least { exprs: Vec<Expr>, }, Mod { left: Box<Expr>, right: Box<Expr>, }, Hex { expr: Box<Expr>, }, Unhex { expr: Box<Expr>, }, Md5 { expr: Box<Expr>, }, Sha { expr: Box<Expr>, }, Sha2 { expr: Box<Expr>, bit_length: Box<Expr>, },
}
Expand description

Typed function variants enabling per-function transpilation rules, function signature validation, and dialect-specific code generation.

Each variant carries semantically typed arguments rather than a generic Vec<Expr>, allowing the generator to emit dialect-specific SQL.

Variants§

§

DateAdd

DATE_ADD(expr, interval) — add an interval to a date/timestamp

Fields

§expr: Box<Expr>
§interval: Box<Expr>
§

DateDiff

DATE_DIFF(start, end) — difference between two dates

Fields

§start: Box<Expr>
§end: Box<Expr>
§

DateTrunc

DATE_TRUNC(unit, expr) — truncate to the given precision

Fields

§expr: Box<Expr>
§

DateSub

DATE_SUB(expr, interval) — subtract an interval from a date

Fields

§expr: Box<Expr>
§interval: Box<Expr>
§

CurrentDate

CURRENT_DATE

§

CurrentTimestamp

CURRENT_TIMESTAMP / NOW() / GETDATE()

§

StrToTime

STR_TO_TIME(expr, format) / TO_TIMESTAMP / PARSE_DATETIME

Fields

§expr: Box<Expr>
§format: Box<Expr>
§

TimeToStr

TIME_TO_STR(expr, format) / DATE_FORMAT / FORMAT_DATETIME

Fields

§expr: Box<Expr>
§format: Box<Expr>
§

TsOrDsToDate

TS_OR_DS_TO_DATE(expr) — convert timestamp or date-string to date

Fields

§expr: Box<Expr>
§

Year

YEAR(expr) — extract year from a date/timestamp

Fields

§expr: Box<Expr>
§

Month

MONTH(expr) — extract month from a date/timestamp

Fields

§expr: Box<Expr>
§

Day

DAY(expr) — extract day from a date/timestamp

Fields

§expr: Box<Expr>
§

Trim

TRIM([LEADING|TRAILING|BOTH] [chars FROM] expr)

Fields

§expr: Box<Expr>
§trim_type: TrimType
§trim_chars: Option<Box<Expr>>
§

Substring

SUBSTRING(expr, start [, length]) / SUBSTR

Fields

§expr: Box<Expr>
§start: Box<Expr>
§length: Option<Box<Expr>>
§

Upper

UPPER(expr) / UCASE

Fields

§expr: Box<Expr>
§

Lower

LOWER(expr) / LCASE

Fields

§expr: Box<Expr>
§

RegexpLike

REGEXP_LIKE(expr, pattern [, flags]) / ~ (Postgres)

Fields

§expr: Box<Expr>
§pattern: Box<Expr>
§flags: Option<Box<Expr>>
§

RegexpExtract

REGEXP_EXTRACT(expr, pattern [, group_index])

Fields

§expr: Box<Expr>
§pattern: Box<Expr>
§group_index: Option<Box<Expr>>
§

RegexpReplace

REGEXP_REPLACE(expr, pattern, replacement [, flags])

Fields

§expr: Box<Expr>
§pattern: Box<Expr>
§replacement: Box<Expr>
§flags: Option<Box<Expr>>
§

ConcatWs

CONCAT_WS(separator, expr, ...)

Fields

§separator: Box<Expr>
§exprs: Vec<Expr>
§

Split

SPLIT(expr, delimiter) / STRING_SPLIT

Fields

§expr: Box<Expr>
§delimiter: Box<Expr>
§

Initcap

INITCAP(expr) — capitalize first letter of each word

Fields

§expr: Box<Expr>
§

Length

LENGTH(expr) / LEN

Fields

§expr: Box<Expr>
§

Replace

REPLACE(expr, from, to)

Fields

§expr: Box<Expr>
§from: Box<Expr>
§to: Box<Expr>
§

Reverse

REVERSE(expr)

Fields

§expr: Box<Expr>
§

Left

LEFT(expr, n)

Fields

§expr: Box<Expr>
§

Right

RIGHT(expr, n)

Fields

§expr: Box<Expr>
§

Lpad

LPAD(expr, length [, pad])

Fields

§expr: Box<Expr>
§length: Box<Expr>
§

Rpad

RPAD(expr, length [, pad])

Fields

§expr: Box<Expr>
§length: Box<Expr>
§

Count

COUNT(expr) or COUNT(DISTINCT expr) or COUNT(*)

Fields

§expr: Box<Expr>
§distinct: bool
§

Sum

SUM([DISTINCT] expr)

Fields

§expr: Box<Expr>
§distinct: bool
§

Avg

AVG([DISTINCT] expr)

Fields

§expr: Box<Expr>
§distinct: bool
§

Min

MIN(expr)

Fields

§expr: Box<Expr>
§

Max

MAX(expr)

Fields

§expr: Box<Expr>
§

ArrayAgg

ARRAY_AGG([DISTINCT] expr) / LIST / COLLECT_LIST

Fields

§expr: Box<Expr>
§distinct: bool
§

ApproxDistinct

APPROX_DISTINCT(expr) / APPROX_COUNT_DISTINCT

Fields

§expr: Box<Expr>
§

Variance

VARIANCE(expr) / VAR_SAMP

Fields

§expr: Box<Expr>
§

Stddev

STDDEV(expr) / STDDEV_SAMP

Fields

§expr: Box<Expr>
§

ArrayConcat

ARRAY_CONCAT(arr1, arr2) / ARRAY_CAT

Fields

§arrays: Vec<Expr>
§

ArrayContains

ARRAY_CONTAINS(array, element) / ARRAY_POSITION

Fields

§array: Box<Expr>
§element: Box<Expr>
§

ArraySize

ARRAY_SIZE(expr) / ARRAY_LENGTH / CARDINALITY

Fields

§expr: Box<Expr>
§

Explode

EXPLODE(expr) — Hive/Spark array expansion

Fields

§expr: Box<Expr>
§

GenerateSeries

GENERATE_SERIES(start, stop [, step])

Fields

§start: Box<Expr>
§stop: Box<Expr>
§step: Option<Box<Expr>>
§

Flatten

FLATTEN(expr) — flatten nested arrays

Fields

§expr: Box<Expr>
§

JSONExtract

JSON_EXTRACT(expr, path) / JSON_VALUE / -> (Postgres)

Fields

§expr: Box<Expr>
§path: Box<Expr>
§

JSONExtractScalar

JSON_EXTRACT_SCALAR(expr, path) / ->>

Fields

§expr: Box<Expr>
§path: Box<Expr>
§

ParseJSON

PARSE_JSON(expr) / JSON_PARSE

Fields

§expr: Box<Expr>
§

JSONFormat

JSON_FORMAT(expr) / TO_JSON

Fields

§expr: Box<Expr>
§

RowNumber

ROW_NUMBER()

§

Rank

RANK()

§

DenseRank

DENSE_RANK()

§

NTile

NTILE(n)

Fields

§

Lead

LEAD(expr [, offset [, default]])

Fields

§expr: Box<Expr>
§offset: Option<Box<Expr>>
§default: Option<Box<Expr>>
§

Lag

LAG(expr [, offset [, default]])

Fields

§expr: Box<Expr>
§offset: Option<Box<Expr>>
§default: Option<Box<Expr>>
§

FirstValue

FIRST_VALUE(expr)

Fields

§expr: Box<Expr>
§

LastValue

LAST_VALUE(expr)

Fields

§expr: Box<Expr>
§

Abs

ABS(expr)

Fields

§expr: Box<Expr>
§

Ceil

CEIL(expr) / CEILING

Fields

§expr: Box<Expr>
§

Floor

FLOOR(expr)

Fields

§expr: Box<Expr>
§

Round

ROUND(expr [, decimals])

Fields

§expr: Box<Expr>
§decimals: Option<Box<Expr>>
§

Log

LOG(expr [, base]) — semantics vary by dialect

Fields

§expr: Box<Expr>
§base: Option<Box<Expr>>
§

Ln

LN(expr) — natural logarithm

Fields

§expr: Box<Expr>
§

Pow

POW(base, exponent) / POWER

Fields

§base: Box<Expr>
§exponent: Box<Expr>
§

Sqrt

SQRT(expr)

Fields

§expr: Box<Expr>
§

Greatest

GREATEST(expr, ...)

Fields

§exprs: Vec<Expr>
§

Least

LEAST(expr, ...)

Fields

§exprs: Vec<Expr>
§

Mod

MOD(a, b) — modulo function

Fields

§left: Box<Expr>
§right: Box<Expr>
§

Hex

HEX(expr) / TO_HEX

Fields

§expr: Box<Expr>
§

Unhex

UNHEX(expr) / FROM_HEX

Fields

§expr: Box<Expr>
§

Md5

MD5(expr)

Fields

§expr: Box<Expr>
§

Sha

SHA(expr) / SHA1

Fields

§expr: Box<Expr>
§

Sha2

SHA2(expr, bit_length) — SHA-256/SHA-512

Fields

§expr: Box<Expr>
§bit_length: Box<Expr>

Implementations§

Source§

impl TypedFunction

Source

pub fn walk_children<F>(&self, visitor: &mut F)
where F: FnMut(&Expr) -> bool,

Walk child expressions, calling visitor on each.

Source

pub fn transform_children<F>(self, func: &F) -> TypedFunction
where F: Fn(Expr) -> Expr,

Transform child expressions, returning a new TypedFunction.

Trait Implementations§

Source§

impl Clone for TypedFunction

Source§

fn clone(&self) -> TypedFunction

Returns a duplicate 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 Debug for TypedFunction

Source§

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

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

impl<'de> Deserialize<'de> for TypedFunction

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 PartialEq for TypedFunction

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Serialize for TypedFunction

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 StructuralPartialEq for TypedFunction

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

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