Skip to main content

SelectBuilder

Struct SelectBuilder 

Source
pub struct SelectBuilder { /* private fields */ }

Implementations§

Source§

impl SelectBuilder

Source

pub fn next_flatten_alias(&mut self) -> String

Generate a unique alias for a LATERAL FLATTEN relation (_unnest_1, _unnest_2, …). Each call returns a fresh name.

Source

pub fn add_flatten_table_alias(&mut self, alias: String)

Register a table alias as pointing to a LATERAL FLATTEN relation.

Source

pub fn flatten_table_aliases_empty(&self) -> bool

Returns true if no FLATTEN table aliases have been registered.

Source

pub fn is_flatten_table_alias(&self, alias: &str) -> bool

Returns true if the given table alias refers to a FLATTEN relation.

Source

pub fn current_flatten_alias(&self) -> Option<String>

Returns the most recently generated flatten alias, or None if next_flatten_alias has not been called yet.

Source

pub fn distinct(&mut self, value: Option<Distinct>) -> &mut SelectBuilder

Source

pub fn top(&mut self, value: Option<Top>) -> &mut SelectBuilder

Source

pub fn projection(&mut self, value: Vec<SelectItem>) -> &mut SelectBuilder

Source

pub fn pop_projections(&mut self) -> Vec<SelectItem>

Source

pub fn already_projected(&self) -> bool

Returns true if a projection has been explicitly set via projection().

This method is used to determine whether the SELECT clause has already been defined, which helps avoid creating duplicate projection nodes during query unparsing. It returns true for both empty and non-empty projections.

§Returns
  • true if projection() has been called (regardless of whether it was empty or not)
  • false if no projection has been set yet
§Example
let mut builder = SelectBuilder::default();
assert!(!builder.already_projected());

builder.projection(vec![]);
assert!(builder.already_projected()); // true even for empty projection

builder.projection(vec![SelectItem::Wildcard(...)]);
assert!(builder.already_projected()); // true for non-empty projection
Source

pub fn into(&mut self, value: Option<SelectInto>) -> &mut SelectBuilder

Source

pub fn from(&mut self, value: Vec<TableWithJoinsBuilder>) -> &mut SelectBuilder

Source

pub fn push_from(&mut self, value: TableWithJoinsBuilder) -> &mut SelectBuilder

Source

pub fn pop_from(&mut self) -> Option<TableWithJoinsBuilder>

Source

pub fn lateral_views(&mut self, value: Vec<LateralView>) -> &mut SelectBuilder

Source

pub fn replace_mark( &mut self, existing_expr: &Expr, value: &Expr, ) -> &mut SelectBuilder

Replaces the selection with a new value.

This function is used to replace a specific expression within the selection. Unlike the selection method which combines existing and new selections with AND, this method searches for and replaces occurrences of a specific expression.

This method is primarily used to modify LEFT MARK JOIN expressions. When processing a LEFT MARK JOIN, we need to replace the placeholder expression with the actual join condition in the selection clause.

§Arguments
  • existing_expr - The expression to replace
  • value - The new expression to set as the selection
Source

pub fn selection(&mut self, value: Option<Expr>) -> &mut SelectBuilder

Source

pub fn group_by(&mut self, value: GroupByExpr) -> &mut SelectBuilder

Source

pub fn cluster_by(&mut self, value: Vec<Expr>) -> &mut SelectBuilder

Source

pub fn distribute_by(&mut self, value: Vec<Expr>) -> &mut SelectBuilder

Source

pub fn sort_by(&mut self, value: Vec<OrderByExpr>) -> &mut SelectBuilder

Source

pub fn having(&mut self, value: Option<Expr>) -> &mut SelectBuilder

Source

pub fn named_window( &mut self, value: Vec<NamedWindowDefinition>, ) -> &mut SelectBuilder

Source

pub fn qualify(&mut self, value: Option<Expr>) -> &mut SelectBuilder

Source

pub fn value_table_mode( &mut self, value: Option<ValueTableMode>, ) -> &mut SelectBuilder

Source

pub fn build(&self) -> Result<Select, BuilderError>

Trait Implementations§

Source§

impl Clone for SelectBuilder

Source§

fn clone(&self) -> SelectBuilder

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for SelectBuilder

Source§

fn default() -> SelectBuilder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<Source> AccessAs for Source

Source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
Source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

Source§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
Source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
Source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

Source§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
Source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
Source§

impl<T> Includes<End> for T

Source§

type Output = End

The result
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Ungil for T
where T: Send,

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more