This is an automated email from the ASF dual-hosted git repository.
jooger pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 0edec7a349 IGNITE-21944: Cover SQL F851(<order by clause> in
subqueries) feature by tests (#3773)
0edec7a349 is described below
commit 0edec7a3497fc9d3b3b2be8a1f5165765eaebce4
Author: ygerzhedovich <[email protected]>
AuthorDate: Thu May 16 16:34:08 2024 +0300
IGNITE-21944: Cover SQL F851(<order by clause> in subqueries) feature by
tests (#3773)
---
.../integrationTest/sql/order/test_order_by.test | 24 ++-
.../sql/order/test_order_by.test_ignore | 174 ---------------------
.../sql/order/test_order_by_in_subquery.test | 60 +++++++
3 files changed, 78 insertions(+), 180 deletions(-)
diff --git
a/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test
b/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test
index 5ad4666470..810c26745b 100644
--- a/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test
+++ b/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test
@@ -106,6 +106,13 @@ SELECT b, a FROM test WHERE a < 13 ORDER BY b DESC;
22 11
21 12
+# order by expression
+query IR
+SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY b % 2;
+----
+0 24
+1 12
+
# order by expression that is not in SELECT
query II
SELECT b % 2 AS f, a FROM test ORDER BY b % 4, a;
@@ -114,10 +121,15 @@ SELECT b % 2 AS f, a FROM test ORDER BY b % 4, a;
0 11
0 13
-# ORDER BY after union
-query I
-SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY k;
+# ORDER BY alias
+query IR
+SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY f;
----
-1
-2
-3
+0 24
+1 12
+
+query IR
+SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY 1;
+----
+0 24
+1 12
diff --git
a/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test_ignore
b/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test_ignore
deleted file mode 100644
index fdc6a5b0db..0000000000
--- a/modules/sql-engine/src/integrationTest/sql/order/test_order_by.test_ignore
+++ /dev/null
@@ -1,174 +0,0 @@
-# name: test/sql/order/test_order_by.test
-# description: Test ORDER BY keyword
-# group: [order]
-# Ignored: https://issues.apache.org/jira/browse/IGNITE-14885
-
-statement ok
-PRAGMA enable_verification
-
-statement ok
-CREATE TABLE test (a INTEGER, b INTEGER);
-
-statement ok
-INSERT INTO test VALUES (11, 22), (12, 21), (13, 22);
-
-# simple ORDER BY
-query I
-SELECT b FROM test ORDER BY a DESC;
-----
-22
-21
-22
-
-query II
-SELECT a, b FROM test ORDER BY a;
-----
-11 22
-12 21
-13 22
-
-query II
-SELECT a, b FROM test ORDER BY a DESC;
-----
-13 22
-12 21
-11 22
-
-# ORDER BY on multiple columns
-query II
-SELECT a, b FROM test ORDER BY b, a;
-----
-12 21
-11 22
-13 22
-
-# ORDER BY using select indices
-query II
-SELECT a, b FROM test ORDER BY 2, 1;
-----
-12 21
-11 22
-13 22
-
-query II
-SELECT a, b FROM test ORDER BY b DESC, a;
-----
-11 22
-13 22
-12 21
-
-query II
-SELECT a, b FROM test ORDER BY b, a DESC;
-----
-12 21
-13 22
-11 22
-
-# TOP N queries
-query II
-SELECT a, b FROM test ORDER BY b, a DESC LIMIT 1;
-----
-12 21
-
-# Offset
-query II
-SELECT a, b FROM test ORDER BY b, a DESC LIMIT 1 OFFSET 1;
-----
-13 22
-
-# Offset without limit
-query II
-SELECT a, b FROM test ORDER BY b, a DESC OFFSET 1;
-----
-13 22
-11 22
-
-query II
-SELECT a, b FROM test WHERE a < 13 ORDER BY b;
-----
-12 21
-11 22
-
-query II
-SELECT a, b FROM test WHERE a < 13 ORDER BY 2;
-----
-12 21
-11 22
-
-query II
-SELECT a, b FROM test WHERE a < 13 ORDER BY b DESC;
-----
-11 22
-12 21
-
-query II
-SELECT b, a FROM test WHERE a < 13 ORDER BY b DESC;
-----
-22 11
-21 12
-
-# order by expression
-query IR
-SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY b % 2;
-----
-0 24.000000
-1 12.000000
-
-# order by expression that is not in SELECT
-query II
-SELECT b % 2 AS f, a FROM test ORDER BY b % 4, a;
-----
-1 12
-0 11
-0 13
-
-# ORDER BY alias
-query IR
-SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY f;
-----
-0 24.000000
-1 12.000000
-
-query IR
-SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY 1;
-----
-0 24.000000
-1 12.000000
-
-# ORDER BY after union
-query I
-SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY k;
-----
-1
-2
-3
-
-# ORDER BY on alias in right-most query
-# CONTROVERSIAL: SQLite allows both "k" and "l" to be referenced here,
Postgres and MonetDB give an error.
-query I
-SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY l;
-----
-1
-2
-3
-
-# computations with aliases are not allowed though
-statement error
-SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY 1-k;
-
-# but ordering on computation elements should work
-query I
-SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY a-10;
-----
-1
-2
-3
-
-query I
-SELECT a-10 AS k FROM test UNION SELECT a-11 AS l FROM test ORDER BY a-11;
-----
-0
-1
-2
-3
-
diff --git
a/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
b/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
new file mode 100644
index 0000000000..355358f792
--- /dev/null
+++
b/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
@@ -0,0 +1,60 @@
+# name: test/sql/order/test_order_by_in_subquery.test
+# description: SQL F851(<order by clause> in subqueries)
+# feature: F851
+# group: [order]
+
+statement ok
+PRAGMA enable_verification
+
+statement ok
+CREATE TABLE test (a BIGINT, b BIGINT);
+
+statement ok
+INSERT INTO test VALUES (11, 22), (12, 21), (13, 22);
+
+# ORDER BY in subquery
+query II
+SELECT t1.a, (SELECT b FROM test WHERE a > t1.a ORDER BY b LIMIT 1) FROM test
t1 ORDER BY t1.a
+----
+11 21
+12 22
+13 NULL
+
+# ORDER BY after union
+query I
+SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY k;
+----
+1
+2
+3
+
+# ORDER BY on alias in right-most query should fail due to SQL standard say
that ORDER by will be apply to whole query in this case.
+statement error
+SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY l
+
+# ORDER BY on alias in right-most query but related just to the subquery.
+query I
+SELECT a-10 AS k FROM test UNION (SELECT a-10 AS l FROM test ORDER BY l)
+----
+1
+2
+3
+
+# computations with aliases are allowed
+query I
+SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY 1-k;
+----
+3
+2
+1
+
+# ORDER BY in left query should fail with parse error.
+statement error
+SELECT a-10 AS k FROM test ORDER by k UNION SELECT a-10 AS l FROM test;
+
+# ordering on computation elements with absent element in result query should
fail
+statement error
+SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY a-10;
+
+statement error
+SELECT a-10 AS k FROM test UNION SELECT a-11 AS l FROM test ORDER BY a-11;