1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-04-20 09:07:44 +03:00
Ziy1-Tan cdd41f05f3 MCOL-785 Implement DISTRIBUTED JSON functions
The following functions are created:
Create function JSON_VALID and test cases
Create function JSON_DEPTH and test cases
Create function JSON_LENGTH and test cases
Create function JSON_EQUALS and test cases
Create function JSON_NORMALIZE and test cases
Create function JSON_TYPE and test cases
Create function JSON_OBJECT and test cases
Create function JSON_ARRAY and test cases
Create function JSON_KEYS and test cases
Create function JSON_EXISTS and test cases
Create function JSON_QUOTE/JSON_UNQUOTE and test cases
Create function JSON_COMPACT/DETAILED/LOOSE and test cases
Create function JSON_MERGE and test cases
Create function JSON_MERGE_PATCH and test cases
Create function JSON_VALUE and test cases
Create function JSON_QUERY and test cases
Create function JSON_CONTAINS and test cases
Create function JSON_ARRAY_APPEND and test cases
Create function JSON_ARRAY_INSERT and test cases
Create function JSON_INSERT/REPLACE/SET and test cases
Create function JSON_REMOVE and test cases
Create function JSON_CONTAINS_PATH and test cases
Create function JSON_OVERLAPS and test cases
Create function JSON_EXTRACT and test cases
Create function JSON_SEARCH and test cases

Note:
Some functions output differs from MDB because session variables that affects functions output,e.g JSON_QUOTE/JSON_UNQUOTE
This depends on MCOL-5212
2022-08-30 22:22:23 +08:00

82 lines
1.8 KiB
Plaintext

DROP DATABASE IF EXISTS json_contains_db;
CREATE DATABASE json_contains_db;
USE json_contains_db;
# ----------------------------------------------------------------------
# Test of JSON_CONTAINS function.
# ----------------------------------------------------------------------
CREATE TABLE t1(j LONGTEXT, v LONGTEXT, p LONGTEXT) ENGINE = columnstore;
INSERT INTO
t1
VALUES
('{"k1":123, "k2":345}', '123', '$.k1'),
('', '', '$'),
('null', 'null', '$'),
('"10"', '"10"', '$'),
('"10"', '10', '$'),
('10.1', '10', '$'),
('10.0', '10', '$');
SELECT
j AS json,
v AS value,
p AS path,
JSON_CONTAINS(j, v, p) AS result
FROM
t1;
json value path result
{"k1":123, "k2":345} 123 $.k1 1
NULL NULL $ NULL
null null $ 1
"10" "10" $ 1
"10" 10 $ 0
10.1 10 $ 0
10.0 10 $ 1
CREATE TABLE t2(j LONGTEXT, v LONGTEXT) ENGINE = columnstore;
INSERT INTO
t2
VALUES
('"you"', '"you"'),
('"youth"', '"you"'),
('[1]', '1'),
('[2, 1]', '1'),
('[2, [2, 3], 1]', '1'),
('[4, [2, 3], 1]', '2'),
('[2, 1]', '[1, 2]'),
('[2, 1]', '[1, 0, 2]'),
('[2, 0, 3, 1]', '[1, 2]'),
('{"b":[1,2], "a":1}', '{"a":1, "b":2}'),
('{"a":1}', '{}'),
('[1, {"a":1}]', '{}'),
('[1, {"a":1}]', '{"a":1}'),
('[{"abc":"def", "def":"abc"}]', '["foo","bar"]'),
(
'[{"abc":"def", "def":"abc"}, "bar"]',
'["bar", {}]'
),
('[{"a":"b"},{"c":"d"}]', '{"c":"d"}');
SELECT
j AS json,
v AS value,
JSON_CONTAINS(j, v) AS result
FROM
t2;
json value result
"you" "you" 1
"youth" "you" 0
[1] 1 1
[2, 1] 1 1
[2, [2, 3], 1] 1 1
[4, [2, 3], 1] 2 1
[2, 1] [1, 2] 1
[2, 1] [1, 0, 2] 0
[2, 0, 3, 1] [1, 2] 1
{"b":[1,2], "a":1} {"a":1, "b":2} 1
{"a":1} {} 1
[1, {"a":1}] {} 1
[1, {"a":1}] {"a":1} 1
[{"abc":"def", "def":"abc"}] ["foo","bar"] 0
[{"abc":"def", "def":"abc"}, "bar"] ["bar", {}] 1
[{"a":"b"},{"c":"d"}] {"c":"d"} 1
DROP TABLE t2;
DROP TABLE t1;
DROP DATABASE json_contains_db;