[ 
https://issues.apache.org/jira/browse/CALCITE-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jordan Hannel updated CALCITE-6023:
-----------------------------------
    Description: 
Hello all, I believe I have found a bug in SqlToRelConverter. The symptom and 
repro are outlined below, and the full stacktrace is attached. This is on 
calcite version 1.35.0. Any insight would be much appreciated, thanks!

When I parse the below SQL string to get a SqlNode, and call 
SqlToRelConverter.convertQuery on this SqlNode, I get error:
{quote}UnsupportedOperationException: class 
org.apache.calcite.sql.SqlBasicCall: LEAD(COUNT( * )) OVER (ORDER BY `dim4`)
{quote}
SQL:

{{SELECT "dim4" AS "dim7", LEAD(COUNT( * ), -1) OVER (ORDER BY "dim4") AS 
"measure10"}}
{{FROM (}}
{{  SELECT "timestamp" AS "dim4" FROM "Shared.factDataset") AS "t0"}}
{{GROUP BY "dim4"}}

I have confirmed that my SqlToRelConverter instance seems generally ok, because 
it is able to convert many other SqlNodes to RelNodes. After some 
experimentation, I noticed that just changing `ORDER BY "dim4"` to `ORDER BY 
"t0"."dim4"` fixes the issue - after that, the SqlNode successfully is 
translated to a RelNode.

 

Below is the way I am invoking convertQuery. The error comes in the last line, 
on invocation of convert

{{

var config = Frameworks.newConfigBuilder()
  .operatorTable(getOperatorTable())
  .parserConfig(defaultParserConfig().build())
  .build();
var sqlNode = Frameworks.getPlanner(config).parse(sqlString);
var typeFactory = new JavaTypeFactoryImpl();
var calciteSchema = buildCalciteSchema(typeFactory, schema);
var catalogReader = new CalciteCatalogReader(
  calciteSchema,
  List.of(),
  typeFactory,
  CalciteConnectionConfig.DEFAULT);
var validator = new SqlValidatorImpl(
  getOperatorTable(),
  catalogReader,
  typeFactory,
  SqlValidator.Config.DEFAULT.withCallRewrite(false)) {};
var vol = new VolcanoPlanner();
vol.addRelTraitDef(ConventionTraitDef.INSTANCE);
var cluster = RelOptCluster.create(vol, new RexBuilder(typeFactory));
var sqlToRel = new SqlToRelConverter(
  NOOP_EXPANDER,
  validator,
  catalogReader,
  cluster,
  StandardConvertletTable.INSTANCE,
  SqlToRelConverter.config());
return sqlToRel.convertQuery(sqlNode, true, true)

}}

  was:
Hello all, I believe I have found a bug in SqlToRelConverter. The symptom and 
repro are outlined below, and the full stacktrace is attached. This is on 
calcite version 1.35.0. Any insight would be much appreciated, thanks!

When I parse the below SQL string to get a SqlNode, and call 
SqlToRelConverter.convertQuery on this SqlNode, I get error:
{quote}UnsupportedOperationException: class 
org.apache.calcite.sql.SqlBasicCall: LEAD(COUNT( * )) OVER (ORDER BY `dim4`)
{quote}
SQL:

{{SELECT "dim4" AS "dim7", LEAD(COUNT( * ), -1) OVER (ORDER BY "dim4") AS 
"measure10"}}
{{FROM (}}
{{  SELECT "timestamp" AS "dim4" FROM "Shared.factDataset") AS "t0"}}
{{GROUP BY "dim4"}}

I have confirmed that my SqlToRelConverter instance seems generally ok, because 
it is able to convert many other SqlNodes to RelNodes. After some 
experimentation, I noticed that just changing `ORDER BY "dim4"` to `ORDER BY 
"t0"."dim4"` fixes the issue - after that, the SqlNode successfully is 
translated to a RelNode.


> Error in SqlToRelConverter.convertQuery, possibly due to unqualified column 
> reference
> -------------------------------------------------------------------------------------
>
>                 Key: CALCITE-6023
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6023
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 1.35.0
>            Reporter: Jordan Hannel
>            Priority: Major
>         Attachments: stacktrace.txt
>
>
> Hello all, I believe I have found a bug in SqlToRelConverter. The symptom and 
> repro are outlined below, and the full stacktrace is attached. This is on 
> calcite version 1.35.0. Any insight would be much appreciated, thanks!
> When I parse the below SQL string to get a SqlNode, and call 
> SqlToRelConverter.convertQuery on this SqlNode, I get error:
> {quote}UnsupportedOperationException: class 
> org.apache.calcite.sql.SqlBasicCall: LEAD(COUNT( * )) OVER (ORDER BY `dim4`)
> {quote}
> SQL:
> {{SELECT "dim4" AS "dim7", LEAD(COUNT( * ), -1) OVER (ORDER BY "dim4") AS 
> "measure10"}}
> {{FROM (}}
> {{  SELECT "timestamp" AS "dim4" FROM "Shared.factDataset") AS "t0"}}
> {{GROUP BY "dim4"}}
> I have confirmed that my SqlToRelConverter instance seems generally ok, 
> because it is able to convert many other SqlNodes to RelNodes. After some 
> experimentation, I noticed that just changing `ORDER BY "dim4"` to `ORDER BY 
> "t0"."dim4"` fixes the issue - after that, the SqlNode successfully is 
> translated to a RelNode.
>  
> Below is the way I am invoking convertQuery. The error comes in the last 
> line, on invocation of convert
> {{
> var config = Frameworks.newConfigBuilder()
>   .operatorTable(getOperatorTable())
>   .parserConfig(defaultParserConfig().build())
>   .build();
> var sqlNode = Frameworks.getPlanner(config).parse(sqlString);
> var typeFactory = new JavaTypeFactoryImpl();
> var calciteSchema = buildCalciteSchema(typeFactory, schema);
> var catalogReader = new CalciteCatalogReader(
>   calciteSchema,
>   List.of(),
>   typeFactory,
>   CalciteConnectionConfig.DEFAULT);
> var validator = new SqlValidatorImpl(
>   getOperatorTable(),
>   catalogReader,
>   typeFactory,
>   SqlValidator.Config.DEFAULT.withCallRewrite(false)) {};
> var vol = new VolcanoPlanner();
> vol.addRelTraitDef(ConventionTraitDef.INSTANCE);
> var cluster = RelOptCluster.create(vol, new RexBuilder(typeFactory));
> var sqlToRel = new SqlToRelConverter(
>   NOOP_EXPANDER,
>   validator,
>   catalogReader,
>   cluster,
>   StandardConvertletTable.INSTANCE,
>   SqlToRelConverter.config());
> return sqlToRel.convertQuery(sqlNode, true, true)
> }}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to