2021-09-12 12:35:27 +00:00
-- Tags: no-fasttest
2019-07-11 08:39:30 +00:00
SELECT ' --allow_simdjson=1-- ' ;
2019-05-16 19:39:42 +00:00
SET allow_simdjson = 1 ;
2019-05-13 23:44:55 +00:00
SELECT ' --JSONLength-- ' ;
2019-05-10 09:15:10 +00:00
SELECT JSONLength ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' ) ;
2019-05-13 23:44:55 +00:00
SELECT JSONLength ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
SELECT JSONLength ( ' {} ' ) ;
SELECT ' --JSONHas-- ' ;
2019-05-10 09:15:10 +00:00
SELECT JSONHas ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' a ' ) ;
SELECT JSONHas ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
2019-05-13 23:44:55 +00:00
SELECT JSONHas ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' c ' ) ;
2019-10-12 11:42:43 +00:00
SELECT ' --isValidJSON-- ' ;
SELECT isValidJSON ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' ) ;
SELECT isValidJSON ( ' not a json ' ) ;
SELECT isValidJSON ( ' "HX-= ' ) ;
2019-05-13 23:44:55 +00:00
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]} ' ) ;
2019-07-11 08:39:30 +00:00
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) ' ) ;
2019-08-28 22:51:02 +00:00
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(a Int, b Int) ' ) ;
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(c Int, a Int) ' ) ;
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(b Int, d Int) ' ) ;
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(Int, Int) ' ) ;
SELECT JSONExtract ( ' {"a":3} ' , ' Tuple(Int, Int) ' ) ;
SELECT JSONExtract ( ' [3,5,7] ' , ' Tuple(Int, Int) ' ) ;
SELECT JSONExtract ( ' [3] ' , ' Tuple(Int, Int) ' ) ;
2021-07-01 16:46:34 +00:00
SELECT JSONExtract ( ' {"a":123456, "b":3.55} ' , ' Tuple(a LowCardinality(Int32), b Decimal(5, 2)) ' ) ;
SELECT JSONExtract ( ' {"a":1, "b":"417ddc5d-e556-4d27-95dd-a34d84e46a50"} ' , ' Tuple(a Int8, b UUID) ' ) ;
SELECT JSONExtract ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' a ' , ' LowCardinality(String) ' ) ;
SELECT JSONExtract ( ' {"a":3333.6333333333333333333333, "b":"test"} ' , ' Tuple(a Decimal(10,1), b LowCardinality(String)) ' ) ;
SELECT JSONExtract ( ' {"a":3333.6333333333333333333333, "b":"test"} ' , ' Tuple(a Decimal(20,10), b LowCardinality(String)) ' ) ;
SELECT JSONExtract ( ' {"a":123456.123456} ' , ' a ' , ' Decimal(20, 4) ' ) as a , toTypeName ( a ) ;
2021-07-04 10:31:44 +00:00
SELECT toDecimal64 ( 123456789012345 . 12 , 4 ) , JSONExtract ( ' {"a":123456789012345.12} ' , ' a ' , ' Decimal(30, 4) ' ) ;
SELECT toDecimal128 ( 1234567890 . 12345678901234567890 , 20 ) , JSONExtract ( ' {"a":1234567890.12345678901234567890, "b":"test"} ' , ' Tuple(a Decimal(35,20), b LowCardinality(String)) ' ) ;
SELECT toDecimal256 ( 1234567890 . 123456789012345678901234567890 , 30 ) , JSONExtract ( ' {"a":1234567890.12345678901234567890, "b":"test"} ' , ' Tuple(a Decimal(45,30), b LowCardinality(String)) ' ) ;
2019-07-11 08:39:30 +00:00
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 ' ) ;
2021-07-01 16:46:34 +00:00
SELECT JSONExtractKeysAndValues ( ' {"a": "hello", "b": "world"} ' , ' LowCardinality(String) ' ) ;
2019-07-11 08:39:30 +00:00
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 ' ) ;
2020-04-20 10:08:39 +00:00
SELECT ' --JSONExtractArrayRaw-- ' ;
SELECT JSONExtractArrayRaw ( ' ' ) ;
SELECT JSONExtractArrayRaw ( ' {"a": "hello", "b": "not_array"} ' ) ;
SELECT JSONExtractArrayRaw ( ' [] ' ) ;
SELECT JSONExtractArrayRaw ( ' [[],[]] ' ) ;
SELECT JSONExtractArrayRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
SELECT JSONExtractArrayRaw ( ' [1,2,3,4,5,"hello"] ' ) ;
SELECT JSONExtractArrayRaw ( arrayJoin ( JSONExtractArrayRaw ( ' [[1,2,3],[4,5,6]] ' ) ) ) ;
SELECT ' --JSONExtractKeysAndValuesRaw-- ' ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' a ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}} ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}} ' , ' c ' ) ;
2019-07-11 08:39:30 +00:00
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 ) ;
2020-07-10 14:04:20 +00:00
SELECT ' --show error: type should be const string ' ;
SELECT JSONExtractKeysAndValues ( [ ] , JSONLength ( ' ^?V{LSwp ' ) ) ; -- { serverError 44 }
WITH ' {"i": 1, "f": 1.2} ' AS json SELECT JSONExtract ( json , ' i ' , JSONType ( json , ' i ' ) ) ; -- { serverError 44 }
2019-07-11 08:39:30 +00:00
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 ' ) ;
2020-04-20 10:08:39 +00:00
SELECT ' --isValidJSON-- ' ;
SELECT isValidJSON ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' ) ;
SELECT isValidJSON ( ' not a json ' ) ;
SELECT isValidJSON ( ' "HX-= ' ) ;
2019-07-11 08:39:30 +00:00
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]} ' ) ;
2019-05-10 09:15:10 +00:00
SELECT JSONType ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
2019-05-13 23:44:55 +00:00
2019-05-16 13:35:31 +00:00
SELECT ' --JSONExtract<numeric>-- ' ;
2019-05-10 09:15:10 +00:00
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 ) ;
2019-05-13 23:44:55 +00:00
SELECT JSONExtractBool ( ' {"passed": true} ' , ' passed ' ) ;
2019-05-16 17:43:01 +00:00
SELECT JSONExtractBool ( ' "HX-= ' ) ;
2019-05-13 23:44:55 +00:00
2019-05-16 13:35:31 +00:00
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 ' ) ;
2019-05-13 23:44:55 +00:00
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) ' ) ;
2019-05-16 13:35:31 +00:00
SELECT JSONExtract ( ' {"passed": true} ' , ' passed ' , ' UInt8 ' ) ;
2019-05-13 23:44:55 +00:00
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) ' ) ;
2019-08-28 22:51:02 +00:00
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(a Int, b Int) ' ) ;
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(c Int, a Int) ' ) ;
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(b Int, d Int) ' ) ;
SELECT JSONExtract ( ' {"a":3,"b":5,"c":7} ' , ' Tuple(Int, Int) ' ) ;
SELECT JSONExtract ( ' {"a":3} ' , ' Tuple(Int, Int) ' ) ;
SELECT JSONExtract ( ' [3,5,7] ' , ' Tuple(Int, Int) ' ) ;
SELECT JSONExtract ( ' [3] ' , ' Tuple(Int, Int) ' ) ;
2019-05-13 23:44:55 +00:00
2019-05-16 13:35:31 +00:00
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 ' ) ;
2019-05-13 23:44:55 +00:00
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 ) ;
2019-05-13 13:46:19 +00:00
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 ) ;
2019-05-13 23:44:55 +00:00
SELECT JSONExtractRaw ( ' {"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}} ' , ' c ' , ' d ' , 3 ) ;
SELECT JSONExtractRaw ( ' {"passed": true} ' ) ;
SELECT JSONExtractRaw ( ' {} ' ) ;
2019-05-27 18:46:55 +00:00
SELECT JSONExtractRaw ( ' {"abc":"\\n\\u0000"} ' , ' abc ' ) ;
SELECT JSONExtractRaw ( ' {"abc":"\\u263a"} ' , ' abc ' ) ;
2019-12-08 14:24:37 +00:00
SELECT ' --JSONExtractArrayRaw-- ' ;
SELECT JSONExtractArrayRaw ( ' ' ) ;
SELECT JSONExtractArrayRaw ( ' {"a": "hello", "b": "not_array"} ' ) ;
SELECT JSONExtractArrayRaw ( ' [] ' ) ;
SELECT JSONExtractArrayRaw ( ' [[],[]] ' ) ;
SELECT JSONExtractArrayRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
SELECT JSONExtractArrayRaw ( ' [1,2,3,4,5,"hello"] ' ) ;
SELECT JSONExtractArrayRaw ( arrayJoin ( JSONExtractArrayRaw ( ' [[1,2,3],[4,5,6]] ' ) ) ) ;
2020-04-20 10:08:39 +00:00
SELECT ' --JSONExtractKeysAndValuesRaw-- ' ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' a ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' , ' b ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300]} ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}} ' ) ;
SELECT JSONExtractKeysAndValuesRaw ( ' {"a": "hello", "b": [-100, 200.0, 300], "c":{"d":[121,144]}} ' , ' c ' ) ;
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 ) ;
2020-07-10 14:04:20 +00:00
SELECT ' --show error: type should be const string ' ;
SELECT JSONExtractKeysAndValues ( [ ] , JSONLength ( ' ^?V{LSwp ' ) ) ; -- { serverError 44 }
WITH ' {"i": 1, "f": 1.2} ' AS json SELECT JSONExtract ( json , ' i ' , JSONType ( json , ' i ' ) ) ; -- { serverError 44 }