是否可以将Apache Calcite标识符配置为不区分大小写?

时间:2019-03-27 19:58:52

标签: apache-calcite sql-parser

Calcite SQL语言参考(https://calcite.apache.org/docs/reference.html)表示以下内容:

  

在方解石中,将标识符与所引用对象的名称匹配是区分大小写的。但是请记住,未匹配的标识符在匹配之前会隐式转换为大写,如果引用的对象是使用未引用的标识符作为名称创建的,则其名称也将转换为大写。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我认为解析器上的大小写无关。您需要在使用的目录阅读器上设置区分大小写。例如,如果您使用CalciteCatalogReader,则需要在配置期间传递的CalciteConnectionProperty.CASE_SENSITIVE对象上将true设置为CalciteConnectionConfig