You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: enginetest/queries/script_queries.go
+162-5Lines changed: 162 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -1675,7 +1675,7 @@ CREATE TABLE tab3 (
1675
1675
"INSERT INTO tab2 VALUES (1, 'b'), (2, 'm'), (3, 'g')",
1676
1676
"SELECT m.id, t.s FROM tab1 m JOIN tab2 t on m.id = t.i2 ORDER BY t.s DESC LIMIT 1 INTO @myId, @myText",
1677
1677
// TODO: union statement does not handle order by and limit clauses
1678
-
//"SELECT id FROM tab1 UNION select s FROM tab2 LIMIT 1 INTO @myUnion",
1678
+
//"SELECT id FROM tab1 UNION select s FROM tab2 LIMIT 1 INTO @myUnion",
1679
1679
"SELECT id FROM tab1 WHERE id > 3 UNION select s FROM tab2 WHERE s < 'f' INTO @mustSingleVar",
1680
1680
},
1681
1681
Assertions: []ScriptTestAssertion{
@@ -2760,6 +2760,163 @@ CREATE TABLE tab3 (
2760
2760
},
2761
2761
},
2762
2762
},
2763
+
{
2764
+
Name: "Group Concat with Subquery in ORDER BY",
2765
+
Dialect: "mysql",
2766
+
SetUpScript: []string{
2767
+
"CREATE TABLE test_data (id INT PRIMARY KEY, name VARCHAR(50), age INT, category VARCHAR(10))",
2768
+
`INSERT INTO test_data VALUES
2769
+
(1, 'Alice', 25, 'A'),
2770
+
(2, 'Bob', 30, 'B'),
2771
+
(3, 'Charlie', 22, 'A'),
2772
+
(4, 'Diana', 28, 'C'),
2773
+
(5, 'Eve', 35, 'B'),
2774
+
(6, 'Frank', 26, 'A')`,
2775
+
},
2776
+
Assertions: []ScriptTestAssertion{
2777
+
{
2778
+
Skip: true,
2779
+
Query: "SELECT category, group_concat(name ORDER BY (SELECT COUNT(*) FROM test_data t2 WHERE t2.category = test_data.category AND t2.age < test_data.age)) FROM test_data GROUP BY category ORDER BY category",
Query: "SELECT category, group_concat(name ORDER BY (SELECT MAX(age) FROM test_data t2 WHERE t2.id <= test_data.id)) FROM test_data GROUP BY category ORDER BY category",
Query: "SELECT category_id, GROUP_CONCAT(name ORDER BY (SELECT rating FROM suppliers WHERE suppliers.id = products.supplier_id) DESC, id ASC) FROM products GROUP BY category_id ORDER BY category_id",
Query: "SELECT category_id, GROUP_CONCAT(DISTINCT supplier_id ORDER BY (SELECT rating FROM suppliers WHERE suppliers.id = products.supplier_id)) FROM products GROUP BY category_id",
2819
+
Expected: []sql.Row{{1, "2,1"}, {2, "3"}},
2820
+
},
2821
+
{
2822
+
Skip: true,
2823
+
Query: "SELECT GROUP_CONCAT(name ORDER BY (SELECT priority FROM categories WHERE categories.id = products.category_id), price) FROM products",
Query: "SELECT category_id, GROUP_CONCAT(name ORDER BY (SELECT AVG(price) FROM products p2 WHERE p2.category_id = products.category_id) DESC, name) FROM products GROUP BY category_id ORDER BY category_id",
Query: "SELECT GROUP_CONCAT(name ORDER BY (SELECT name, value FROM test_table t2 WHERE t2.id = test_table.id)) FROM test_table",
2842
+
ExpectedErr: sql.ErrInvalidOperandColumns,
2843
+
},
2844
+
{
2845
+
Query: "SELECT GROUP_CONCAT(name ORDER BY (SELECT value FROM test_table)) FROM test_table",
2846
+
ExpectedErr: sql.ErrExpectedSingleRow,
2847
+
},
2848
+
},
2849
+
},
2850
+
{
2851
+
Name: "Group Concat Subquery ORDER BY Additional Edge Cases",
2852
+
Dialect: "mysql",
2853
+
SetUpScript: []string{
2854
+
"CREATE TABLE complex_test (id INT PRIMARY KEY, name VARCHAR(50), value INT, category VARCHAR(10), created_at DATE)",
2855
+
"INSERT INTO complex_test VALUES (1, 'Alpha', 100, 'X', '2023-01-01')",
2856
+
"INSERT INTO complex_test VALUES (2, 'Beta', 50, 'Y', '2023-01-15')",
2857
+
"INSERT INTO complex_test VALUES (3, 'Gamma', 75, 'X', '2023-02-01')",
2858
+
"INSERT INTO complex_test VALUES (4, 'Delta', 25, 'Z', '2023-02-15')",
2859
+
"INSERT INTO complex_test VALUES (5, 'Epsilon', 90, 'Y', '2023-03-01')",
2860
+
},
2861
+
Assertions: []ScriptTestAssertion{
2862
+
{
2863
+
// Test with subquery returning NULL values
2864
+
Skip: true,
2865
+
Query: "SELECT category, GROUP_CONCAT(name ORDER BY (SELECT CASE WHEN complex_test.value > 80 THEN NULL ELSE complex_test.value END), name) FROM complex_test GROUP BY category ORDER BY category",
// Test with correlated subquery using multiple tables
2870
+
Skip: true,
2871
+
Query: "SELECT GROUP_CONCAT(name ORDER BY (SELECT COUNT(*) FROM complex_test c2 WHERE c2.category = complex_test.category AND c2.value > complex_test.value), name) FROM complex_test",
// Test with subquery using aggregate functions with HAVING
2876
+
Skip: true,
2877
+
Query: "SELECT category, GROUP_CONCAT(name ORDER BY (SELECT AVG(value), name FROM complex_test c2 WHERE c2.id <= complex_test.id HAVING AVG(value) > 50) DESC) FROM complex_test GROUP BY category ORDER BY category",
Query: "SELECT GROUP_CONCAT(DISTINCT category ORDER BY (SELECT SUM(value) FROM complex_test c2 WHERE c2.category = complex_test.category) DESC SEPARATOR '|') FROM complex_test",
2883
+
Expected: []sql.Row{{"X|Y|Z"}},
2884
+
},
2885
+
{
2886
+
// Test with nested subqueries
2887
+
Skip: true,
2888
+
Query: "SELECT GROUP_CONCAT(name ORDER BY (SELECT COUNT(*) FROM complex_test c2 WHERE c2.value > (SELECT MIN(value) FROM complex_test c3 WHERE c3.category = complex_test.category))) FROM complex_test",
0 commit comments