Stamatis Zampetakis created CALCITE-7111: --------------------------------------------
Summary: 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 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)