Apache Calcite 中规划器和 ddl 语句的问题
Problems with planner and ddl statements in Apache Calcite
当我尝试验证包含 "CREATE TABLE" 的 sql 语句时,它抛出错误:
java.lang.AssertionError: Was not expecting value 'CREATE_TABLE' for enumeration 'org.apache.calcite.sql.SqlKind' in this context
at org.apache.calcite.util.Util.unexpected(Util.java:1773)
at org.apache.calcite.sql.validate.SqlValidatorImpl.registerQuery(SqlValidatorImpl.java:2715)
at org.apache.calcite.sql.validate.SqlValidatorImpl.registerQuery(SqlValidatorImpl.java:2381)
at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:927)
at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:633)
at org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:188)
我想知道是否可以在方解石中使用 ddl 语句来验证查询?
从堆栈跟踪来看,您似乎正在使用 Planner
接口。目前此接口不支持验证包含 DDL 元素的语句,因为它始终创建 CalciteSqlValidator.
的实例
为了使用 DDL 节点验证语句,您必须获得 ContextSqlValidator 的实例,但目前没有高级 API 来使用此服务。
通过 Calcite 连接执行的语句通过 ContextSqlValidator
,因此您可以通过在 ServerTest 中调试测试用例来了解如何实例化此 class。
当我尝试验证包含 "CREATE TABLE" 的 sql 语句时,它抛出错误:
java.lang.AssertionError: Was not expecting value 'CREATE_TABLE' for enumeration 'org.apache.calcite.sql.SqlKind' in this context
at org.apache.calcite.util.Util.unexpected(Util.java:1773)
at org.apache.calcite.sql.validate.SqlValidatorImpl.registerQuery(SqlValidatorImpl.java:2715)
at org.apache.calcite.sql.validate.SqlValidatorImpl.registerQuery(SqlValidatorImpl.java:2381)
at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:927)
at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:633)
at org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:188)
我想知道是否可以在方解石中使用 ddl 语句来验证查询?
从堆栈跟踪来看,您似乎正在使用 Planner
接口。目前此接口不支持验证包含 DDL 元素的语句,因为它始终创建 CalciteSqlValidator.
为了使用 DDL 节点验证语句,您必须获得 ContextSqlValidator 的实例,但目前没有高级 API 来使用此服务。
通过 Calcite 连接执行的语句通过 ContextSqlValidator
,因此您可以通过在 ServerTest 中调试测试用例来了解如何实例化此 class。