Ошибка цитирования при выполнении запроса Drill из драйвера JDBC JetBrains

У меня есть собственный драйвер источника данных в JetBrans (Rider 2019.2), который использует драйвер JDBC apache-Drill-1.17.jar (официальный).

Использование драйвера приводит к этой ошибке:

SELECT * FROM dfs.my_parquets."Test" limit 10;
--
PARSE ERROR: Lexical error at line 1, column 19. Encountered: "`" (96), after : ""  
SQL Query: ALTER SESSION SET `exec.query.max_rows`=501 

Из ошибки очевидно, что Райдер пытается выполнить этот скрытый запрос с идентификаторами с обратными кавычками:

ALTER SESSION SET `exec.query.max_rows`=501

Проблема в том, что quoting_identifiers в целевой детализации не установлен на ` (обратная кавычка), а на " (двойные кавычки).

В качестве строки подключения я использую это: jdbc:drill:drillbit=my-drill-instance;quoting_identifiers='"'

Есть ли способ указать драйверу использовать двойные кавычки в скрытых запросах?


person rudolfdobias    schedule 12.05.2020    source источник
comment
На данный момент нет возможности напрямую менять котировки. Я подал проблему DBE-10801 на основе вашего описания.   -  person Vasilii Chernov    schedule 16.05.2020


Ответы (1)


Показывает вручную, этот параметр следует передавать без кавычек:

jdbc:drill:zk=local;quoting_identifiers=[

jdbc:drill:drillbit=my-drill-instance;quoting_identifiers="

person Vasilii Chernov    schedule 18.05.2020
comment
Я пробовал это. В этом примере возникает ошибка: Connect string 'drillbit=my-drillbit;quoting_identifiers="' contains unterminated quoted value '' - person rudolfdobias; 18.05.2020
comment
Мой плохой, правильный - jdbc:drill:drillbit=localhost;quoting_identifiers='"'. Но в драйвере Drill JDBC есть проблема с установкой правильного значения LIMIT. В качестве временного решения отключите параметр Ограничить размер страницы в НастройкиБаза данныхПредставления данных и установите его вручную для ваши запросы. Например: SELECT * FROM cp."employee.json" LIMIT 100. - person Vasilii Chernov; 19.05.2020
comment
Кроме того, вы можете пропустить параметр quoting_identifiers и установить его для каждого сеанса ALTER SESSION SET planner.parser.quoting_identifiers = '"'. - person Vasilii Chernov; 19.05.2020