You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-02 06:13:16 +03:00
MDEV-32854: Make JSON_DEPTH_LIMIT unlimited
This patch is the columnstore-part of the task. Columnstore wanted to have previous 32 depth, so this patch aims at keeping the compatibility.
This commit is contained in:
committed by
Leonid Fedorov
parent
9a2ebebaf9
commit
9fe37d5919
@@ -4,7 +4,14 @@ Note 1008 Can't drop database 'json_arrayagg_db'; database doesn't exist
|
||||
CREATE DATABASE json_arrayagg_db;
|
||||
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);
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
INSERT INTO t1 VALUES (2, 1);
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
INSERT INTO t1 VALUES (2, 1);
|
||||
INSERT INTO t1 VALUES (3, 2);
|
||||
INSERT INTO t1 VALUES (2, 2);
|
||||
INSERT INTO t1 VALUES (2, 2);
|
||||
INSERT INTO t1 VALUES (2, 2);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
JSON_VALID(JSON_ARRAYAGG(a))
|
||||
1
|
||||
@@ -20,7 +27,10 @@ DROP TABLE t1;
|
||||
# Real aggregation
|
||||
#
|
||||
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);
|
||||
INSERT INTO t1 VALUES (1.0, 2.0, 3.0);
|
||||
INSERT INTO t1 VALUES (1.0, 3.0, 9.0);
|
||||
INSERT INTO t1 VALUES (1.0, 4.0, 16.0);
|
||||
INSERT INTO t1 VALUES (1.0, 5.0, 25.0);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
JSON_VALID(JSON_ARRAYAGG(a))
|
||||
1
|
||||
@@ -32,7 +42,10 @@ DROP TABLE t1;
|
||||
# Boolean aggregation
|
||||
#
|
||||
CREATE TABLE t1 (a BOOLEAN, b BOOLEAN)ENGINE=COLUMNSTORE;
|
||||
INSERT INTO t1 VALUES (TRUE, TRUE), (TRUE, FALSE), (FALSE, TRUE), (FALSE, FALSE);
|
||||
INSERT INTO t1 VALUES (TRUE, TRUE);
|
||||
INSERT INTO t1 VALUES (TRUE, FALSE);
|
||||
INSERT INTO t1 VALUES (FALSE, TRUE);
|
||||
INSERT INTO t1 VALUES (FALSE, FALSE);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
JSON_VALID(JSON_ARRAYAGG(a))
|
||||
1
|
||||
@@ -51,9 +64,10 @@ DROP TABLE t1;
|
||||
# Aggregation of strings with quoted
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(80))ENGINE=COLUMNSTORE;
|
||||
INSERT INTO t1 VALUES
|
||||
('"double_quoted_value"'), ("'single_quoted_value'"),
|
||||
('"double_quoted_value"'), ("'single_quoted_value'");
|
||||
INSERT INTO t1 VALUES ('"double_quoted_value"');
|
||||
INSERT INTO t1 VALUES ("'single_quoted_value'");
|
||||
INSERT INTO t1 VALUES ('"double_quoted_value"');
|
||||
INSERT INTO t1 VALUES ("'single_quoted_value'");
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(a)) FROM t1;
|
||||
JSON_VALID(JSON_ARRAYAGG(a))
|
||||
1
|
||||
@@ -65,9 +79,20 @@ DROP TABLE t1;
|
||||
# Strings and NULLs
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b VARCHAR(80))ENGINE=COLUMNSTORE;
|
||||
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);
|
||||
INSERT INTO t1 VALUES (1, "Hello");
|
||||
INSERT INTO t1 VALUES (1, "World");
|
||||
INSERT INTO t1 VALUES (2, "This");
|
||||
INSERT INTO t1 VALUES (2, "Will");
|
||||
INSERT INTO t1 VALUES (2, "Work");
|
||||
INSERT INTO t1 VALUES (2, "!");
|
||||
INSERT INTO t1 VALUES (3, NULL);
|
||||
INSERT INTO t1 VALUES (1, "Hello");
|
||||
INSERT INTO t1 VALUES (1, "World");
|
||||
INSERT INTO t1 VALUES (2, "This");
|
||||
INSERT INTO t1 VALUES (2, "Will");
|
||||
INSERT INTO t1 VALUES (2, "Work");
|
||||
INSERT INTO t1 VALUES (2, "!");
|
||||
INSERT INTO t1 VALUES (3, NULL);
|
||||
SELECT JSON_VALID(JSON_ARRAYAGG(b)) FROM t1;
|
||||
JSON_VALID(JSON_ARRAYAGG(b))
|
||||
1
|
||||
@@ -102,18 +127,6 @@ JSON_ARRAYAGG(b LIMIT 2)
|
||||
["Hello","World","Hello","World"]
|
||||
["This","Will","Work","!","This","Will","Work","!"]
|
||||
[null,null]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC)
|
||||
[1,2,3]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT b ORDER BY b ASC) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT b ORDER BY b ASC)
|
||||
[null,"!","Hello","This","Will","Work","World"]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC LIMIT 2) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC LIMIT 2)
|
||||
[1,2,3]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT b ORDER BY b ASC LIMIT 2) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT b ORDER BY b ASC LIMIT 2)
|
||||
[null,"!","Hello","This","Will","Work","World"]
|
||||
#
|
||||
# JSON aggregation
|
||||
#
|
||||
@@ -184,43 +197,42 @@ json_object('x', json_arrayagg(json_object('a', 1)))
|
||||
#
|
||||
#
|
||||
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);
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
INSERT INTO t1 VALUES (2,2);
|
||||
INSERT INTO t1 VALUES (3,3);
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
INSERT INTO t1 VALUES (2,2);
|
||||
INSERT INTO t1 VALUES (3,3);
|
||||
SELECT JSON_ARRAYAGG(a) FROM t1;
|
||||
JSON_ARRAYAGG(a)
|
||||
[1,2,3,1,2,3]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC)
|
||||
[1,2,3]
|
||||
INSERT INTO t1 VALUES (NULL,NULL), (NULL,NULL);
|
||||
INSERT INTO t1 VALUES (NULL,NULL);
|
||||
INSERT INTO t1 VALUES (NULL,NULL);
|
||||
SELECT JSON_ARRAYAGG(a) FROM t1;
|
||||
JSON_ARRAYAGG(a)
|
||||
[1,2,3,1,2,3,null,null]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC)
|
||||
[null,1,2,3]
|
||||
DROP TABLE t1;
|
||||
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);
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
INSERT INTO t1 VALUES (2,2);
|
||||
INSERT INTO t1 VALUES (3,3);
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
INSERT INTO t1 VALUES (2,2);
|
||||
INSERT INTO t1 VALUES (3,3);
|
||||
SELECT JSON_ARRAYAGG(a) FROM t1;
|
||||
JSON_ARRAYAGG(a)
|
||||
[1,2,3,1,2,3]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC)
|
||||
[1,2,3]
|
||||
INSERT INTO t1 VALUES (NULL,NULL), (NULL,NULL);
|
||||
INSERT INTO t1 VALUES (NULL,NULL);
|
||||
INSERT INTO t1 VALUES (NULL,NULL);
|
||||
SELECT JSON_ARRAYAGG(a) FROM t1;
|
||||
JSON_ARRAYAGG(a)
|
||||
[1,2,3,1,2,3,null,null]
|
||||
SELECT JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC) FROM t1;
|
||||
JSON_ARRAYAGG(DISTINCT a ORDER BY a ASC)
|
||||
[null,1,2,3]
|
||||
DROP TABLE t1;
|
||||
#
|
||||
#
|
||||
CREATE TABLE t1(a VARCHAR(255))ENGINE=COLUMNSTORE;
|
||||
INSERT INTO t1 VALUES ('red'),('blue');
|
||||
INSERT INTO t1 VALUES ('red');
|
||||
INSERT INTO t1 VALUES ('blue');
|
||||
SELECT JSON_ARRAYAGG(a) FROM t1;
|
||||
JSON_ARRAYAGG(a)
|
||||
["red","blue"]
|
||||
@@ -253,8 +265,13 @@ drop table t1;
|
||||
SET group_concat_max_len= default;
|
||||
CREATE TABLE t1(id int, name varchar(50))ENGINE=COLUMNSTORE;
|
||||
CREATE TABLE t2(id int, owner_id int)ENGINE=COLUMNSTORE;
|
||||
INSERT INTO t1 VALUES (1, "name1"), (2, "name2"), (3, "name3");
|
||||
INSERT INTO t2 VALUES (1, 1), (2, 1), (3, 2), (4, 3);
|
||||
INSERT INTO t1 VALUES (1, "name1");
|
||||
INSERT INTO t1 VALUES (2, "name2");
|
||||
INSERT INTO t1 VALUES (3, "name3");
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
INSERT INTO t2 VALUES (2, 1);
|
||||
INSERT INTO t2 VALUES (3, 2);
|
||||
INSERT INTO t2 VALUES (4, 3);
|
||||
SELECT t1.id, JSON_ARRAYAGG(JSON_OBJECT('id',t2.id) ORDER BY t2.id) as materials
|
||||
from t1 LEFT JOIN t2 on t1.id = t2.owner_id
|
||||
GROUP BY t1.id ORDER BY id;
|
||||
@@ -276,7 +293,8 @@ json_object('a', coalesce(json_object('b', 'c')))
|
||||
#
|
||||
CREATE TABLE t (a VARCHAR(8))ENGINE=COLUMNSTORE;
|
||||
CREATE VIEW v AS SELECT * FROM t;
|
||||
INSERT INTO t VALUES ('foo'),('bar');
|
||||
INSERT INTO t VALUES ('foo');
|
||||
INSERT INTO t VALUES ('bar');
|
||||
SELECT JSON_ARRAYAGG(a) AS f FROM v;
|
||||
f
|
||||
["foo","bar"]
|
||||
|
||||
Reference in New Issue
Block a user