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: ScalarSubqueryResultsShared 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
impl ExecutionProps
Sourcepub fn with_query_execution_start_time(
self,
query_execution_start_time: DateTime<Utc>,
) -> Self
pub fn with_query_execution_start_time( self, query_execution_start_time: DateTime<Utc>, ) -> Self
Set the query execution start time to use
pub fn start_execution(&mut self) -> &Self
Use mark_start_execution instead
Sourcepub fn mark_start_execution(
&mut self,
config_options: Arc<ConfigOptions>,
) -> &Self
pub fn mark_start_execution( &mut self, config_options: Arc<ConfigOptions>, ) -> &Self
Marks the execution of query started timestamp. This also instantiates a new alias generator.
Sourcepub fn add_var_provider(
&mut self,
var_type: VarType,
provider: Arc<dyn VarProvider + Send + Sync>,
) -> Option<Arc<dyn VarProvider + Send + Sync>>
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
Sourcepub fn get_var_provider(
&self,
var_type: VarType,
) -> Option<Arc<dyn VarProvider + Send + Sync>>
pub fn get_var_provider( &self, var_type: VarType, ) -> Option<Arc<dyn VarProvider + Send + Sync>>
Returns the provider for the var_type, if any
Sourcepub fn config_options(&self) -> Option<&Arc<ConfigOptions>>
pub fn config_options(&self) -> Option<&Arc<ConfigOptions>>
Returns the configuration properties for this execution if the execution has started
Sourcepub fn with_qualified_lambda_variables(
self,
qualifier: &TableReference,
variables: &[String],
) -> Self
pub fn with_qualified_lambda_variables( self, qualifier: &TableReference, variables: &[String], ) -> Self
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
impl Clone for ExecutionProps
Source§fn clone(&self) -> ExecutionProps
fn clone(&self) -> ExecutionProps
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExecutionProps
impl Debug for ExecutionProps
Auto Trait Implementations§
impl !RefUnwindSafe for ExecutionProps
impl !UnwindSafe for ExecutionProps
impl Freeze for ExecutionProps
impl Send for ExecutionProps
impl Sync for ExecutionProps
impl Unpin for ExecutionProps
impl UnsafeUnpin for ExecutionProps
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 more