[
https://issues.apache.org/jira/browse/CALCITE-3207?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xurenhe updated CALCITE-3207:
-----------------------------
Description:
Hi all
I have a problem when using calcite, which is 'relnode convert sql statement'
example:
```
@Test public void testLeftJoinRel2Sql() {
final RelBuilder builder = relBuilder();
final RelNode rel = builder
.scan("EMP")
.scan("DEPT")
.join(JoinRelType.LEFT, builder.and(
builder.call(SqlStdOperatorTable.EQUALS,
builder.field(2, 0, "DEPTNO"),
builder.field(2, 1, "DEPTNO")
), builder.call(SqlStdOperatorTable.LIKE,
builder.field(2, 1, "DNAME"),
builder.literal("ACCOUNTING"))))
.build();
final String sql = toSql(rel);
final String expectedSql = "SELECT *\n" +
"FROM \"scott\".\"EMP\"\n" +
"LEFT JOIN \"scott\".\"DEPT\" ON \"EMP\".\"DEPTNO\" = \"DEPT\".\"DEPTNO\"\n" +
"AND \"DEPT\".\"DNAME\" LIKE 'ACCOUNTING'";
assertThat(sql, isLinux(expectedSql));
}
```
this relNode cannot convert sql statement.
I try to debug it,
`org.apache.calcite.rel.rel2sql.SqlImplementor#convertConditionToSqlNode` may
forgot to handle this case, which sqlKind is SqlKind.LIKE.
If it is a bug, I am willing to fix it.
Thanks.
was:
Hi all
I have a problem when using calcite, which is 'relnode convert sql statement'
example:
```
Input relNode:
LogicalProject(name=[$1], score=[$4])
LogicalJoin(condition=[AND(=($0, $3), LIKE($0, 'lucy'))], joinType=[left])
LogicalTableScan(table=[[db0, user_table]])
LogicalTableScan(table=[[db0, score_table]])
Expect output sql statement:
select name, score
from user_table
left join on score_table
and name like 'lucy'
```
this relNode cannot convert sql statement.
I try to debug it,
`org.apache.calcite.rel.rel2sql.SqlImplementor#convertConditionToSqlNode` may
forgot to handle this case, which sqlKind is SqlKind.LIKE.
If it is a bug, I am willing to fix it.
Thanks.
> Bug of 'JoinRelNode Convert SqlStatement'
> -----------------------------------------
>
> Key: CALCITE-3207
> URL: https://issues.apache.org/jira/browse/CALCITE-3207
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Xurenhe
> Priority: Minor
>
> Hi all
> I have a problem when using calcite, which is 'relnode convert sql statement'
> example:
> ```
> @Test public void testLeftJoinRel2Sql() {
> final RelBuilder builder = relBuilder();
> final RelNode rel = builder
> .scan("EMP")
> .scan("DEPT")
> .join(JoinRelType.LEFT, builder.and(
> builder.call(SqlStdOperatorTable.EQUALS,
> builder.field(2, 0, "DEPTNO"),
> builder.field(2, 1, "DEPTNO")
> ), builder.call(SqlStdOperatorTable.LIKE,
> builder.field(2, 1, "DNAME"),
> builder.literal("ACCOUNTING"))))
> .build();
> final String sql = toSql(rel);
> final String expectedSql = "SELECT *\n" +
> "FROM \"scott\".\"EMP\"\n" +
> "LEFT JOIN \"scott\".\"DEPT\" ON \"EMP\".\"DEPTNO\" = \"DEPT\".\"DEPTNO\"\n"
> +
> "AND \"DEPT\".\"DNAME\" LIKE 'ACCOUNTING'";
> assertThat(sql, isLinux(expectedSql));
> }
> ```
> this relNode cannot convert sql statement.
> I try to debug it,
> `org.apache.calcite.rel.rel2sql.SqlImplementor#convertConditionToSqlNode` may
> forgot to handle this case, which sqlKind is SqlKind.LIKE.
> If it is a bug, I am willing to fix it.
> Thanks.
>
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)