[
https://issues.apache.org/jira/browse/CALCITE-7111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18010471#comment-18010471
]
Julian Hyde commented on CALCITE-7111:
--------------------------------------
I'm thinking of Rex-to-Rex utilities like {{RexSimplify}} and constant
elimination, and Rel-to-Rel utilities like {{RelDecorrelator}} and
{{RelFieldTrimmer}}. (Obviously every {{RelRule}} is a kind of utility, but we
already have a way of organizing those.) I'm also thinking of tasks like
translating from one SQL dialect to another. Also {{RexInterpreter}}.
> Add an API for finding common relational sub-expressions
> --------------------------------------------------------
>
> Key: CALCITE-7111
> URL: https://issues.apache.org/jira/browse/CALCITE-7111
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Stamatis Zampetakis
> Assignee: Stamatis Zampetakis
> Priority: Major
>
> There have been various tickets (CALCITE-5631) and
> [discussions|https://lists.apache.org/thread/oj7kzz39n4jn0jj7vgflzwl5xr65s3h5]
> touching the problem of optimizing queries with common sub-expressions. A
> recurrent need is given a query/plan/RelNode to identify common
> sub-expressions and for that purpose multiple algorithms can be developed
> with different trade-offs. Someone may opt to implement a complex algorithm
> from a research paper based on integer linear programming (ILP) while another
> one may simply go for a structure based traversal.
> The goal of this ticket is to introduce a simple interface that given a
> RelNode finds/detects/suggests common sub-expressions.
> {code:java}
>
> @API(since = "1.41.0", status = API.Status.EXPERIMENTAL)
> public interface RelCommonExpressionSuggester {
> Collection<RelNode> suggest(RelNode input, Context context);
> }
> {code}
> The interface and its Javadoc will go along with a simple implementation
> detecting exact matches and some tests.
> The main motivation behind this proposal comes from Apache Hive and Apache
> Impala that aim to exploit common sub-expressions during planning. Instead of
> crafting separate interfaces for each project or copy-pasting code around it
> is natural to have the basic interfaces in calcite-core. Moreover, this
> proposal allows closed source implementations of the interface to be used in
> each project without ending up with contrived cyclic dependencies.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)