【问题标题】:Is it possible to configure Apache Calcite identifiers to be case insensitive?是否可以将 Apache Calcite 标识符配置为不区分大小写?
【发布时间】:2019-03-27 19:58:51
【问题描述】:

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

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

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

我尝试在下面将SqlParser 配置为区分大小写的false

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

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

【问题讨论】:

    标签: apache-calcite sql-parser


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 2015-08-24
      • 2019-02-10
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多