mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
Add more test cases for JSON functions.
This commit is contained in:
parent
8306f25634
commit
7aad2eff28
@ -1,3 +1,79 @@
|
||||
--allow_simdjson=1--
|
||||
--JSONLength--
|
||||
2
|
||||
3
|
||||
0
|
||||
--JSONHas--
|
||||
1
|
||||
1
|
||||
0
|
||||
--JSONKey--
|
||||
a
|
||||
b
|
||||
b
|
||||
a
|
||||
--JSONType--
|
||||
Object
|
||||
Array
|
||||
--JSONExtract<numeric>--
|
||||
-100
|
||||
200
|
||||
300
|
||||
1
|
||||
0
|
||||
--JSONExtractString--
|
||||
hello
|
||||
hello
|
||||
\n\0
|
||||
☺
|
||||
|
||||
|
||||
--JSONExtract (generic)--
|
||||
('hello',[-100,200,300])
|
||||
('hello',[-100,200,300])
|
||||
([-100,200,300],'hello')
|
||||
('hello\0',0)
|
||||
hello
|
||||
[-100,200,300]
|
||||
(-100,200,300)
|
||||
[-100,0,0]
|
||||
[-100,NULL,NULL]
|
||||
[0,200,0]
|
||||
[NULL,200,NULL]
|
||||
-100
|
||||
200
|
||||
\N
|
||||
1
|
||||
Thursday
|
||||
Friday
|
||||
--JSONExtractKeysAndValues--
|
||||
[('a','hello')]
|
||||
[('b',[-100,200,300])]
|
||||
[('a','hello'),('b','world')]
|
||||
[('a',5),('b',7),('c',11)]
|
||||
--JSONExtractRaw--
|
||||
{"a":"hello","b":[-100,200,300]}
|
||||
"hello"
|
||||
[-100,200,300]
|
||||
-100
|
||||
{"a":"hello","b":[-100,200,300],"c":{"d":[121,144]}}
|
||||
{"d":[121,144]}
|
||||
[121,144]
|
||||
144
|
||||
|
||||
{"passed":true}
|
||||
{}
|
||||
"\\n\\u0000"
|
||||
"☺"
|
||||
--const/non-const mixed--
|
||||
a
|
||||
b
|
||||
c
|
||||
d
|
||||
e
|
||||
u
|
||||
v
|
||||
--allow_simdjson=0--
|
||||
--JSONLength--
|
||||
2
|
||||
3
|
||||
|
@ -1,3 +1,4 @@
|
||||
SELECT '--allow_simdjson=1--';
|
||||
SET allow_simdjson=1;
|
||||
|
||||
SELECT '--JSONLength--';
|
||||
@ -78,3 +79,87 @@ SELECT JSONExtractRaw('{"abc":"\\u263a"}', 'abc');
|
||||
SELECT '--const/non-const mixed--';
|
||||
SELECT JSONExtractString('["a", "b", "c", "d", "e"]', idx) FROM (SELECT arrayJoin([1,2,3,4,5]) AS idx);
|
||||
SELECT JSONExtractString(json, 's') FROM (SELECT arrayJoin(['{"s":"u"}', '{"s":"v"}']) AS json);
|
||||
|
||||
|
||||
|
||||
SELECT '--allow_simdjson=0--';
|
||||
SET allow_simdjson=0;
|
||||
|
||||
SELECT '--JSONLength--';
|
||||
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}');
|
||||
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}', 'b');
|
||||
SELECT JSONLength('{}');
|
||||
|
||||
SELECT '--JSONHas--';
|
||||
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'a');
|
||||
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b');
|
||||
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'c');
|
||||
|
||||
SELECT '--JSONKey--';
|
||||
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
|
||||
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', 2);
|
||||
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', -1);
|
||||
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', -2);
|
||||
|
||||
SELECT '--JSONType--';
|
||||
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}');
|
||||
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}', 'b');
|
||||
|
||||
SELECT '--JSONExtract<numeric>--';
|
||||
SELECT JSONExtractInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 1);
|
||||
SELECT JSONExtractFloat('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 2);
|
||||
SELECT JSONExtractUInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', -1);
|
||||
SELECT JSONExtractBool('{"passed": true}', 'passed');
|
||||
SELECT JSONExtractBool('"HX-=');
|
||||
|
||||
SELECT '--JSONExtractString--';
|
||||
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a');
|
||||
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
|
||||
select JSONExtractString('{"abc":"\\n\\u0000"}', 'abc');
|
||||
select JSONExtractString('{"abc":"\\u263a"}', 'abc');
|
||||
select JSONExtractString('{"abc":"\\u263"}', 'abc');
|
||||
select JSONExtractString('{"abc":"hello}', 'abc');
|
||||
|
||||
SELECT '--JSONExtract (generic)--';
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(String, Array(Float64))');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(a String, b Array(Float64))');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(b Array(Float64), a String)');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(a FixedString(6), c UInt8)');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'a', 'String');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 'Array(Float32)');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 'Tuple(Int8, Float32, UInt16)');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 'Array(Int8)');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 'Array(Nullable(Int8))');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 'Array(UInt8)');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 'Array(Nullable(UInt8))');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 1, 'Int8');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 2, 'Int32');
|
||||
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 4, 'Nullable(Int64)');
|
||||
SELECT JSONExtract('{"passed": true}', 'passed', 'UInt8');
|
||||
SELECT JSONExtract('{"day": "Thursday"}', 'day', 'Enum8(\'Sunday\' = 0, \'Monday\' = 1, \'Tuesday\' = 2, \'Wednesday\' = 3, \'Thursday\' = 4, \'Friday\' = 5, \'Saturday\' = 6)');
|
||||
SELECT JSONExtract('{"day": 5}', 'day', 'Enum8(\'Sunday\' = 0, \'Monday\' = 1, \'Tuesday\' = 2, \'Wednesday\' = 3, \'Thursday\' = 4, \'Friday\' = 5, \'Saturday\' = 6)');
|
||||
|
||||
SELECT '--JSONExtractKeysAndValues--';
|
||||
SELECT JSONExtractKeysAndValues('{"a": "hello", "b": [-100, 200.0, 300]}', 'String');
|
||||
SELECT JSONExtractKeysAndValues('{"a": "hello", "b": [-100, 200.0, 300]}', 'Array(Float64)');
|
||||
SELECT JSONExtractKeysAndValues('{"a": "hello", "b": "world"}', 'String');
|
||||
SELECT JSONExtractKeysAndValues('{"x": {"a": 5, "b": 7, "c": 11}}', 'x', 'Int8');
|
||||
|
||||
SELECT '--JSONExtractRaw--';
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}');
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}', 'a');
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}', 'b');
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 1);
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}}');
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}}', 'c');
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}}', 'c', 'd');
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}}', 'c', 'd', 2);
|
||||
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}}', 'c', 'd', 3);
|
||||
SELECT JSONExtractRaw('{"passed": true}');
|
||||
SELECT JSONExtractRaw('{}');
|
||||
SELECT JSONExtractRaw('{"abc":"\\n\\u0000"}', 'abc');
|
||||
SELECT JSONExtractRaw('{"abc":"\\u263a"}', 'abc');
|
||||
|
||||
SELECT '--const/non-const mixed--';
|
||||
SELECT JSONExtractString('["a", "b", "c", "d", "e"]', idx) FROM (SELECT arrayJoin([1,2,3,4,5]) AS idx);
|
||||
SELECT JSONExtractString(json, 's') FROM (SELECT arrayJoin(['{"s":"u"}', '{"s":"v"}']) AS json);
|
||||
|
@ -1 +1,6 @@
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
|
@ -1 +1,12 @@
|
||||
SET allow_simdjson=1;
|
||||
|
||||
SELECT JSONLength('"HX-=');
|
||||
SELECT JSONLength('[9]\0\x42\xD3\x36\xE3');
|
||||
SELECT JSONLength(unhex('5B30000E06D7AA5D'));
|
||||
|
||||
|
||||
SET allow_simdjson=0;
|
||||
|
||||
SELECT JSONLength('"HX-=');
|
||||
SELECT JSONLength('[9]\0\x42\xD3\x36\xE3');
|
||||
SELECT JSONLength(unhex('5B30000E06D7AA5D'));
|
||||
|
Loading…
Reference in New Issue
Block a user