【问题标题】:Quoting error when executing a Drill query from JetBrains JDBC driver从 JetBrains JDBC 驱动程序执行 Drill 查询时引用错误
【发布时间】: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

标签: jdbc jetbrains-ide apache-drill intellij-datagrip


【解决方案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 驱动程序存在问题。作为一种解决方法,在 PreferencesDatabaseData Views 中关闭 Limit page size to 选项并手动设置您的查询。例如:SELECT * FROM cp."employee.json" LIMIT 100.
  • 另外,您可以跳过 quoting_identifiers 选项并为每个会话设置它ALTER SESSION SET planner.parser.quoting_identifiers = '"'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多