[
https://issues.apache.org/jira/browse/CALCITE-7107?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18009907#comment-18009907
]
Faisal commented on CALCITE-7107:
---------------------------------
[~jensen]
When I pass in the sql
"Select * from someTable where hasAll(anArrayColumn, ['value1', 'value2']"
. The exception I get is:
{code:java}
org.apache.calcite.sql.parser.SqlParseException: Encountered ", [" at line 1,
column 51.
Was expecting one of:
")" ...
"ORDER" ...
"LIMIT" ...
"OFFSET" ...
"FETCH" ...
"," <IDENTIFIER> ...
"," <HYPHENATED_IDENTIFIER> ...
"," <QUOTED_IDENTIFIER> ...
"," <BACK_QUOTED_IDENTIFIER> ...
"," <BIG_QUERY_BACK_QUOTED_IDENTIFIER> ...
"," <BRACKET_QUOTED_IDENTIFIER> ... "," <UNICODE_QUOTED_IDENTIFIER> ...
"," "DEFAULT" ...
"," "(" ...
"," "+" ...
"," "-" ...
"," "INTERVAL" ...
"," <UNSIGNED_INTEGER_LITERAL> ...
"," <DECIMAL_NUMERIC_LITERAL> ...
"," <APPROX_NUMERIC_LITERAL> ...
"," <BINARY_STRING_LITERAL> ...
"," <PREFIXED_STRING_LITERAL> ...
"," <QUOTED_STRING> ...
"," <UNICODE_STRING_LITERAL> ...
"," <C_STYLE_ESCAPED_STRING_LITERAL> ...
"," <BIG_QUERY_DOUBLE_QUOTED_STRING> ...
"," <BIG_QUERY_QUOTED_STRING> ...
"," "NULL" ...
"," <LBRACE_D> ...
"," <LBRACE_T> ...
"," <LBRACE_TS> ...
"," "DATE" ...
"," "DATETIME" ...
"," "TIME" ...
"," "UUID" ...
"," "TIMESTAMP" ...
"," "?" ...
"," "SAFE_CAST" ...
"," "TRY_CAST" ...
"," "DATE_PART" ...
"," "DATEADD" ...
"," "DATEDIFF" ...
"," "DATEPART" ...
"," "NEXT" ...
"," <LBRACE_FN> ...
"," "GROUPING" ...
"," "LEFT" ...
"," "RIGHT" ...
"," "SOME" ...
"," "NEW" ...
"," "CASE" ...
"," "CURRENT" ...
"," "CURSOR" ...
"," "ROW" ...
"," "TABLE" ...
"=>" ...
"->" ...
"." ...
"NOT" ...
"IN" ...
"<" ...
"<=" ...
">" ...
">=" ...
"=" ...
"<>" ...
"!=" ...
"BETWEEN" ...
"LIKE" ...
"ILIKE" ...
"RLIKE" ...
"SIMILAR" ...
"!" ...
"~" ...
"::" ...
"<=>" ...
"+" ...
"-" ...
"*" ...
"/" ...
"%" ...
"||" ...
"AND" ...
"OR" ...
"IS" ...
"MEMBER" ...
"SUBMULTISET" ...
"CONTAINS" ...
"OVERLAPS" ...
"EQUALS" ...
"PRECEDES" ...
"SUCCEEDS" ...
"IMMEDIATELY" ...
"MULTISET" ...
"[" ...
"FORMAT" ...
"UNION" ...
"INTERSECT" ...
"EXCEPT" ...
"MINUS" ...
"PARTITION" ...
"(" ...
at
org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.convertException(SqlBabelParserImpl.java:427)
at
org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.normalizeException(SqlBabelParserImpl.java:173)
at
org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:159)
at
org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:174)
at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:199)
at io.fluenta.query.builder.utils.SqlUtils.prettyPrint(SqlUtils.java:61)
... 69 more
Caused by: org.apache.calcite.sql.parser.babel.ParseException: Encountered ",
[" at line 1, column 51.
Was expecting one of:
")" ...
"ORDER" ...
"LIMIT" ...
"OFFSET" ...
"FETCH" ...
"," <IDENTIFIER> ...
"," <HYPHENATED_IDENTIFIER> ...
"," <QUOTED_IDENTIFIER> ...
"," <BACK_QUOTED_IDENTIFIER> ...
"," <BIG_QUERY_BACK_QUOTED_IDENTIFIER> ...
"," <BRACKET_QUOTED_IDENTIFIER> ...
"," <UNICODE_QUOTED_IDENTIFIER> ...
"," "DEFAULT" ...
"," "(" ...
"," "+" ...
"," "-" ...
"," "INTERVAL" ...
"," <UNSIGNED_INTEGER_LITERAL> ...
"," <DECIMAL_NUMERIC_LITERAL> ...
"," <APPROX_NUMERIC_LITERAL> ...
"," <BINARY_STRING_LITERAL> ...
"," <PREFIXED_STRING_LITERAL> ...
"," <QUOTED_STRING> ...
"," <UNICODE_STRING_LITERAL> ...
"," <C_STYLE_ESCAPED_STRING_LITERAL> ...
"," <BIG_QUERY_DOUBLE_QUOTED_STRING> ...
"," <BIG_QUERY_QUOTED_STRING> ...
"," "NULL" ...
"," <LBRACE_D> ...
"," <LBRACE_T> ...
"," <LBRACE_TS> ...
"," "DATE" ...
"," "DATETIME" ...
"," "TIME" ...
"," "UUID" ...
"," "TIMESTAMP" ...
"," "?" ...
"," "SAFE_CAST" ...
"," "TRY_CAST" ...
"," "DATE_PART" ...
"," "DATEADD" ...
"," "DATEDIFF" ...
"," "DATEPART" ...
"," "NEXT" ...
"," <LBRACE_FN> ...
"," "GROUPING" ...
"," "LEFT" ...
"," "RIGHT" ...
"," "SOME" ...
"," "NEW" ...
"," "CASE" ...
"," "CURRENT" ...
"," "CURSOR" ...
"," "ROW" ...
"," "TABLE" ...
"=>" ...
"->" ...
"." ...
"NOT" ...
"IN" ...
"<" ...
"<=" ...
">" ...
">=" ...
"=" ...
"<>" ...
"!=" ...
"BETWEEN" ...
"LIKE" ...
"ILIKE" ...
"RLIKE" ...
"SIMILAR" ...
"!" ...
"~" ...
"::" ...
"<=>" ...
"+" ...
"-" ...
"*" ...
"/" ...
"%" ...
"||" ...
"AND" ...
"OR" ...
"IS" ...
"MEMBER" ...
"SUBMULTISET" ...
"CONTAINS" ...
"OVERLAPS" ...
"EQUALS" ...
"PRECEDES" ...
"SUCCEEDS" ...
"IMMEDIATELY" ...
"MULTISET" ...
"[" ...
"FORMAT" ...
"UNION" ...
"INTERSECT" ...
"EXCEPT" ...
"MINUS" ...
"PARTITION" ...
"(" ...{code}
> Parsing clickhouse query that contains an array
> -----------------------------------------------
>
> Key: CALCITE-7107
> URL: https://issues.apache.org/jira/browse/CALCITE-7107
> Project: Calcite
> Issue Type: Bug
> Reporter: Faisal
> Priority: Major
>
> Hi
> I'm using the calcite-babel 1.40.0 lib and am doing some manipulation on sql
> for Clickhouse. Specifically we're using array functions in the sql - e.g.
> {code:java}
> "Select * from someTable where hasAll(anArrayColumn, ['value1', 'value2']"
> {code}
> When parsing this, calcite throws an exception relating to the "[" character.
> Clickhouse itself supports using this array construct ['value1', 'value2'] or
> using array('value1, 'value2') where "array" is case sensitive in clickhouse.
> If I send in:
> {code:java}
> "Select * from someTable where hasAll(anArrayColumn, array('value1,
> 'value2')" {code}
> for calcite parsing, then calcite detects "array" as a keyword and uppercases
> it by default which does not work in Clickhouse, resulting in
> {code:java}
> "SELECT * FROM someTable WHERE hasAll(anArrayColumn, ARRAY('value1',
> 'value2'))"{code}
> I understand that I can set calcite to lower case keywords by default, but
> that may have knock on consequences
> I am using:
> {code:java}
> final var conf= SqlParser.config().withCaseSensitive(true)
> .withUnquotedCasing(Casing.UNCHANGED).withQuotedCasing(Casing.UNCHANGED)
> .withQuoting(Quoting.DOUBLE_QUOTE).withParserFactory(SqlBabelParserImpl.FACTORY);
> final var sqlParser = SqlParser.create(sql, conf);
> final var sqlNode = sqlParser.parseStmt();{code}
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)