Skip to main content

ExecutionProps

Struct ExecutionProps 

Source
pub struct ExecutionProps {
    pub query_execution_start_time: Option<DateTime<Utc>>,
    pub alias_generator: Arc<AliasGenerator>,
    pub config_options: Option<Arc<ConfigOptions>>,
    pub var_providers: Option<HashMap<VarType, Arc<dyn VarProvider + Send + Sync>>>,
    pub subquery_indexes: HashMap<Subquery, SubqueryIndex>,
    pub subquery_results: ScalarSubqueryResults,
    pub lambda_variable_qualifier: HashMap<String, TableReference>,
}
Expand description

Holds properties and scratch state used while optimizing a LogicalPlan and translating it into an executable physical plan, such as the statement start time used during simplification.

An ExecutionProps is created each time a LogicalPlan is prepared for execution (optimized). If the same plan is optimized multiple times, a new ExecutionProps is created each time.

It is important that this structure be cheap to create as it is done so during predicate pruning and expression simplification

§Relationship with TaskContext

ExecutionProps is intentionally distinct from TaskContext. It is used while optimizing a logical plan and constructing physical expressions and physical plans, before physical operators are run.

TaskContext is the runtime context passed to physical operators during physical-plan execution.

Keeping these structures separate avoids threading execution/runtime state through planning APIs, and avoids making execution depend on planner-only scratch state.

Fields§

§query_execution_start_time: Option<DateTime<Utc>>

The time at which the query execution started. If None, functions like now() will not be simplified during optimization.

§alias_generator: Arc<AliasGenerator>

Alias generator used by subquery optimizer rules

§config_options: Option<Arc<ConfigOptions>>

Snapshot of config options when the query started

§var_providers: Option<HashMap<VarType, Arc<dyn VarProvider + Send + Sync>>>

Providers for scalar variables

§subquery_indexes: HashMap<Subquery, SubqueryIndex>

Maps each logical Subquery to its index in subquery_results. Populated by the physical planner before calling create_physical_expr.

§subquery_results: ScalarSubqueryResults

Shared results container for uncorrelated scalar subquery values. Populated at execution time by ScalarSubqueryExec.

§lambda_variable_qualifier: HashMap<String, TableReference>

Maps each lambda variable name to its lambda qualifier generated during physical planning. Populated by the physical planner for each lambda before calling create_physical_expr.

Implementations§

Source§

impl ExecutionProps

Source

pub fn new() -> ExecutionProps

Creates a new execution props

Source

pub fn with_query_execution_start_time( self, query_execution_start_time: DateTime<Utc>, ) -> ExecutionProps

Set the query execution start time to use

Source

pub fn start_execution(&mut self) -> &ExecutionProps

👎Deprecated since 50.0.0:

Use mark_start_execution instead

Source

pub fn mark_start_execution( &mut self, config_options: Arc<ConfigOptions>, ) -> &ExecutionProps

Marks the execution of query started timestamp. This also instantiates a new alias generator.

Source

pub fn add_var_provider( &mut self, var_type: VarType, provider: Arc<dyn VarProvider + Send + Sync>, ) -> Option<Arc<dyn VarProvider + Send + Sync>>

Registers a variable provider, returning the existing provider, if any

Source

pub fn get_var_provider( &self, var_type: VarType, ) -> Option<Arc<dyn VarProvider + Send + Sync>>

Returns the provider for the var_type, if any

Source

pub fn config_options(&self) -> Option<&Arc<ConfigOptions>>

Returns the configuration properties for this execution if the execution has started

Source

pub fn with_qualified_lambda_variables( self, qualifier: &TableReference, variables: &[String], ) -> ExecutionProps

Adds a mapping for each variable to the given qualifier. Existing variables with conflicting names get’s shadowed

Trait Implementations§

Source§

impl Clone for ExecutionProps

Source§

fn clone(&self) -> ExecutionProps

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 Debug for ExecutionProps

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for ExecutionProps

Source§

fn default() -> ExecutionProps

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

Auto Trait Implementations§

Blanket Implementations§

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<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, 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> 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.