sql Avatica 方解石中的 'IN' 语法问题

sql issue of 'IN' syntax in Avatica calcite

我正在使用 Avatica 方解石作为 JDBC 驱动程序来查询 Druid DB。我发现 'IN' 语法后跟的元素不能超过 19 个。例如

SELECT * FROM ds1 WHERE city_id IN 
    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19) 

这行得通,但有一个错误:

SELECT * FROM ds1 WHERE city_id IN 
    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) 

如何将 'IN' 语法用于超过 19 个元素?

https://github.com/druid-io/druid/issues/4203 中描述了这不起作用的原因。它应该在 Calcite 1.14 发布后在 Druid SQL 中修复,这将让我们更多地自定义它的行为。

在那之前,尝试@melpomene 建议的解决方法,它应该有效:

SELECT * FROM ds1 WHERE
     city_id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
  OR city_id IN (20,21,22)