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
		
			
				
	
	
		
			122 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
DROP DATABASE IF EXISTS json_search_db;
 | 
						|
CREATE DATABASE json_search_db;
 | 
						|
USE json_search_db;
 | 
						|
# ----------------------------------------------------------------------
 | 
						|
# Test of JSON_SEARCH function.
 | 
						|
# ----------------------------------------------------------------------
 | 
						|
 | 
						|
# JSON_SEARCH with single path expression
 | 
						|
 | 
						|
CREATE TABLE t1(j TEXT, f TEXT, v TEXT) ENGINE = COLUMNSTORE;
 | 
						|
INSERT INTO
 | 
						|
t1
 | 
						|
VALUES
 | 
						|
(
 | 
						|
'["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]',
 | 
						|
'one',
 | 
						|
'abc'
 | 
						|
    ),
 | 
						|
(
 | 
						|
'["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]',
 | 
						|
'all',
 | 
						|
'abc'
 | 
						|
    ),
 | 
						|
('{"x": "\\""}', "one", '"'),
 | 
						|
('{"x": "\\""}', "one", '\\"');
 | 
						|
SELECT
 | 
						|
j AS json,
 | 
						|
f AS return_arg,
 | 
						|
v AS search_str,
 | 
						|
j AS json, f AS return_arg, JSON_SEARCH(j, f, v) AS result
 | 
						|
FROM
 | 
						|
t1;
 | 
						|
json	return_arg	search_str	json	return_arg	result
 | 
						|
["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	one	abc	["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	one	"$[0]"
 | 
						|
["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	all	abc	["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	all	["$[0]", "$[2].x"]
 | 
						|
{"x": "\""}	one	"	{"x": "\""}	one	"$.x"
 | 
						|
{"x": "\""}	one	\"	{"x": "\""}	one	"$.x"
 | 
						|
 | 
						|
# JSON_SEARCH with path expression
 | 
						|
 | 
						|
CREATE TABLE t2(j TEXT, f TEXT, v TEXT, e TEXT, p TEXT) ENGINE = COLUMNSTORE;
 | 
						|
SET
 | 
						|
@j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]';
 | 
						|
INSERT INTO
 | 
						|
t2
 | 
						|
VALUES
 | 
						|
(@j, 'all', 'abc', NULL, '$[0]'),
 | 
						|
(@j, 'all', 'abc', NULL, '$[2]'),
 | 
						|
(@j, 'all', '10', NULL, '$[1]'),
 | 
						|
(@j, 'all', '10', NULL, '$[2]');
 | 
						|
SELECT
 | 
						|
j AS json,
 | 
						|
f AS return_arg,
 | 
						|
v AS search_str,
 | 
						|
p AS path,
 | 
						|
JSON_SEARCH(j, f, v, NULL, p) AS result
 | 
						|
FROM
 | 
						|
t2;
 | 
						|
json	return_arg	search_str	path	result
 | 
						|
["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	all	abc	$[0]	"$[0]"
 | 
						|
["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	all	abc	$[2]	"$[2].x"
 | 
						|
["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	all	10	$[1]	"$[1][0].k"
 | 
						|
["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]	all	10	$[2]	NULL
 | 
						|
 | 
						|
# JSON_SEARCH with escape char
 | 
						|
 | 
						|
CREATE TABLE t3(j TEXT, f TEXT) ENGINE = COLUMNSTORE;
 | 
						|
set @json = '[ "footbar", "foo%bar" ]';
 | 
						|
INSERT INTO t3 VALUES(@json,'all');
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo%bar' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo%bar' )
 | 
						|
[ "footbar", "foo%bar" ]	all	["$[0]", "$[1]"]
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo\%bar' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo\%bar' )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo|%bar', '|' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo|%bar', '|' )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	NULL
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]', '$[1]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]', '$[1]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]', '$[1]', '$[2]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]', '$[1]', '$[2]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo\%bar', null ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo\%bar', null )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo\%bar', null, '$[0]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo\%bar', null, '$[0]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	NULL
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo\%bar', null, '$[1]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo\%bar', null, '$[1]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo|%bar', '|', '$[0]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	NULL
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'foo|%bar', '|', '$[1]' ) FROM t3;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'foo|%bar', '|', '$[1]' )
 | 
						|
[ "footbar", "foo%bar" ]	all	"$[1]"
 | 
						|
 | 
						|
# JSON_SEARCH in case-sensitive
 | 
						|
 | 
						|
CREATE TABLE t4(j TEXT, f TEXT) ENGINE = COLUMNSTORE;
 | 
						|
INSERT INTO t4 VALUES('["abc", "ABC"]', 'all');
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'aBC') FROM t4;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'aBC')
 | 
						|
["abc", "ABC"]	all	["$[0]", "$[1]"]
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'abc') FROM t4;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'abc')
 | 
						|
["abc", "ABC"]	all	["$[0]", "$[1]"]
 | 
						|
SELECT j AS json, f AS return_arg, JSON_SEARCH(j, f, 'ABC') FROM t4;
 | 
						|
json	return_arg	JSON_SEARCH(j, f, 'ABC')
 | 
						|
["abc", "ABC"]	all	["$[0]", "$[1]"]
 | 
						|
drop TABLE t4;
 | 
						|
drop TABLE t3;
 | 
						|
DROP TABLE t2;
 | 
						|
DROP TABLE t1;
 | 
						|
DROP DATABASE json_search_db;
 |