sparkling/expr

Types

SQL expression AST node

pub type Expr {
  IntLiteral(Int)
  FloatLiteral(Float)
  StringLiteral(String)
  BoolLiteral(Bool)
  Null
  Field(String)
  Eq(Expr, Expr)
  Ne(Expr, Expr)
  Lt(Expr, Expr)
  Le(Expr, Expr)
  Gt(Expr, Expr)
  Ge(Expr, Expr)
  And(Expr, Expr)
  Or(Expr, Expr)
  Not(Expr)
  Add(Expr, Expr)
  Sub(Expr, Expr)
  Mul(Expr, Expr)
  Div(Expr, Expr)
  Count(option.Option(Expr))
  Sum(Expr)
  Avg(Expr)
  Min(Expr)
  Max(Expr)
  FunctionCall(name: String, args: List(Expr))
  ArrayLiteral(List(Expr))
  TupleLiteral(List(Expr))
  In(Expr, List(Expr))
  Between(Expr, Expr, Expr)
  IsNull(Expr)
  IsNotNull(Expr)
  Case(
    expr: option.Option(Expr),
    when_clauses: List(#(Expr, Expr)),
    else_clause: option.Option(Expr),
  )
  Cast(Expr, String)
  As(Expr, String)
}

Constructors

Values

pub fn alias(e: Expr, alias_name: String) -> Expr

Helper: create an alias

pub fn and(left: Expr, right: Expr) -> Expr

Helper: create an AND expression

pub fn bool(b: Bool) -> Expr

Helper: create a boolean literal

pub fn count(expr: option.Option(Expr)) -> Expr

Helper: create a COUNT aggregate

pub fn count_all() -> Expr

Helper: create a COUNT(*) aggregate

pub fn eq(left: Expr, right: Expr) -> Expr

Helper: create an equality comparison

pub fn field(name: String) -> Expr

Helper: create a field reference

pub fn float(f: Float) -> Expr

Helper: create a float literal

pub fn gt(left: Expr, right: Expr) -> Expr

Helper: create a greater-than comparison

pub fn int(n: Int) -> Expr

Helper: create an integer literal

pub fn lt(left: Expr, right: Expr) -> Expr

Helper: create a less-than comparison

pub fn ne(left: Expr, right: Expr) -> Expr

Helper: create a not-equal comparison

pub fn not(e: Expr) -> Expr

Helper: create a NOT expression

pub fn null() -> Expr

Helper: create a NULL literal

pub fn or(left: Expr, right: Expr) -> Expr

Helper: create an OR expression

pub fn string(s: String) -> Expr

Helper: create a string literal

pub fn to_sql(expr: Expr) -> String

Convert an expression AST to ClickHouse SQL string. This function ensures proper escaping and ClickHouse-safe syntax.

Search Document