You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Weihua Zhang (Jira)" <ji...@apache.org> on 2026/08/22 10:25:00 UTC
[jira] [Commented] (CALCITE-7111) Add an API for finding common relational sub-expressions
[ https://issues.apache.org/jira/browse/CALCITE-7111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18106881#comment-18106881 ]
Weihua Zhang commented on CALCITE-7111:
---------------------------------------
Is there a dedicated Calcite JIRA tracking RexNode-level CSE as a first-class concern? I couldn't find one;
> 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
> Labels: pull-request-available
> Fix For: 1.41.0
>
>
> 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)