[
https://issues.apache.org/jira/browse/CALCITE-7050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17956696#comment-17956696
]
Zhen Chen commented on CALCITE-7050:
------------------------------------
[~nobigo] I agree that these are indeed two separate phases. However,
{{RelToSql}} should not exclusively rewrite {{FULL JOIN}} to {{UNION}} for the
MySQL dialect. This isn't what dialect conversion should handle—it's actually
the responsibility of a rule. Therefore, the focus of this JIRA should be to
make MySQL report an error for {{{}FULL JOIN{}}}. A new JIRA can be created to
implement a rule for rewriting {{FULL JOIN}} to {{{}UNION{}}}.
Moreover, this rule should be optional. It doesn’t necessarily need to be
included in the default rule set. Calcite has many rules that aren’t part of
the default rules either. The greatest flexibility of Calcite is that users can
freely combine rules according to their needs.
> Invalid unparse for FULL JOIN in MySQLDialect
> ----------------------------------------------
>
> Key: CALCITE-7050
> URL: https://issues.apache.org/jira/browse/CALCITE-7050
> Project: Calcite
> Issue Type: Bug
> Reporter: xiong duan
> Assignee: Yu Xu
> Priority: Major
> Labels: pull-request-available
>
> The SQL in MySQL:
> {code:java}
> SELECT * FROM test002 as table1 full join test002 as table2 on table1.id1 =
> table2.id1; {code}
> throws exception:
> {code:java}
> SQL ERROR [1064] [42000]: You have an error in your SQL syntax; check the
> manual that corresponds to your MySQL server version for the right syntax to
> use near 'full join test002 as table2 on table1.id1 = table2.id1 {code}
> Test case in RelToSqlConverterTest:
> {code:java}
> @Test void testFullJoin() {
> String sql = "select *\n"
> + "from \"store\" as s\n"
> + "full join \"employee\" as e on true\n";
> final String expectedMysql = "SELECT *\n"
> + "FROM `foodmart`.`store`\n"
> + "FULL JOIN `foodmart`.`employee` ON TRUE";
> sql(sql).withMysql().ok(expectedMysql);
> } {code}
> We already have `supportsJoinType` when the jointype is JoinRelTpte.FULL
> return false.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)