mustafasrepo commented on code in PR #6332:
URL: https://github.com/apache/arrow-datafusion/pull/6332#discussion_r1193877535


##########
datafusion/core/tests/sqllogictests/test_files/groupby.slt:
##########
@@ -2010,3 +2010,201 @@ SELECT a, d,
 
 statement ok
 drop table annotated_data_infinite2;
+
+# create a table for testing
+statement ok
+CREATE TABLE sales_global (zip_code INT,
+          country VARCHAR(3),
+          sn INT,
+          ts TIMESTAMP,
+          currency VARCHAR(3),
+          amount FLOAT
+        ) as VALUES
+          (0, 'GRC', 0, '2022-01-01 06:00:00'::timestamp, 'EUR', 30.0),
+          (1, 'FRA', 1, '2022-01-01 08:00:00'::timestamp, 'EUR', 50.0),
+          (1, 'TUR', 2, '2022-01-01 11:30:00'::timestamp, 'TRY', 75.0),
+          (1, 'FRA', 3, '2022-01-02 12:00:00'::timestamp, 'EUR', 200.0),
+          (1, 'TUR', 4, '2022-01-03 10:00:00'::timestamp, 'TRY', 100.0),
+          (0, 'GRC', 4, '2022-01-03 10:00:00'::timestamp, 'EUR', 80.0)
+
+# test_ordering_sensitive_aggregation
+# ordering sensitive requirement should add a SortExec in the final plan. To 
satisfy amount ASC
+# in the aggregation
+statement ok
+set datafusion.execution.target_partitions = 1;
+
+statement ok
+set datafusion.optimizer.skip_failed_rules = false;
+
+query TT
+EXPLAIN SELECT country, (ARRAY_AGG(amount ORDER BY amount ASC)) AS amounts
+  FROM sales_global
+  GROUP BY country
+----
+logical_plan
+Projection: sales_global.country, ARRAYAGG(sales_global.amount) ORDER BY 
[sales_global.amount ASC NULLS LAST] AS amounts
+  Aggregate: groupBy=[[sales_global.country]], 
aggr=[[ARRAYAGG(sales_global.amount) ORDER BY [sales_global.amount ASC NULLS 
LAST]]]
+    TableScan: sales_global projection=[country, amount]
+physical_plan
+ProjectionExec: expr=[country@0 as country, ARRAYAGG(sales_global.amount) 
ORDER BY [sales_global.amount ASC NULLS LAST]@1 as amounts]
+  AggregateExec: mode=Single, gby=[country@0 as country], 
aggr=[ARRAYAGG(sales_global.amount)]
+    SortExec: expr=[amount@1 ASC NULLS LAST]
+      MemoryExec: partitions=1, partition_sizes=[1]
+
+
+query T?
+SELECT country, (ARRAY_AGG(amount ORDER BY amount ASC)) AS amounts
+  FROM sales_global
+  GROUP BY country
+----
+GRC [30.0, 80.0]
+FRA [50.0, 200.0]
+TUR [75.0, 100.0]
+
+# test_ordering_sensitive_aggregation2
+# We should be able to satisfy the finest requirement among all aggregators, 
when we have multiple aggregators.

Review Comment:
   Currently, we cannot support these kind of queries (because we cannot parse 
multiple requirement, 
[PR](https://github.com/sqlparser-rs/sqlparser-rs/pull/879) in the sqlparser 
fixes the problem. However, it is not merged yet, I am not sure when it will be 
available to datafusion.).  However, once this support is added. This case 
should be fine. I have added a test for this use case, we currently generate an 
error, once [this](https://github.com/sqlparser-rs/sqlparser-rs/pull/879) is 
added. We can change the test.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to