从 JetBrains JDBC 驱动程序执行 Drill 查询时引用错误
Posted
技术标签:
【中文标题】从 JetBrains JDBC 驱动程序执行 Drill 查询时引用错误【英文标题】:Quoting error when executing a Drill query from JetBrains JDBC driver 【发布时间】:2020-05-12 13:11:07 【问题描述】:我在 JetBrans (Rider 2019.2) 中有一个自定义数据源驱动程序,它使用 apache-drill-1.17.jar JDBC 驱动程序(官方)。
使用驱动会出现这个错误:
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
从错误中可以明显看出,Rider 尝试使用反引号标识符执行此隐藏查询:
ALTER SESSION SET `exec.query.max_rows`=501
问题是目标钻取中的quoting_identifiers
没有设置为`(反引号),而是设置为"(双引号)。
作为连接字符串,我使用的是:jdbc:drill:drillbit=my-drill-instance;quoting_identifiers='"'
有没有办法告诉驱动程序在隐藏查询中使用双引号?
【问题讨论】:
目前无法直接更改报价。我根据您的描述提交了issue DBE-10801。 【参考方案1】:Manual shows,该选项应该不带引号传递:
jdbc:drill:zk=local;quoting_identifiers=[
jdbc:drill:drillbit=my-drill-instance;quoting_identifiers="
【讨论】:
我试过了。此示例引发错误:Connect string 'drillbit=my-drillbit;quoting_identifiers="' contains unterminated quoted value ''
我的错,正确的是jdbc:drill:drillbit=localhost;quoting_identifiers='"'
。但是在设置正确的LIMIT
值时,Drill JDBC 驱动程序存在问题。作为一种解决方法,在 Preferences → Database → Data Views 中关闭 Limit page size to 选项并手动设置您的查询。例如:SELECT * FROM cp."employee.json" LIMIT 100
.
另外,您可以跳过 quoting_identifiers 选项并为每个会话设置它ALTER SESSION SET planner.parser.quoting_identifiers = '"'
。以上是关于从 JetBrains JDBC 驱动程序执行 Drill 查询时引用错误的主要内容,如果未能解决你的问题,请参考以下文章