JIasen Sheng created CALCITE-4619:
-------------------------------------
Summary: "Full join" generates an incorrect execution plan under
mysql
Key: CALCITE-4619
URL: https://issues.apache.org/jira/browse/CALCITE-4619
Project: Calcite
Issue Type: Bug
Components: core
Reporter: JIasen Sheng
The current jdbcJoinRules can match any join type, but not all jdbc databases
can support full join, such as mysql and H2.
Calcite will generate the following plan for
{code:java}
select count(*) as c from \"foodmart\".\"store\" as p1 full join
\"foodmart\".\"store\" as p2 using (\"store_id\")
{code}
.
{code:java}
JdbcToEnumerableConverter
JdbcAggregate(group=[{}], C=[COUNT()])
JdbcJoin(condition=[=($0, $1)], joinType=[full])
JdbcProject(store_id=[$0])
JdbcTableScan(table=[[foodmart, store]])
JdbcProject(store_id=[$0])
JdbcTableScan(table=[[foodmart, store]]){code}
When the plan is executed in Mysql, the execution will fail due to the
existence of a full join.
I think it is necessary to add supportsFullJoin method in SqlDialect, and add
JdbcJoinRule matching rules to solve this problem
--
This message was sent by Atlassian Jira
(v8.3.4#803005)