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

Julian Hyde commented on CALCITE-5624:
--------------------------------------

Syntactically, Spark's {{array}} and {{map}} are functions. So the simplest way 
to enable them would be to add them as functions in the 'spark' library.

The implementation might be a bit tricky because they are reserved words. But 
ideally the parser would allow all of the following:
{code}
array(1, 2, 3)
array [1, 2, 3]
map(1, true, 2 false)
map [1, true, 2, false]
{code}
The syntax doesn't seem ambiguous, so there's likely a way to achieve it simply 
in the parser.

> 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: 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