You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2023/08/11 22:54:00 UTC
[jira] [Commented] (CALCITE-5918) Add MAP function (enabled in Spark library)
[ https://issues.apache.org/jira/browse/CALCITE-5918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17753422#comment-17753422 ]
Julian Hyde commented on CALCITE-5918:
--------------------------------------
For what it's worth, I don't think that standard SQL has a {{MAP}} type or {{MAP}} constructor. Calcite's existing {{MAP}} support was added in commit [645235525|https://github.com/apache/calcite/commits/64523552520635e51fd731b64a13663f45b158d1] and I don't even remember which SQL dialect we based {{MAP}} on. ({{ARRAY}} and {{MULTISET}} are based on the SQL standard.)
An example of a {{MAP}} constructor is:
{code}
MAP ['washington', 1, 'obama', 44]
{code}
(This should be added to the table in the [SQL reference|https://calcite.apache.org/docs/reference.html#non-scalar-types].)
I guess this would be
{code}
MAP('washington', 1, 'obama', 44)
{code}
in your proposed syntax.
I have no objection to adding a {{MAP}} constructor consistent with Spark, just as we did for {{ARRAY}} in CALCITE-5624.
> Add MAP function (enabled in Spark library)
> -------------------------------------------
>
> Key: CALCITE-5918
> URL: https://issues.apache.org/jira/browse/CALCITE-5918
> Project: Calcite
> Issue Type: New Feature
> Components: core
> Affects Versions: 1.35.0
> Reporter: Guillaume Massé
> Priority: Minor
>
> Apache Spark map constructor is different than the standard SQL:
> [https://spark.apache.org/docs/3.4.0/api/sql/index.html#map]
>
> {code:java}
> SELECT map(1.0, '2', 3.0, '4');
> // {1.0:"2",3.0:"4"} {code}
>
> related PR that can help implement this: https://github.com/apache/calcite/pull/3141
--
This message was sent by Atlassian Jira
(v8.20.10#820010)