From 8b4be1b7f970c4dca8430a8b8d5a3cc8042e5043 Mon Sep 17 00:00:00 2001 From: mariadb-AndreyPiskunov Date: Wed, 2 Nov 2022 16:06:05 +0200 Subject: [PATCH] func json_arrayagg test adjustments --- .../basic/r/func_jsonarrayagg.result | 17 ++----- .../basic/t/func_jsonarrayagg.test | 50 +++++++++++++------ 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/mysql-test/columnstore/basic/r/func_jsonarrayagg.result b/mysql-test/columnstore/basic/r/func_jsonarrayagg.result index 310c6d40a..9877cf6b9 100644 --- a/mysql-test/columnstore/basic/r/func_jsonarrayagg.result +++ b/mysql-test/columnstore/basic/r/func_jsonarrayagg.result @@ -76,9 +76,9 @@ JSON_ARRAYAGG(a) JSON_ARRAYAGG(b) [1,1,2,2,2,2,3,1,1,2,2,2,2,3] ["Hello","World","This","Will","Work","!","Hello","World","This","Will","Work","!"] SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY a; JSON_ARRAYAGG(a) JSON_ARRAYAGG(b) -[3,3] NULL [1,1,1,1] ["Hello","World","Hello","World"] [2,2,2,2,2,2,2,2] ["This","Will","Work","!","This","Will","Work","!"] +[3,3] NULL # # DISTINCT and LIMIT # @@ -125,9 +125,9 @@ JSON_ARRAYAGG(JSON_ARRAY(a, b)) [[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_ARRAYAGG(JSON_ARRAY(a, b)) FROM t1 GROUP BY a; JSON_ARRAYAGG(JSON_ARRAY(a, b)) -[[3, null],[3, null]] [[1, "Hello"],[1, "World"],[1, "Hello"],[1, "World"]] [[2, "This"],[2, "Will"],[2, "Work"],[2, "!"],[2, "This"],[2, "Will"],[2, "Work"],[2, "!"]] +[[3, null],[3, null]] SELECT JSON_VALID(JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b))) FROM t1; JSON_VALID(JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b))) 1 @@ -136,9 +136,9 @@ JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) [{"a": 1, "b": "Hello"},{"a": 1, "b": "World"},{"a": 2, "b": "This"},{"a": 2, "b": "Will"},{"a": 2, "b": "Work"},{"a": 2, "b": "!"},{"a": 3, "b": null},{"a": 1, "b": "Hello"},{"a": 1, "b": "World"},{"a": 2, "b": "This"},{"a": 2, "b": "Will"},{"a": 2, "b": "Work"},{"a": 2, "b": "!"},{"a": 3, "b": null}] SELECT JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) FROM t1 GROUP BY a; JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) -[{"a": 3, "b": null},{"a": 3, "b": null}] [{"a": 1, "b": "Hello"},{"a": 1, "b": "World"},{"a": 1, "b": "Hello"},{"a": 1, "b": "World"}] [{"a": 2, "b": "This"},{"a": 2, "b": "Will"},{"a": 2, "b": "Work"},{"a": 2, "b": "!"},{"a": 2, "b": "This"},{"a": 2, "b": "Will"},{"a": 2, "b": "Work"},{"a": 2, "b": "!"}] +[{"a": 3, "b": null},{"a": 3, "b": null}] # # Error checks # @@ -149,14 +149,9 @@ ERROR 42000: Incorrect parameter count in the call to native function 'JSON_ARRA SELECT JSON_ARRAYAGG(JSON_ARRAYAGG(a)) FROM t1; ERROR HY000: Invalid use of group function # -# MDEV-16620 JSON_OBJECTAGG # DROP TABLE t1; # -# End of 10.4 tests -# -# -# MDEV-16620 JSON_ARRAYAGG # CREATE TABLE t1 (a INT)ENGINE=COLUMNSTORE; SELECT JSON_ARRAYAGG(a) FROM t1; @@ -164,8 +159,6 @@ JSON_ARRAYAGG(a) NULL DROP TABLE t1; # -# MDEV-21915 Server crashes in copy_fields,Item_func_group_concat::add -while using json_arrayagg() as a window function # select json_arrayagg(a) over () from (select 1 a) t; ERROR 42000: This version of MariaDB doesn't yet support 'JSON_ARRAYAGG() aggregate as window function' @@ -189,7 +182,6 @@ select json_object('x', json_arrayagg(json_object('a', 1))); json_object('x', json_arrayagg(json_object('a', 1))) {"x": [{"a": 1}]} # -# MDEV-22011: DISTINCT with JSON_ARRAYAGG gives wrong results # CREATE TABLE t1(a INT, b INT)ENGINE=COLUMNSTORE; INSERT INTO t1 VALUES (1,1), (2,2), (3,3); @@ -226,7 +218,6 @@ JSON_ARRAYAGG(DISTINCT a) [3,2,1] DROP TABLE t1; # -# MDEV-22840: JSON_ARRAYAGG gives wrong results with NULL values and ORDER by clause # CREATE TABLE t1(a VARCHAR(255))ENGINE=COLUMNSTORE; INSERT INTO t1 VALUES ('red'),('blue'); @@ -274,7 +265,6 @@ id materials DROP TABLE t1; DROP TABLE t2; # -# MDEV-27018 IF and COALESCE lose "json" property # SELECT json_object('a', if(1, json_object('b', 'c'), json_object('e', 'f'))); json_object('a', if(1, json_object('b', 'c'), json_object('e', 'f'))) @@ -283,7 +273,6 @@ SELECT json_object('a', coalesce(json_object('b', 'c'))); json_object('a', coalesce(json_object('b', 'c'))) {"a": {"b": "c"}} # -# MDEV-26054 Server crashes in Item_func_json_arrayagg::get_str_from_field # CREATE TABLE t (a VARCHAR(8))ENGINE=COLUMNSTORE; CREATE VIEW v AS SELECT * FROM t; diff --git a/mysql-test/columnstore/basic/t/func_jsonarrayagg.test b/mysql-test/columnstore/basic/t/func_jsonarrayagg.test index 7ef892d8d..24c660226 100644 --- a/mysql-test/columnstore/basic/t/func_jsonarrayagg.test +++ b/mysql-test/columnstore/basic/t/func_jsonarrayagg.test @@ -8,7 +8,9 @@ USE json_arrayagg_db; CREATE TABLE t1 (a INT, b INT)ENGINE=COLUMNSTORE; 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; +sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY b; DROP TABLE t1; @@ -18,6 +20,7 @@ DROP TABLE t1; CREATE TABLE t1 (a FLOAT, b DOUBLE, c DECIMAL(10, 2))ENGINE=COLUMNSTORE; 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; +sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b), JSON_ARRAYAGG(c) FROM t1; DROP TABLE t1; @@ -31,6 +34,7 @@ sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1; sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY b; +sorted_result; SELECT JSON_ARRAYAGG(TRUE), JSON_ARRAYAGG(FALSE) FROM t1; DROP TABLE t1; @@ -42,6 +46,7 @@ INSERT INTO t1 VALUES ('"double_quoted_value"'), ("'single_quoted_value'"), ('"double_quoted_value"'), ("'single_quoted_value'"); SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; DROP TABLE t1; @@ -53,32 +58,44 @@ 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; +sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(a), JSON_ARRAYAGG(b) FROM t1 GROUP BY a; -- echo # -- echo # DISTINCT and LIMIT -- echo # +sorted_result; SELECT JSON_ARRAYAGG(b LIMIT 1) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(b LIMIT 2) FROM t1; sorted_result; SELECT JSON_ARRAYAGG(b LIMIT 1) FROM t1 GROUP BY b; sorted_result; SELECT JSON_ARRAYAGG(b LIMIT 2) FROM t1 GROUP BY a; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT a) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT b) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT a LIMIT 2) FROM t1; +sorted_result; 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; +sorted_result; SELECT JSON_ARRAYAGG(JSON_ARRAY(a, b)) FROM t1; +sorted_result; 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; +sorted_result; SELECT JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(JSON_OBJECT('a', a, 'b', b)) FROM t1 GROUP BY a; -- echo # @@ -94,18 +111,13 @@ SELECT JSON_ARRAYAGG(JSON_ARRAYAGG(a, b)) FROM t1; SELECT JSON_ARRAYAGG(JSON_ARRAYAGG(a)) FROM t1; -- echo # --- echo # MDEV-16620 JSON_OBJECTAGG -- echo # DROP TABLE t1; ---echo # ---echo # End of 10.4 tests ---echo # -- echo # --- echo # MDEV-16620 JSON_ARRAYAGG -- echo # CREATE TABLE t1 (a INT)ENGINE=COLUMNSTORE; @@ -113,8 +125,6 @@ SELECT JSON_ARRAYAGG(a) FROM t1; DROP TABLE t1; -- echo # --- echo # MDEV-21915 Server crashes in copy_fields,Item_func_group_concat::add --- echo while using json_arrayagg() as a window function -- echo # --error ER_NOT_SUPPORTED_YET @@ -123,31 +133,36 @@ select json_arrayagg(a) over () from (select 1 a) t; --error ER_NOT_SUPPORTED_YET select json_objectagg(a, b) over () from (select 1 a, 2 b) t; +sorted_result; SELECT JSON_ARRAYAGG(NULL) FROM (SELECT 1 AS t) AS A; +sorted_result; SELECT JSON_ARRAYAGG("null") FROM (SELECT 1 AS t) AS A; create view v as (select json_arrayagg(json_object("type", "permPeriod", "id", "asd")) as JSON_DATA); select * from v; drop view v; +sorted_result; select json_arrayagg(a order by a asc) from (select 1 a union select 2 a) t; - +sorted_result; select json_object('x', json_arrayagg(json_object('a', 1))); --echo # ---echo # MDEV-22011: DISTINCT with JSON_ARRAYAGG gives wrong results --echo # CREATE TABLE t1(a INT, b INT)ENGINE=COLUMNSTORE; INSERT INTO t1 VALUES (1,1), (2,2), (3,3); INSERT INTO t1 VALUES (1,1), (2,2), (3,3); - +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT a) FROM t1; INSERT INTO t1 VALUES (NULL,NULL), (NULL,NULL); +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT a) FROM t1; DROP TABLE t1; @@ -155,29 +170,32 @@ CREATE TABLE t1(a VARCHAR(10), b INT)ENGINE=COLUMNSTORE; INSERT INTO t1 VALUES (1,1), (2,2), (3,3); INSERT INTO t1 VALUES (1,1), (2,2), (3,3); +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT a) FROM t1; INSERT INTO t1 VALUES (NULL,NULL), (NULL,NULL); - +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; +sorted_result; SELECT JSON_ARRAYAGG(DISTINCT a) FROM t1; DROP TABLE t1; --echo # ---echo # MDEV-22840: JSON_ARRAYAGG gives wrong results with NULL values and ORDER by clause --echo # CREATE TABLE t1(a VARCHAR(255))ENGINE=COLUMNSTORE; INSERT INTO t1 VALUES ('red'),('blue'); +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; SELECT JSON_ARRAYAGG(a ORDER BY a DESC) FROM t1; SELECT JSON_ARRAYAGG(a ORDER BY a ASC) FROM t1; INSERT INTO t1 VALUES (NULL); - +sorted_result; SELECT JSON_ARRAYAGG(a) FROM t1; SELECT JSON_ARRAYAGG(a ORDER BY a DESC) FROM t1; SELECT JSON_ARRAYAGG(a ORDER BY a ASC) FROM t1; @@ -187,6 +205,7 @@ set group_concat_max_len=64; create table t1 (a varchar(254))ENGINE=COLUMNSTORE; insert into t1 values (concat('x64-', repeat('a', 60))); insert into t1 values (concat('x64-', repeat('b', 60))); insert into t1 values (concat('x64-', repeat('c', 60))); +sorted_result; select json_arrayagg(a) from t1; drop table t1; SET group_concat_max_len= default; @@ -207,7 +226,6 @@ DROP TABLE t1; DROP TABLE t2; --echo # ---echo # MDEV-27018 IF and COALESCE lose "json" property --echo # SELECT json_object('a', if(1, json_object('b', 'c'), json_object('e', 'f'))); @@ -215,14 +233,14 @@ SELECT json_object('a', coalesce(json_object('b', 'c'))); --echo # ---echo # MDEV-26054 Server crashes in Item_func_json_arrayagg::get_str_from_field --echo # CREATE TABLE t (a VARCHAR(8))ENGINE=COLUMNSTORE; CREATE VIEW v AS SELECT * FROM t; INSERT INTO t VALUES ('foo'),('bar'); +sorted_result; SELECT JSON_ARRAYAGG(a) AS f FROM v; DROP VIEW v; DROP TABLE t; -DROP DATABASE IF EXISTS json_arrayagg_db; \ No newline at end of file +DROP DATABASE IF EXISTS json_arrayagg_db;