Tkansks,I created a jira:https://issues.apache.org/jira/browse/CALCITE-4430

On 12/8/20 2:50 PM, Chunwei Lei wrote:
Hi, Tao.

Thank you for your report. It would be great if you can file an JIRA and
provide
a test case that can reproduce the error.

Best,
Chunwei


On Tue, Dec 8, 2020 at 2:33 PM tonytao <tonytao0...@outlook.com> wrote:

Hi folks,

I found a RelToSqlConverter bug existed in 1.24-1.26.

I has a logical plan as below:

        LogicalProject(id=[$0], CAST=[CAST($1):DATE])
          LogicalFilter(condition=[AND(<($1, 2011-12-01 00:00:00), >($0,
100))])
            JdbcTableScan(table=[[public, testdata]])

when concert it to sql ,

          RelToSqlConverter converter = new
RelToSqlConverter(PostgresqlSqlDialect.DEFAULT);
          SqlSelect select = converter.visit(project1).asSelect();

it throw exception:

Exception in thread "main" java.lang.NullPointerException
      at java.base/java.util.Objects.requireNonNull(Objects.java:221)
      at

org.apache.calcite.rel.rel2sql.RelToSqlConverter.result(RelToSqlConverter.java:152)
      at

org.apache.calcite.rel.rel2sql.SqlImplementor.result(SqlImplementor.java:483)
      at

org.apache.calcite.rel.rel2sql.SqlImplementor$Builder.result(SqlImplementor.java:1970)
      at

org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:351)
      at com.glodon.newcalcite.App.main(App.java:111)

Here is this the bug explain:

In RelToSqlConverter,the stack generate 2 frames :

   * JdbcTableScan(parent was LogicalFilter)
   * LogicalFilter(parent was LogicalProject)

On "visit(TableScan e)"  the stack would peek and generate a result;on
"visit(Filter e)" ,it would peek another frame and generate the result
too.So on "visit(Project e)",the stack is empty,this cause the exception
happened.

I'm not sure when "visitInput" in LogicalProject ,it should push
LogicalProject(parent is NULL) instead of LogicalFilter(parent was
LogicalProject).?

This error not existed in 1.23.

Best regards!

Tao Jin




Reply via email to