1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-04-21 19:45:56 +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

48 lines
1.6 KiB
Plaintext

--source ../include/have_columnstore.inc
--disable_warnings
DROP DATABASE IF EXISTS json_object_db;
--enable_warnings
CREATE DATABASE json_object_db;
USE json_object_db;
--echo # ----------------------------------------------------------------------
--echo # Test of JSON_OBJECT function.
--echo # ----------------------------------------------------------------------
CREATE TABLE t1(l TEXT) ENGINE = COLUMNSTORE;
INSERT INTO t1 VALUES('a');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT json_object(l) FROM t1;
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT json_object(l, 1, 'b') FROM t1;
--echo # Null arg
TRUNCATE t1;
INSERT INTO t1 values(null);
SELECT JSON_OBJECT(l, 1) FROM t1;
SELECT JSON_OBJECT(1, l) FROM t1;
--echo # Valid arg
TRUNCATE t1;
INSERT INTO t1 values('a');
SELECT JSON_OBJECT(l, null) FROM t1;
SELECT JSON_OBJECT(l, 1) FROM t1;
SELECT JSON_OBJECT(l, 1, 'b', 'foo') FROM t1;
SELECT JSON_OBJECT(l, 1, 'b', 'foo','c','{ "d": "e" }') FROM t1;
SELECT JSON_OBJECT(l, true, 'b', false, 'c', null ) FROM t1;
SELECT JSON_OBJECT(l, 'true', 'b', 'false', 'c', null ) FROM t1;
SELECT JSON_VALID(json_object(l, 1 )) from t1;
--echo # Long key
TRUNCATE t1;
INSERT INTO t1 values('a');
--echo # SELECT JSON_OBJECT(REPEAT(l, 64 * 1024), 1) FROM t1;
--echo # Non-string keys are cast to CHAR
TRUNCATE t1;
INSERT INTO t1 values('a');
SELECT JSON_OBJECT(1, l) FROM t1;
SELECT JSON_OBJECT(CAST(1 AS CHAR), l) FROM t1;
SELECT JSON_OBJECT(true, l) FROM t1;
SELECT JSON_OBJECT(CAST(true AS CHAR), l) FROM t1;
SELECT JSON_OBJECT(false, l) FROM t1;
SELECT JSON_OBJECT(CAST(false AS CHAR), l) FROM t1;
DROP TABLE t1;
DROP DATABASE json_object_db;