mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge branch 'MDEV-16620' of https://github.com/markus456/server into bb-10.5-hf
Conflicts: sql/sql_yacc.yy
This commit is contained in:
@ -626,6 +626,96 @@ SELECT * FROM t1 WHERE CASE WHEN JSON_OBJECT('x', (SELECT MAX(a=2) FROM t1))='{"
|
||||
SELECT * FROM t1 WHERE CASE WHEN JSON_OBJECT('x', (SELECT MAX(a=2) FROM t1))='{"x": false}' THEN a END;
|
||||
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
-- echo #
|
||||
-- echo # MDEV-16620 JSON_ARRAYAGG
|
||||
-- echo #
|
||||
|
||||
-- echo #
|
||||
-- echo # Integer aggregation
|
||||
-- echo #
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1, 1),(2, 1), (1, 1),(2, 1), (3, 2),(2, 2),(2, 2),(2, 2);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY b;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- echo #
|
||||
-- echo # Real aggregation
|
||||
-- echo #
|
||||
CREATE TABLE t1 (a FLOAT, b DOUBLE, c DECIMAL(10, 2));
|
||||
INSERT INTO t1 VALUES (1.0, 2.0, 3.0),(1.0, 3.0, 9.0),(1.0, 4.0, 16.0),(1.0, 5.0, 25.0);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b), JSON_ARRAYAGG(c) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- echo #
|
||||
-- echo # Boolean aggregation
|
||||
-- echo #
|
||||
CREATE TABLE t1 (a BOOLEAN, b BOOLEAN);
|
||||
INSERT INTO t1 VALUES (TRUE, TRUE), (TRUE, FALSE), (FALSE, TRUE), (FALSE, FALSE);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY b;
|
||||
SELECT JSON_ARRAYAGG(TRUE), JSON_ARRAYAGG(FALSE) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- echo #
|
||||
-- echo # Aggregation of strings with quoted
|
||||
-- echo #
|
||||
CREATE TABLE t1 (a VARCHAR(80));
|
||||
INSERT INTO t1 VALUES
|
||||
('"double_quoted_value"'), ("'single_quoted_value'"),
|
||||
('"double_quoted_value"'), ("'single_quoted_value'");
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- echo #
|
||||
-- echo # Strings and NULLs
|
||||
-- echo #
|
||||
CREATE TABLE t1 (a INT, b VARCHAR(80));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, "Hello"),(1, "World"), (2, "This"),(2, "Will"), (2, "Work"),(2, "!"), (3, NULL),
|
||||
(1, "Hello"),(1, "World"), (2, "This"),(2, "Will"), (2, "Work"),(2, "!"), (3, NULL);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(b)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY a;
|
||||
|
||||
-- echo #
|
||||
-- echo # DISTINCT and LIMIT
|
||||
-- echo #
|
||||
SELECT JSON_ARRAYAGG(b LIMIT 1) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(b LIMIT 2) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(b LIMIT 1) FROM t1 GROUP BY b;
|
||||
SELECT JSON_ARRAYAGG(b LIMIT 2) FROM t1 GROUP BY a;
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(DISTINCT b) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a LIMIT 2) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(DISTINCT b LIMIT 2) FROM t1;
|
||||
|
||||
-- echo #
|
||||
-- echo # JSON aggregation
|
||||
-- echo #
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(JSON_ARRAY(a, b))) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(JSON_ARRAY(a, b)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(JSON_ARRAY(a, b)) FROM t1 GROUP BY a;
|
||||
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b))) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) FROM t1;
|
||||
SELECT JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) FROM t1 GROUP BY a;
|
||||
|
||||
-- echo #
|
||||
-- echo # Error checks
|
||||
-- echo #
|
||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
SELECT JSON_ARRAYAGG(a, b) FROM t1;
|
||||
|
||||
--error ER_INVALID_GROUP_FUNC_USE
|
||||
SELECT JSON_ARRAYAGG(JSON_ARRAYAGG(a, b)) FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
|
Reference in New Issue
Block a user