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