pub enum Expr {
Show 19 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>,
},
}Variants§
Star
All columns (*)
Named(String)
Aliased
An aliased expression (expr AS alias)
Aggregate
An aggregate function (COUNT(col)) with optional FILTER and DISTINCT
Fields
func: AggregateFuncCast
Type cast expression (expr::type)
Def
Mod
Window
Window Function Definition
Fields
params: Vec<Expr>Function arguments as expressions (e.g., for SUM(amount), use Expr::Named(“amount”))
frame: Option<WindowFrame>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)
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]
Collate
Collation: expr COLLATE “collation_name”
FieldAccess
Field selection from composite: (row).field