Можно ли настроить идентификаторы Apache Calcite без учета регистра? - PullRequest
1 голос
/ 27 марта 2019

Справочник по языку SQL для Calcite (https://calcite.apache.org/docs/reference.html) говорит следующее:

В Calcite при сопоставлении идентификаторов с именем объекта, на который имеется ссылка, учитывается регистр. Но помните, что идентификаторы без кавычекперед сопоставлением неявно преобразуются в верхний регистр, и если объект, на который он ссылается, был создан с использованием идентификатора без кавычек для его имени, то его имя будет также преобразовано в верхний регистр.

Есть ли некоторыеконфигурация, чтобы сделать создание объекта и регистр нечувствительным к регистру? Например, если у меня есть таблица с именем countries, можно ли настроить валидатор запроса так, чтобы он принимал идентификаторы либо COUNTRIES, либо countries в запросе SQL?

Я попытался настроить SqlParser с учетом регистра false в следующем:

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

, а затем передал эту конфигурацию фреймворка в PlannerImpl, используемый в SqlToRelConverter, ноВалидатор SQL по-прежнему не работает, когда я не заключаю идентификатор в кавычки для принудительного применения регистра.

1 Ответ

0 голосов
/ 28 марта 2019

Я считаю, что чувствительность к регистру парсера здесь не имеет значения.Вы захотите установить чувствительность к регистру в читателе каталога, который вы используете.Например, если вы используете CalciteCatalogReader, вам нужно установить CalciteConnectionProperty.CASE_SENSITIVE на true для объекта CalciteConnectionConfig, который вы передаете во время настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...