pub enum Expr {
Show 21 variants
Star,
Named(String),
Aliased {
name: String,
alias: String,
},
Aggregate {
col: String,
func: AggregateFunc,
distinct: bool,
filter: Option<Vec<Condition>>,
alias: Option<String>,
},
Cast {
expr: Box<Expr>,
target_type: String,
alias: Option<String>,
},
Def {
name: String,
data_type: String,
constraints: Vec<Constraint>,
},
Mod {
kind: ModKind,
col: Box<Expr>,
},
Window {
name: String,
func: String,
params: Vec<Expr>,
partition: Vec<String>,
order: Vec<Cage>,
frame: Option<WindowFrame>,
},
Case {
when_clauses: Vec<(Condition, Box<Expr>)>,
else_value: Option<Box<Expr>>,
alias: Option<String>,
},
JsonAccess {
column: String,
path_segments: Vec<(String, bool)>,
alias: Option<String>,
},
FunctionCall {
name: String,
args: Vec<Expr>,
alias: Option<String>,
},
SpecialFunction {
name: String,
args: Vec<(Option<String>, Box<Expr>)>,
alias: Option<String>,
},
Binary {
left: Box<Expr>,
op: BinaryOp,
right: Box<Expr>,
alias: Option<String>,
},
Literal(Value),
ArrayConstructor {
elements: Vec<Expr>,
alias: Option<String>,
},
RowConstructor {
elements: Vec<Expr>,
alias: Option<String>,
},
Subscript {
expr: Box<Expr>,
index: Box<Expr>,
alias: Option<String>,
},
Collate {
expr: Box<Expr>,
collation: String,
alias: Option<String>,
},
FieldAccess {
expr: Box<Expr>,
field: String,
alias: Option<String>,
},
Subquery {
query: Box<Qail>,
alias: Option<String>,
},
Exists {
query: Box<Qail>,
negated: bool,
alias: Option<String>,
},
}Expand description
An expression node in the AST.
Variants§
Star
All columns (*)
Named(String)
A named column or identifier.
Aliased
An aliased expression (expr AS alias)
Aggregate
An aggregate function (COUNT(col)) with optional FILTER and DISTINCT
Fields
func: AggregateFuncAggregate function.
Cast
Type cast expression (expr::type)
Fields
Def
Column definition (name, type, constraints).
Fields
constraints: Vec<Constraint>Column constraints.
Mod
ALTER TABLE modify (ADD/DROP column).
Window
Window Function Definition
Fields
params: Vec<Expr>Function arguments as expressions (e.g., for SUM(amount), use Expr::Named(“amount”))
frame: Option<WindowFrame>Frame specification.
Case
CASE WHEN expression
Fields
JsonAccess
JSON accessor (data->>‘key’ or data->‘key’ or chained data->‘a’->0->>‘b’)
Fields
FunctionCall
Function call expression (COALESCE, NULLIF, etc.)
Fields
SpecialFunction
Special SQL function with keyword arguments (SUBSTRING, EXTRACT, TRIM, etc.) e.g., SUBSTRING(expr FROM pos [FOR len]), EXTRACT(YEAR FROM date)
Fields
Binary
Binary expression (left op right)
Fields
Literal(Value)
Literal value (string, number) for use in expressions e.g., ‘62’, 0, ‘active’
ArrayConstructor
Array constructor: ARRAY[expr1, expr2, …]
RowConstructor
Row constructor: ROW(expr1, expr2, …) or (expr1, expr2, …)
Subscript
Array/string subscript: arr[index].
Fields
Collate
Collation: expr COLLATE “collation_name”
Fields
FieldAccess
Field selection from composite: (row).field
Fields
Subquery
Scalar subquery: (SELECT … LIMIT 1) Used in COALESCE, comparisons, etc.
Exists
EXISTS subquery: EXISTS(SELECT …)
Trait Implementations§
Source§impl ExprExt for Expr
impl ExprExt for Expr
Source§impl From<AggregateBuilder> for Expr
impl From<AggregateBuilder> for Expr
Source§fn from(builder: AggregateBuilder) -> Self
fn from(builder: AggregateBuilder) -> Self
Source§impl From<BinaryBuilder> for Expr
impl From<BinaryBuilder> for Expr
Source§fn from(builder: BinaryBuilder) -> Self
fn from(builder: BinaryBuilder) -> Self
Source§impl From<CaseBuilder> for Expr
impl From<CaseBuilder> for Expr
Source§fn from(builder: CaseBuilder) -> Self
fn from(builder: CaseBuilder) -> Self
Source§impl From<CastBuilder> for Expr
impl From<CastBuilder> for Expr
Source§fn from(builder: CastBuilder) -> Self
fn from(builder: CastBuilder) -> Self
Source§impl From<ConcatBuilder> for Expr
impl From<ConcatBuilder> for Expr
Source§fn from(builder: ConcatBuilder) -> Self
fn from(builder: ConcatBuilder) -> Self
Source§impl From<Expr> for Value
Convert an Expr into a Value for use in correlated subquery filters.
impl From<Expr> for Value
Convert an Expr into a Value for use in correlated subquery filters.