pub enum SqlTransform<Rel = RIId, Super = Transform> {
Show 13 variants
Super(Super),
From(Rel),
Select(Vec<CId>),
Filter(Expr),
Aggregate {
partition: Vec<CId>,
compute: Vec<CId>,
},
Sort(Vec<ColumnSort<CId>>),
Take(Take),
Join {
side: JoinSide,
with: Rel,
filter: Expr,
},
Distinct,
DistinctOn(Vec<CId>),
Except {
bottom: Rel,
distinct: bool,
},
Intersect {
bottom: Rel,
distinct: bool,
},
Union {
bottom: Rel,
distinct: bool,
},
}
Expand description
Similar to rq::Transform, but closer to a SQL clause.
Uses two generic args that allows the compiler to work in multiple stages:
- the first converts RQ to SqlTransform<RIId, rq::Transform>,
- the second compiles that to [SqlTransform<RelationExpr, ()>].
Variants§
Super(Super)
Contains rq::Transform during compilation. After finishing, this is emptied.
For example, initial an RQ Append transform is wrapped as such:
rq::Transform::Append(x) -> srq::SqlTransform::Super(rq::Transform::Append(x))
During preprocessing it is compiled to:
srq::SqlTransform::Super(rq::Transform::Append(_)) -> srq::SqlTransform::Union { .. }
At the end of SRQ compilation, all Super()
are either discarded or converted to their
SRQ equivalents.
From(Rel)
Select(Vec<CId>)
Filter(Expr)
Aggregate
Sort(Vec<ColumnSort<CId>>)
Take(Take)
Join
Distinct
DistinctOn(Vec<CId>)
Except
Intersect
Union
Implementations§
Source§impl<Rel, Super> SqlTransform<Rel, Super>
impl<Rel, Super> SqlTransform<Rel, Super>
Sourcepub fn as_super_mut(&mut self) -> Option<&mut Super>
pub fn as_super_mut(&mut self) -> Option<&mut Super>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Super
, otherwise None
Sourcepub fn as_super(&self) -> Option<&Super>
pub fn as_super(&self) -> Option<&Super>
Optionally returns references to the inner fields if this is a SqlTransform::Super
, otherwise None
Sourcepub fn into_super(self) -> Result<Super, SqlTransform<Rel, Super>>
pub fn into_super(self) -> Result<Super, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Super
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn as_from_mut(&mut self) -> Option<&mut Rel>
pub fn as_from_mut(&mut self) -> Option<&mut Rel>
Optionally returns mutable references to the inner fields if this is a SqlTransform::From
, otherwise None
Sourcepub fn as_from(&self) -> Option<&Rel>
pub fn as_from(&self) -> Option<&Rel>
Optionally returns references to the inner fields if this is a SqlTransform::From
, otherwise None
Sourcepub fn into_from(self) -> Result<Rel, SqlTransform<Rel, Super>>
pub fn into_from(self) -> Result<Rel, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::From
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn is_select(&self) -> bool
pub fn is_select(&self) -> bool
Returns true if this is a SqlTransform::Select
, otherwise false
Sourcepub fn as_select_mut(&mut self) -> Option<&mut Vec<CId>>
pub fn as_select_mut(&mut self) -> Option<&mut Vec<CId>>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Select
, otherwise None
Sourcepub fn as_select(&self) -> Option<&Vec<CId>>
pub fn as_select(&self) -> Option<&Vec<CId>>
Optionally returns references to the inner fields if this is a SqlTransform::Select
, otherwise None
Sourcepub fn into_select(self) -> Result<Vec<CId>, SqlTransform<Rel, Super>>
pub fn into_select(self) -> Result<Vec<CId>, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Select
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn is_filter(&self) -> bool
pub fn is_filter(&self) -> bool
Returns true if this is a SqlTransform::Filter
, otherwise false
Sourcepub fn as_filter_mut(&mut self) -> Option<&mut Expr>
pub fn as_filter_mut(&mut self) -> Option<&mut Expr>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Filter
, otherwise None
Sourcepub fn as_filter(&self) -> Option<&Expr>
pub fn as_filter(&self) -> Option<&Expr>
Optionally returns references to the inner fields if this is a SqlTransform::Filter
, otherwise None
Sourcepub fn into_filter(self) -> Result<Expr, SqlTransform<Rel, Super>>
pub fn into_filter(self) -> Result<Expr, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Filter
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn is_aggregate(&self) -> bool
pub fn is_aggregate(&self) -> bool
Returns true if this is a SqlTransform::Aggregate
, otherwise false
Sourcepub fn as_aggregate_mut(&mut self) -> Option<(&mut Vec<CId>, &mut Vec<CId>)>
pub fn as_aggregate_mut(&mut self) -> Option<(&mut Vec<CId>, &mut Vec<CId>)>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Aggregate
, otherwise None
Sourcepub fn as_aggregate(&self) -> Option<(&Vec<CId>, &Vec<CId>)>
pub fn as_aggregate(&self) -> Option<(&Vec<CId>, &Vec<CId>)>
Optionally returns references to the inner fields if this is a SqlTransform::Aggregate
, otherwise None
Sourcepub fn into_aggregate(
self,
) -> Result<(Vec<CId>, Vec<CId>), SqlTransform<Rel, Super>>
pub fn into_aggregate( self, ) -> Result<(Vec<CId>, Vec<CId>), SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Aggregate
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn as_sort_mut(&mut self) -> Option<&mut Vec<ColumnSort<CId>>>
pub fn as_sort_mut(&mut self) -> Option<&mut Vec<ColumnSort<CId>>>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Sort
, otherwise None
Sourcepub fn as_sort(&self) -> Option<&Vec<ColumnSort<CId>>>
pub fn as_sort(&self) -> Option<&Vec<ColumnSort<CId>>>
Optionally returns references to the inner fields if this is a SqlTransform::Sort
, otherwise None
Sourcepub fn into_sort(self) -> Result<Vec<ColumnSort<CId>>, SqlTransform<Rel, Super>>
pub fn into_sort(self) -> Result<Vec<ColumnSort<CId>>, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Sort
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn as_take_mut(&mut self) -> Option<&mut Take>
pub fn as_take_mut(&mut self) -> Option<&mut Take>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Take
, otherwise None
Sourcepub fn as_take(&self) -> Option<&Take>
pub fn as_take(&self) -> Option<&Take>
Optionally returns references to the inner fields if this is a SqlTransform::Take
, otherwise None
Sourcepub fn into_take(self) -> Result<Take, SqlTransform<Rel, Super>>
pub fn into_take(self) -> Result<Take, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Take
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn as_join_mut(&mut self) -> Option<(&mut JoinSide, &mut Rel, &mut Expr)>
pub fn as_join_mut(&mut self) -> Option<(&mut JoinSide, &mut Rel, &mut Expr)>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Join
, otherwise None
Sourcepub fn as_join(&self) -> Option<(&JoinSide, &Rel, &Expr)>
pub fn as_join(&self) -> Option<(&JoinSide, &Rel, &Expr)>
Optionally returns references to the inner fields if this is a SqlTransform::Join
, otherwise None
Sourcepub fn into_join(
self,
) -> Result<(JoinSide, Rel, Expr), SqlTransform<Rel, Super>>
pub fn into_join( self, ) -> Result<(JoinSide, Rel, Expr), SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Join
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn is_distinct(&self) -> bool
pub fn is_distinct(&self) -> bool
Returns true if this is a SqlTransform::Distinct
, otherwise false
Sourcepub fn is_distinct_on(&self) -> bool
pub fn is_distinct_on(&self) -> bool
Returns true if this is a SqlTransform::DistinctOn
, otherwise false
Sourcepub fn as_distinct_on_mut(&mut self) -> Option<&mut Vec<CId>>
pub fn as_distinct_on_mut(&mut self) -> Option<&mut Vec<CId>>
Optionally returns mutable references to the inner fields if this is a SqlTransform::DistinctOn
, otherwise None
Sourcepub fn as_distinct_on(&self) -> Option<&Vec<CId>>
pub fn as_distinct_on(&self) -> Option<&Vec<CId>>
Optionally returns references to the inner fields if this is a SqlTransform::DistinctOn
, otherwise None
Sourcepub fn into_distinct_on(self) -> Result<Vec<CId>, SqlTransform<Rel, Super>>
pub fn into_distinct_on(self) -> Result<Vec<CId>, SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::DistinctOn
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn is_except(&self) -> bool
pub fn is_except(&self) -> bool
Returns true if this is a SqlTransform::Except
, otherwise false
Sourcepub fn as_except_mut(&mut self) -> Option<(&mut Rel, &mut bool)>
pub fn as_except_mut(&mut self) -> Option<(&mut Rel, &mut bool)>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Except
, otherwise None
Sourcepub fn as_except(&self) -> Option<(&Rel, &bool)>
pub fn as_except(&self) -> Option<(&Rel, &bool)>
Optionally returns references to the inner fields if this is a SqlTransform::Except
, otherwise None
Sourcepub fn into_except(self) -> Result<(Rel, bool), SqlTransform<Rel, Super>>
pub fn into_except(self) -> Result<(Rel, bool), SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Except
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn is_intersect(&self) -> bool
pub fn is_intersect(&self) -> bool
Returns true if this is a SqlTransform::Intersect
, otherwise false
Sourcepub fn as_intersect_mut(&mut self) -> Option<(&mut Rel, &mut bool)>
pub fn as_intersect_mut(&mut self) -> Option<(&mut Rel, &mut bool)>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Intersect
, otherwise None
Sourcepub fn as_intersect(&self) -> Option<(&Rel, &bool)>
pub fn as_intersect(&self) -> Option<(&Rel, &bool)>
Optionally returns references to the inner fields if this is a SqlTransform::Intersect
, otherwise None
Sourcepub fn into_intersect(self) -> Result<(Rel, bool), SqlTransform<Rel, Super>>
pub fn into_intersect(self) -> Result<(Rel, bool), SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Intersect
, otherwise returns back the enum in the Err
case of the result
Sourcepub fn as_union_mut(&mut self) -> Option<(&mut Rel, &mut bool)>
pub fn as_union_mut(&mut self) -> Option<(&mut Rel, &mut bool)>
Optionally returns mutable references to the inner fields if this is a SqlTransform::Union
, otherwise None
Sourcepub fn as_union(&self) -> Option<(&Rel, &bool)>
pub fn as_union(&self) -> Option<(&Rel, &bool)>
Optionally returns references to the inner fields if this is a SqlTransform::Union
, otherwise None
Sourcepub fn into_union(self) -> Result<(Rel, bool), SqlTransform<Rel, Super>>
pub fn into_union(self) -> Result<(Rel, bool), SqlTransform<Rel, Super>>
Returns the inner fields if this is a SqlTransform::Union
, otherwise returns back the enum in the Err
case of the result
Source§impl<Rel> SqlTransform<Rel>
impl<Rel> SqlTransform<Rel>
Trait Implementations§
Source§impl<Rel, Super> AsRef<str> for SqlTransform<Rel, Super>
impl<Rel, Super> AsRef<str> for SqlTransform<Rel, Super>
Source§impl<Rel, Super> Clone for SqlTransform<Rel, Super>
impl<Rel, Super> Clone for SqlTransform<Rel, Super>
Source§fn clone(&self) -> SqlTransform<Rel, Super>
fn clone(&self) -> SqlTransform<Rel, Super>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<Rel, Super> Debug for SqlTransform<Rel, Super>
impl<Rel, Super> Debug for SqlTransform<Rel, Super>
Source§impl<Rel, Super> Serialize for SqlTransform<Rel, Super>
impl<Rel, Super> Serialize for SqlTransform<Rel, Super>
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl<Rel, Super> Freeze for SqlTransform<Rel, Super>
impl<Rel, Super> RefUnwindSafe for SqlTransform<Rel, Super>where
Super: RefUnwindSafe,
Rel: RefUnwindSafe,
impl<Rel, Super> Send for SqlTransform<Rel, Super>
impl<Rel, Super> Sync for SqlTransform<Rel, Super>
impl<Rel, Super> Unpin for SqlTransform<Rel, Super>
impl<Rel, Super> UnwindSafe for SqlTransform<Rel, Super>where
Super: UnwindSafe,
Rel: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);