是否可以将 Apache Calcite 标识符配置为不区分大小写?
Is it possible to configure Apache Calcite identifiers to be case insensitive?
Calcite SQL 语言参考 (https://calcite.apache.org/docs/reference.html) 说明如下:
In Calcite, matching identifiers to the name of the referenced object is case-sensitive. But remember that unquoted identifiers are implicitly converted to upper case before matching, and if the object it refers to was created using an unquoted identifier for its name, then its name will have been converted to upper case also.
是否有一些配置可以使对象创建和查询不区分大小写?例如,如果我有一个名为 countries
的 table,是否可以将查询验证器配置为接受 SQL 查询中的 COUNTRIES
或 countries
标识符?
我尝试在以下内容中将 SqlParser
配置为区分大小写 false
:
Frameworks.newConfigBuilder().parserConfig(SqlParser.configBuilder().setCaseSensitive(false).build()).build()
然后将此框架配置传递给 SqlToRelConverter
中使用的 PlannerImpl
,但是当我没有将标识符括在引号中以强制区分大小写时,SQL 验证程序仍然失败。
我认为解析器的区分大小写在这里无关紧要。您需要在您使用的目录 reader 上设置区分大小写。例如,如果您使用 CalciteCatalogReader
,您需要在配置期间传入的 CalciteConnectionConfig
对象上将 CalciteConnectionProperty.CASE_SENSITIVE
设置为 true
。
Calcite SQL 语言参考 (https://calcite.apache.org/docs/reference.html) 说明如下:
In Calcite, matching identifiers to the name of the referenced object is case-sensitive. But remember that unquoted identifiers are implicitly converted to upper case before matching, and if the object it refers to was created using an unquoted identifier for its name, then its name will have been converted to upper case also.
是否有一些配置可以使对象创建和查询不区分大小写?例如,如果我有一个名为 countries
的 table,是否可以将查询验证器配置为接受 SQL 查询中的 COUNTRIES
或 countries
标识符?
我尝试在以下内容中将 SqlParser
配置为区分大小写 false
:
Frameworks.newConfigBuilder().parserConfig(SqlParser.configBuilder().setCaseSensitive(false).build()).build()
然后将此框架配置传递给 SqlToRelConverter
中使用的 PlannerImpl
,但是当我没有将标识符括在引号中以强制区分大小写时,SQL 验证程序仍然失败。
我认为解析器的区分大小写在这里无关紧要。您需要在您使用的目录 reader 上设置区分大小写。例如,如果您使用 CalciteCatalogReader
,您需要在配置期间传入的 CalciteConnectionConfig
对象上将 CalciteConnectionProperty.CASE_SENSITIVE
设置为 true
。