[
https://issues.apache.org/jira/browse/CALCITE-4093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17147154#comment-17147154
]
Danny Chen commented on CALCITE-4093:
-------------------------------------
It seems you want to translate the rel back to sql right ?
> Unable to translate correlate to SQL
> ------------------------------------
>
> Key: CALCITE-4093
> URL: https://issues.apache.org/jira/browse/CALCITE-4093
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.23.0
> Reporter: jamie12221
> Priority: Trivial
>
> Exception:
> {code:java}
> Caused by: java.lang.reflect.InvocationTargetExceptionCaused by:
> java.lang.reflect.InvocationTargetException at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498) at
> org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:524) ... 13
> moreCaused by: java.lang.RuntimeException: While invoking method 'public
> org.apache.calcite.rel.rel2sql.SqlImplementor$Result
> org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(org.apache.calcite.rel.core.Project)'
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:527) at
> org.apache.calcite.rel.rel2sql.RelToSqlConverter.dispatch(RelToSqlConverter.java:129)
> at io.mycat.optimizer.Main$1RelToSqlConverter2.dispatch(Main.java:153) at
> org.apache.calcite.rel.rel2sql.RelToSqlConverter.visitChild(RelToSqlConverter.java:135)
> at
> org.apache.calcite.rel.rel2sql.SqlImplementor.visitChild(SqlImplementor.java:129)
> at
> org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:284)
> ... 18 moreCaused by: java.lang.reflect.InvocationTargetException at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498) at
> org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:524) ... 23
> moreCaused by: java.lang.UnsupportedOperationException at
> org.apache.calcite.rel.rel2sql.SqlImplementor$Context.getAliasContext(SqlImplementor.java:898)
> at
> org.apache.calcite.rel.rel2sql.SqlImplementor$Context.toSql(SqlImplementor.java:623)
> at
> org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:336)
> ...
> {code}
> The Test Case:
> {code:java}
> private static void test(RelBuilder relBuilder) {
> RelNode left = relBuilder
> .values(new String[]{"f", "f2"}, "1", "2").build();
> CorrelationId correlationId = new CorrelationId(0);
> RexNode rexCorrel =
> relBuilder.getRexBuilder().makeCorrel(
> left.getRowType(),
> correlationId);
> RelNode right = relBuilder
> .values(new String[]{"f3", "f4"}, "1", "2")
> .project(relBuilder.field(0),
> relBuilder.getRexBuilder()
> .makeFieldAccess(rexCorrel, 0))
> .build();
> RelNode correlate = new LogicalCorrelate(left.getCluster(),
> left.getTraitSet(), left, right, correlationId,
> ImmutableBitSet.of(0), JoinRelType.SEMI);
> class RelToSqlConverter2 extends RelToSqlConverter {
> public RelToSqlConverter2() {
> super(MysqlSqlDialect.DEFAULT);
> }
> @Override
> public Result dispatch(RelNode e) {
> return super.dispatch(e);
> }
> }
> ;
> correlate = RelDecorrelator.decorrelateQuery(correlate, relBuilder);
> RelToSqlConverter2 relToSqlConverter2 = new RelToSqlConverter2();
> SqlString sqlString =
> relToSqlConverter2.dispatch(correlate).asStatement().toSqlString(MysqlSqlDialect.DEFAULT);
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)