[ 
https://issues.apache.org/jira/browse/CALCITE-2554?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stamatis Zampetakis updated CALCITE-2554:
-----------------------------------------
    Description: 
Calcite enumerable convention offers four ways to perform a join over two 
inputs:
 # EnumerableJoin
 # EnumerableThetaJoin
 # EnumerableSemiJoin
 # EnumerableCorrelate

The algorithms that are used by the afforementioned operators :
# org.apache.calcite.linq4j.EnumerableDefaults#join_
# org.apache.calcite.linq4j.EnumerableDefaults#thetaJoin
# org.apache.calcite.linq4j.EnumerableDefaults#semiJoin
# org.apache.calcite.linq4j.EnumerableDefaults#correlateJoin

in many cases can preserves the order of the left (outer) input. However, this 
information is not reflected in the RelTraitSet and thus cannot be exploited by 
the optimizer. Without this information, sort operators following the join 
cannot be removed (using SortRemoveRule) leading to suboptimal plans.

 

  was:
The EnumerableJoin operator is backed up by a join algorithm 
(org.apache.calcite.linq4j.EnumerableDefaults#join_) which preserves the order 
of the left (outer) input. However, this information is not reflected in the 
RelTraitSet and thus cannot be exploited by the optimizer. Without this 
information, sort operators following the join cannot be removed (using 
SortRemoveRule) leading to suboptimal plans.

 


> Enrich enumerable join operators with order preserving information
> ------------------------------------------------------------------
>
>                 Key: CALCITE-2554
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2554
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: Stamatis Zampetakis
>            Assignee: Julian Hyde
>            Priority: Minor
>             Fix For: 1.18.0
>
>
> Calcite enumerable convention offers four ways to perform a join over two 
> inputs:
>  # EnumerableJoin
>  # EnumerableThetaJoin
>  # EnumerableSemiJoin
>  # EnumerableCorrelate
> The algorithms that are used by the afforementioned operators :
> # org.apache.calcite.linq4j.EnumerableDefaults#join_
> # org.apache.calcite.linq4j.EnumerableDefaults#thetaJoin
> # org.apache.calcite.linq4j.EnumerableDefaults#semiJoin
> # org.apache.calcite.linq4j.EnumerableDefaults#correlateJoin
> in many cases can preserves the order of the left (outer) input. However, 
> this information is not reflected in the RelTraitSet and thus cannot be 
> exploited by the optimizer. Without this information, sort operators 
> following the join cannot be removed (using SortRemoveRule) leading to 
> suboptimal plans.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to