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 
			
		
		
		
	This patch is the columnstore-part of the task. Columnstore wanted to have previous 32 depth, so this patch aims at keeping the compatibility.
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--source ../include/have_columnstore.inc
 | 
						|
--disable_warnings
 | 
						|
DROP DATABASE IF EXISTS json_extract_db;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
CREATE DATABASE json_extract_db;
 | 
						|
 | 
						|
USE json_extract_db;
 | 
						|
 | 
						|
--echo # ----------------------------------------------------------------------
 | 
						|
--echo # Test of JSON_EXTRACT function.
 | 
						|
--echo # ----------------------------------------------------------------------
 | 
						|
 | 
						|
--echo 
 | 
						|
--echo # Single path expression
 | 
						|
--echo 
 | 
						|
 | 
						|
CREATE TABLE t1(j LONGTEXT, p LONGTEXT) ENGINE = COLUMNSTORE;
 | 
						|
 | 
						|
SET @json = '[1, "val2", [3.1, -4]]';
 | 
						|
 | 
						|
INSERT INTO t1 VALUES (@json, '$[0]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$[1]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$[2]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$[3]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$[2][0]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$[2][1]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$[2][10]');
 | 
						|
INSERT INTO t1 VALUES (@json, '$');
 | 
						|
INSERT INTO t1 VALUES ('1', '$');
 | 
						|
INSERT INTO t1 VALUES ('[10, 20, [30, 40], 1, 10]', '$[1]');
 | 
						|
INSERT INTO t1 VALUES ('{"key1":"asd", "key2":[2,3]}', "$.key1");
 | 
						|
INSERT INTO t1 VALUES ('{"key0":true, "key1":"qwe"}', "$.key1");
 | 
						|
INSERT INTO t1 VALUES ('[10, 20, [30, 40]]', '$[2][*]');
 | 
						|
INSERT INTO t1 VALUES ('[10, 20, [{"a":3}, 30, 40]]', '$[2][*]');
 | 
						|
INSERT INTO t1 VALUES (json_object('foo', 'foobar'), '$');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j,
 | 
						|
    p,
 | 
						|
    JSON_EXTRACT(j, p) AS result
 | 
						|
FROM
 | 
						|
    t1;
 | 
						|
 | 
						|
--echo 
 | 
						|
--echo # Multiple path expression
 | 
						|
--echo 
 | 
						|
 | 
						|
CREATE TABLE t2(j LONGTEXT, p1 LONGTEXT, p2 LONGTEXT) ENGINE = COLUMNSTORE;
 | 
						|
 | 
						|
INSERT INTO t2 VALUES ('{"key1":"asd", "key2":[2,3]}', "$.keyX", "$.keyY");
 | 
						|
INSERT INTO t2 VALUES ('{"key1":"asd", "key2":[2,3]}', "$.key1", "$.key2");
 | 
						|
INSERT INTO t2 VALUES ('{"key1":5, "key2":[2,3]}', "$.key1", "$.key2");
 | 
						|
INSERT INTO t2 VALUES ('[10, 20, [30, 40], 1, 10]', '$[1]', '$[25]');
 | 
						|
INSERT INTO t2 VALUES ('[{"a": [3, 4]}, {"b": 2}]', '$[0].a', '$[1].a');
 | 
						|
 | 
						|
SELECT
 | 
						|
    j,
 | 
						|
    p1,
 | 
						|
    p2,
 | 
						|
    JSON_EXTRACT(j, p1, p2) AS result
 | 
						|
FROM
 | 
						|
    t2;
 | 
						|
 | 
						|
DROP TABLE t2;
 | 
						|
DROP TABLE t1;
 | 
						|
DROP DATABASE json_extract_db;
 |