[ 
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)

Reply via email to