You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "jamie12221 (Jira)" <ji...@apache.org> on 2020/06/27 18:27:00 UTC

[jira] [Created] (CALCITE-4093) Unable to translate correlate to SQL

jamie12221 created CALCITE-4093:
-----------------------------------

             Summary: 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


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)