You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	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
		
			
				
	
	
		
			154 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--source ../include/disable_before_10.9.inc
 | 
						|
--source ../include/have_columnstore.inc
 | 
						|
--disable_warnings
 | 
						|
DROP DATABASE IF EXISTS json_range_expr_db;
 | 
						|
 | 
						|
--enable_warnings
 | 
						|
CREATE DATABASE json_range_expr_db;
 | 
						|
 | 
						|
USE json_range_expr_db;
 | 
						|
 | 
						|
--echo # Range expression is supported in MariaDB 10.9 binaries
 | 
						|
CREATE TABLE t2(j TEXT, p TEXT) ENGINE = columnstore;
 | 
						|
 | 
						|
SET
 | 
						|
    @json = '{
 | 
						|
            "A": [0,
 | 
						|
                  [1, 2, 3],
 | 
						|
                  [4, 5, 6],
 | 
						|
                  "seven",
 | 
						|
                   0.8,
 | 
						|
                   true,
 | 
						|
                   false,
 | 
						|
                   "eleven",
 | 
						|
                  [12, 13, {"key1":"value1"},[15]],
 | 
						|
                  true],
 | 
						|
            "B": {"C": 1},
 | 
						|
            "D": 2
 | 
						|
           }';
 | 
						|
 | 
						|
INSERT INTO
 | 
						|
    t2
 | 
						|
VALUES
 | 
						|
    (@json, '$.A[-2][-1]'),
 | 
						|
    (@json, '$.A[last-1][last]');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j,
 | 
						|
    p,
 | 
						|
    JSON_EXISTS(j, p) AS result
 | 
						|
FROM
 | 
						|
    t2;
 | 
						|
 | 
						|
--echo # Test case 2
 | 
						|
CREATE TABLE t3(j TEXT, p TEXT) ENGINE = columnstore;
 | 
						|
 | 
						|
SET
 | 
						|
    @json = '[
 | 
						|
             [1, {"key1": "value1"}, 3],
 | 
						|
             [false, 5, 6],
 | 
						|
             [7, 8, [9, {"key2": 2}, 11]],
 | 
						|
             [15, 1.34, [14], ["string1", [16, {"key1":[1,2,3,[4,5,6]]}, 18]]],
 | 
						|
             [19, 20],
 | 
						|
             21, 22
 | 
						|
            ]';
 | 
						|
 | 
						|
INSERT INTO
 | 
						|
    t3
 | 
						|
VALUES
 | 
						|
    (@json, '$[3][3][-2 to last]');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j,
 | 
						|
    p,
 | 
						|
    JSON_EXISTS(j, p) AS result
 | 
						|
FROM
 | 
						|
    t3;
 | 
						|
 | 
						|
-- echo # Test case 3
 | 
						|
CREATE TABLE t4(j TEXT, p TEXT) ENGINE = columnstore;
 | 
						|
 | 
						|
SET
 | 
						|
    @json = '[
 | 
						|
             [1, {"key1": "value1"}, 3],
 | 
						|
             [false, 5, 6],
 | 
						|
             [7, 8, [9, {"key2": 2}, 11]],
 | 
						|
             [15, 1.34, [14], ["string1", [16, {"key1":[1,2,3,[4,5,6]]}, 18]]],
 | 
						|
             [19, 20],
 | 
						|
             21, 22
 | 
						|
            ]';
 | 
						|
 | 
						|
INSERT INTO
 | 
						|
    t4
 | 
						|
VALUES
 | 
						|
    (@json, '$[2][2][1 to 2]'),
 | 
						|
    (@json, '$[2][2][4 to 6]'),
 | 
						|
    (@json, '$[2][2][1 to 4]');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j,
 | 
						|
    p,
 | 
						|
    JSON_EXISTS(j, p) AS result
 | 
						|
FROM
 | 
						|
    t4;
 | 
						|
 | 
						|
--echo 
 | 
						|
--echo # JSON_EXTRACT
 | 
						|
--echo 
 | 
						|
CREATE TABLE t5(j LONGTEXT, p LONGTEXT) ENGINE = COLUMNSTORE;
 | 
						|
 | 
						|
INSERT INTO
 | 
						|
    t5
 | 
						|
VALUES
 | 
						|
    ('[1, "val2", [3.1, -4]]', '$'),
 | 
						|
    ('1', '$'),
 | 
						|
    ('[10, 20, [30, 40]]', '$[2][*]'),
 | 
						|
    ('[10, 20, [{"a":3}, 30, 40]]', '$[2][*]'),
 | 
						|
    (json_object('foo', 'foobar'), '$');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j,
 | 
						|
    p,
 | 
						|
    JSON_EXTRACT(j, p) AS result
 | 
						|
FROM
 | 
						|
    t5;
 | 
						|
 | 
						|
--echo 
 | 
						|
--echo # JSON_EXTRACT
 | 
						|
--echo 
 | 
						|
CREATE TABLE t6(j TEXT, f TEXT, v TEXT, e TEXT, p TEXT) ENGINE = COLUMNSTORE;
 | 
						|
 | 
						|
SET
 | 
						|
    @j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]';
 | 
						|
 | 
						|
INSERT INTO
 | 
						|
    t6
 | 
						|
VALUES
 | 
						|
    (@j, 'all', 'abc', NULL, '$'),
 | 
						|
    (@j, 'all', '10', NULL, '$'),
 | 
						|
    (@j, 'all', '10', NULL, '$[*]'),
 | 
						|
    (@j, 'all', '10', NULL, '$[*][0].k'),
 | 
						|
    (@j, 'all', '10', NULL, '$**.k');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j AS json,
 | 
						|
    f AS return_arg,
 | 
						|
    v AS search_str,
 | 
						|
    e AS escape_char,
 | 
						|
    p AS path,
 | 
						|
    JSON_SEARCH(j, f, v, NULL, p) AS result
 | 
						|
FROM
 | 
						|
    t6;
 | 
						|
 | 
						|
DROP TABLE t6;
 | 
						|
 | 
						|
DROP TABLE t5;
 | 
						|
 | 
						|
DROP TABLE t4;
 | 
						|
 | 
						|
DROP TABLE t3;
 | 
						|
 | 
						|
DROP TABLE t2;
 | 
						|
 | 
						|
DROP DATABASE json_range_expr_db;
 |