[
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)