pub enum ScalarExpr {
Show 25 variants
Star,
QualifiedStar(String),
Default,
Column(String),
Position(usize),
QualifiedColumn {
qualifier: String,
column: String,
},
Literal(Value),
Param(usize),
Func {
name: String,
binding: Option<FunctionBinding>,
args: Vec<Self>,
distinct: bool,
order_by: Vec<ScalarOrder>,
filter: Option<Box<Self>>,
},
Array(Vec<Self>),
Row(Vec<Self>),
Binary {
op: BinaryOp,
lhs: Box<Self>,
rhs: Box<Self>,
},
UnaryMinus(Box<Self>),
Not(Box<Self>),
And(Vec<Self>),
Or(Vec<Self>),
IsNull {
expr: Box<Self>,
negated: bool,
},
Between {
expr: Box<Self>,
low: Box<Self>,
high: Box<Self>,
},
InList {
expr: Box<Self>,
list: Vec<Self>,
negated: bool,
},
WindowCall {
name: String,
args: Vec<Self>,
spec: ScalarWindowSpec,
},
Case {
base: Option<Box<Self>>,
when: Vec<(Self, Self)>,
else_branch: Option<Box<Self>>,
},
Cast {
expr: Box<Self>,
ty: String,
},
ScalarSubquery(SubqueryId),
Exists {
subquery: SubqueryId,
negated: bool,
},
InSubquery {
expr: Box<Self>,
subquery: SubqueryId,
negated: bool,
},
}Variants§
Star
QualifiedStar(String)
Default
Column(String)
Position(usize)
Logical position in an already-bound physical row schema. This variant is introduced only after relational binding so duplicate SQL labels remain independently addressable.
QualifiedColumn
Literal(Value)
Param(usize)
Func
Array(Vec<Self>)
Row(Vec<Self>)
Binary
UnaryMinus(Box<Self>)
Not(Box<Self>)
And(Vec<Self>)
Or(Vec<Self>)
IsNull
Between
InList
WindowCall
Case
Cast
ScalarSubquery(SubqueryId)
Exists
InSubquery
Implementations§
Source§impl ScalarExpr
impl ScalarExpr
pub fn qualified_column( qualifier: impl Into<String>, column: impl Into<String>, ) -> Self
Sourcepub fn collect_columns(&self, output: &mut BTreeSet<String>) -> bool
pub fn collect_columns(&self, output: &mut BTreeSet<String>) -> bool
Collect every column needed to evaluate this expression. Returns
false when evaluation needs row shape or a relational child that a
projected field scan cannot provide.
pub fn contains_window(&self) -> bool
pub fn contains_subquery(&self) -> bool
pub fn contains_parameter(&self) -> bool
pub fn contains_aggregate(&self, is_aggregate: &dyn Fn(&str) -> bool) -> bool
Trait Implementations§
Source§impl Clone for ScalarExpr
impl Clone for ScalarExpr
Source§fn clone(&self) -> ScalarExpr
fn clone(&self) -> ScalarExpr
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ScalarExpr
impl Debug for ScalarExpr
Source§impl<'de> Deserialize<'de> for ScalarExpr
impl<'de> Deserialize<'de> for ScalarExpr
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
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 ScalarExpr
impl PartialEq for ScalarExpr
Source§impl Serialize for ScalarExpr
impl Serialize for ScalarExpr
impl StructuralPartialEq for ScalarExpr
Auto Trait Implementations§
impl Freeze for ScalarExpr
impl RefUnwindSafe for ScalarExpr
impl Send for ScalarExpr
impl Sync for ScalarExpr
impl Unpin for ScalarExpr
impl UnsafeUnpin for ScalarExpr
impl UnwindSafe for ScalarExpr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more