Я использую org.teiid.query.parser.QueryParser для анализа строки SQL в объекте Query. Он отлично работает для идентификаторов в кавычках (двойные кавычки). Однако, это вызывает ошибку при разборе идентификаторов, заключенных в квадратные скобки, одинарные кавычки и обратные кавычки.
Получение приведенной ниже ошибки: java .lang.Exception: org.teiid.api.exception.query.QueryParserException: TEIID31100 Ошибка синтаксического анализа: Обнаружено "select [*] [[*] dbo.empid]" в строке 1, столбец 8. Ожидал: «символ» | "дата" | "время" | "метка времени" | "литой" | "конвертировать" | "все" | "любой" | "массив" | "array_agg" ...
Вот как я его использую: Query query = (Query) QueryParser.getQueryParser (). parseCommand (sqlString, new ParseInfo ());
The ParseInfo Параметр в приведенном выше операторе имеет свойство ANSI_QUOTED_DEFAULT как true, благодаря чему он может анализировать строку sql с идентификаторами в двойных кавычках. Например: выберите «dbo.empid» из «dbo». «Emp» «Ex»
Мое приложение требует для анализа SQL строк с другими типами цитирования, как указано ниже.
Квадратные скобки: выберите [dbo.empid] из [dbo]. [Emp] [Ex]
Одинарные кавычки: выберите 'dbo.empid' From 'dbo '.'Emp' 'Ex'
Backticks: Выбрать dbo.empid
Из dbo
. Emp
Ex
Анализатор запросов не выполняет синтаксический анализ трех вышеприведенных операторов sql.
Есть ли какая-либо настройка свойства teiid или любая другая конфигурация teiid, необходимая в коде для разрешения любого типа цитирования?