首页 > 解决方案 > 是否可以将 Apache Calcite 标识符配置为不区分大小写?

问题描述

Calcite SQL 语言参考 ( https://calcite.apache.org/docs/reference.html ) 说明如下:

在 Calcite 中,将标识符与引用对象的名称匹配是区分大小写的。但是请记住,不带引号的标识符在匹配之前会隐式转换为大写,如果它所引用的对象是使用不带引号的标识符作为其名称创建的,那么它的名称也将被转换为大写。

是否有一些配置可以使对象创建和查询不区分大小写?例如,如果我有一个名为的表,是否countries可以将查询验证器配置为接受标识符COUNTRIEScountries在 SQL 查询中接受标识符?

我尝试将以下配置SqlParser为区分大小写false

Frameworks.newConfigBuilder().parserConfig(SqlParser.configBuilder().setCaseSensitive(false).build()).build()

然后将此框架配置传递给PlannerImpl使用的 in SqlToRelConverter,但是当我没有将标识符括在引号中以强制大小写时,SQL 验证器仍然失败。

标签: apache-calcitesql-parser

解决方案


我相信解析器的大小写敏感性在这里无关紧要。您需要在正在使用的目录阅读器上设置区分大小写。例如,如果您使用,则需要在配置期间传入的对象上CalciteCatalogReader设置CalciteConnectionProperty.CASE_SENSITIVE为。trueCalciteConnectionConfig


推荐阅读