[ https://issues.apache.org/jira/browse/CALCITE-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17768825#comment-17768825 ]
Julian Hyde commented on CALCITE-6023: -------------------------------------- Regarding formatting. I recommend using \{code} and \{noformat} tokens at the beginning and end of multi-line blocks. I've made those changes to the description. > 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: > {noformat}UnsupportedOperationException: class > org.apache.calcite.sql.SqlBasicCall: LEAD(COUNT( * )) OVER (ORDER BY `dim4`) > {noformat} > SQL: > {code} > 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" > {code} > 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 convertQuery > {code} > 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); > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)