[ 
https://issues.apache.org/jira/browse/CALCITE-5624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17711079#comment-17711079
 ] 

Guillaume Massé commented on CALCITE-5624:
------------------------------------------

Okay, I figured it out, it's because the double parens make the parser decent 
on the expression branch. To solve this issue, I use `ExprContext.ACCEPT_ALL` 
to parse the argument then with some Java code we can branch on either array 
constructor or array query. An additional assertion ensures we don't accept 
more than what we accepted before this code change was introduced. I added 
extra tests on the array query constructor parsing.

> Cannot parse array function for Spark Dialect
> ---------------------------------------------
>
>                 Key: CALCITE-5624
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5624
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.34.0
>            Reporter: Guillaume Massé
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> The following query is valid in Apache Spark.
> {code:java}
> spark-shell
> scala> spark.sql("""select array(1, 2, 3)""")
> res1: org.apache.spark.sql.DataFrame = [array(1, 2, 3): array<int>]{code}
> However, it would fail to parse in Apache Calcite
>  
> AtomicRowExpression should not have ArrayConstructor for Apache Spark. Arrays 
> are constructed by calling the array function 
> ([https://spark.apache.org/docs/latest/api/sql/index.html#array]).
>  
> {code:java}
> array()
> array(1)
> array(1, 2, 3){code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to