[
https://issues.apache.org/jira/browse/CALCITE-7111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18010466#comment-18010466
]
Stamatis Zampetakis commented on CALCITE-7111:
----------------------------------------------
When you refer to algebraic "tools" my mind goes to classes/interfaces such as
RelBuilder, RelToSqlConverter, SqlToRelConverter, SqlValidator, etc. Is this
what you had in mind or something else?
In the documentation, we have an entry for the
[algebra|https://calcite.apache.org/docs/algebra.html] and currently it mostly
contains examples and usages of the RelBuilder. If we decide to list tools that
operate on RelNodes we could consider creating sub-sections/enumerations in the
same page (algebra.md).
> 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)