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

Ran Tao commented on CALCITE-6061:
----------------------------------

In general, I agree with you, but I don't agree with you very much about the 
test. For the test, we can ensure that the order is fixed through other way, 
but from a runtime perspective, should we return a hashmap?

> MapValueConstructor/MapQueryConstructor use LinkedHashMap erroneously
> ---------------------------------------------------------------------
>
>                 Key: CALCITE-6061
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6061
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 1.35.0
>            Reporter: Ran Tao
>            Priority: Major
>
> when we call:
> {code:java}
> select map[1,2,3,4,5,6];{code}
> The order of results returned is the same every time. because calcite use 
> LinkedHashMap for storage. But semantically, the order should not be 
> guaranteed just like MULTISET.
> we can see other engines such as apache spark/flink just use HashMap in this 
> case.
> {code:java}
> Flink SQL> select map[1,2,3,4,5,6];
> +----+--------------------------------+
> | op |                         EXPR$0 |
> +----+--------------------------------+
> | +I |                {5=6, 1=2, 3=4} |
> +----+--------------------------------+
> Received a total of 1 row {code}
> it will return different order when you call it.
> [https://github.com/apache/flink/blob/a2681f6a85aaad21179f91e03a91b4a05158841e/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/ExprCodeGenerator.scala#L711]



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

Reply via email to