pub struct EquivalenceProperties { /* private fields */ }
Expand description
Represents a collection of EquivalentClass
(equivalences
between columns in relations)
This is used to represent:
- Equality conditions (like
A=B
), whenT
=Column
Implementations§
source§impl EquivalenceProperties
impl EquivalenceProperties
pub fn new(schema: SchemaRef) -> Self
sourcepub fn classes(&self) -> &[EquivalentClass<Column>]
pub fn classes(&self) -> &[EquivalentClass<Column>]
return the set of equivalences
pub fn schema(&self) -> SchemaRef
sourcepub fn extend<I: IntoIterator<Item = EquivalentClass<Column>>>(
&mut self,
iter: I
)
pub fn extend<I: IntoIterator<Item = EquivalentClass<Column>>>( &mut self, iter: I )
Add the EquivalentClass
from iter
to this list
sourcepub fn add_equal_conditions(&mut self, new_conditions: (&Column, &Column))
pub fn add_equal_conditions(&mut self, new_conditions: (&Column, &Column))
Adds new equal conditions into the EquivalenceProperties. New equal conditions usually come from equality predicates in a join/filter.
sourcepub fn normalize_expr(
&self,
expr: Arc<dyn PhysicalExpr>
) -> Arc<dyn PhysicalExpr>
pub fn normalize_expr( &self, expr: Arc<dyn PhysicalExpr> ) -> Arc<dyn PhysicalExpr>
Normalizes physical expression according to EquivalentClass
es inside self.classes
.
expression is replaced with EquivalentClass::head
expression if it is among EquivalentClass::others
.
sourcepub fn normalize_exprs(
&self,
exprs: &[Arc<dyn PhysicalExpr>]
) -> Vec<Arc<dyn PhysicalExpr>>
pub fn normalize_exprs( &self, exprs: &[Arc<dyn PhysicalExpr>] ) -> Vec<Arc<dyn PhysicalExpr>>
This function applies the [normalize_expr
]
function for all expression in exprs
and returns a vector of
normalized physical expressions.
sourcepub fn normalize_sort_requirement(
&self,
sort_requirement: PhysicalSortRequirement
) -> PhysicalSortRequirement
pub fn normalize_sort_requirement( &self, sort_requirement: PhysicalSortRequirement ) -> PhysicalSortRequirement
This function normalizes sort_requirement
according to EquivalenceClasses
in the self
.
If the given sort requirement doesn’t belong to equivalence set inside
self
, it returns sort_requirement
as is.
sourcepub fn normalize_sort_requirements(
&self,
sort_reqs: &[PhysicalSortRequirement]
) -> Vec<PhysicalSortRequirement>
pub fn normalize_sort_requirements( &self, sort_reqs: &[PhysicalSortRequirement] ) -> Vec<PhysicalSortRequirement>
This function applies the [normalize_sort_requirement
]
function for all sort requirements in sort_reqs
and returns a vector of
normalized sort expressions.
sourcepub fn normalize_sort_exprs(
&self,
sort_exprs: &[PhysicalSortExpr]
) -> Vec<PhysicalSortExpr>
pub fn normalize_sort_exprs( &self, sort_exprs: &[PhysicalSortExpr] ) -> Vec<PhysicalSortExpr>
Similar to the [normalize_sort_requirements
] this function normalizes
sort expressions in sort_exprs
and returns a vector of
normalized sort expressions.
Trait Implementations§
source§impl Clone for EquivalenceProperties
impl Clone for EquivalenceProperties
source§fn clone(&self) -> EquivalenceProperties
fn clone(&self) -> EquivalenceProperties
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more