[
https://issues.apache.org/jira/browse/CALCITE-6191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Nuyanzin updated CALCITE-6191:
-------------------------------------
Fix Version/s: 1.37.0
> Remove join if input is one row literal
> ---------------------------------------
>
> Key: CALCITE-6191
> URL: https://issues.apache.org/jira/browse/CALCITE-6191
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Jiajun Xie
> Assignee: Jiajun Xie
> Priority: Minor
> Fix For: 1.37.0
>
>
> Here are some Join Rules
> {noformat}
> at CoreRules.java | grep ' #JOIN_'
> * @see #JOIN_REDUCE_EXPRESSIONS
> * @see #JOIN_SUB_QUERY_TO_CORRELATE */
> * @see #JOIN_SUB_QUERY_TO_CORRELATE */
> * @see #JOIN_TO_SEMI_JOIN */
> /** As {@link #JOIN_COMMUTE} but swaps outer joins as well as inner joins.
> */
> /** As {@link #JOIN_PROJECT_BOTH_TRANSPOSE} but only the left input is
> /** As {@link #JOIN_PROJECT_BOTH_TRANSPOSE} but only the right input is
> /** As {@link #JOIN_PROJECT_BOTH_TRANSPOSE} but match outer as well as
> /** As {@link #JOIN_PROJECT_LEFT_TRANSPOSE} but match outer as well as
> /** As {@link #JOIN_PROJECT_RIGHT_TRANSPOSE} but match outer as well as
> * @see #JOIN_TO_MULTI_JOIN
> {noformat}
> I cannot optimize the SQL by using them.
> {noformat}
> SELECT EMPNO FROM emp, (SELECT 1 as c) temp WHERE EMPNO = temp.c{noformat}
> Here is optimized RelNode that I want get.
> {code:java}
> LogicalProject(EMPNO=[$0])
> LogicalFilter(condition=[=($0, 1)])
> LogicalTableScan(table=[[CATALOG, SALES, EMP]]){code}
> But now it is
> {noformat}
> LogicalProject(EMPNO=[$0])
> LogicalFilter(condition=[=($0, $9)])
> LogicalJoin(condition=[true], joinType=[inner])
> LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> LogicalValues(tuples=[[{ 1 }]]){noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)