123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017 |
- # Copyright 2015 - 2019 The Cockroach Authors. All rights reserved.
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- #
- # This file is derived from the logic test suite in CockroachDB. The
- # original file was retrieved on June 10, 2019 from:
- #
- # https://github.com/cockroachdb/cockroach/blob/d2f7fbf5dd1fc1a099bbad790a2e1f7c60a66cc3/pkg/sql/logictest/testdata/logic_test/json_builtins
- #
- # The original source code is subject to the terms of the Apache
- # 2.0 license, a copy of which can be found in the LICENSE file at the
- # root of this repository.
- mode cockroach
- ## json_typeof and jsonb_typeof
- query T
- SELECT json_typeof('-123.4'::JSON)
- ----
- number
- query T
- SELECT jsonb_typeof('-123.4'::JSON)
- ----
- number
- query T
- SELECT json_typeof('"-123.4"'::JSON)
- ----
- string
- query T
- SELECT jsonb_typeof('"-123.4"'::JSON)
- ----
- string
- query T
- SELECT json_typeof('{"1":{"2":3}}'::JSON)
- ----
- object
- query T
- SELECT jsonb_typeof('{"1":{"2":3}}'::JSON)
- ----
- object
- query T
- SELECT json_typeof('[1, 2, [3]]'::JSON)
- ----
- array
- query T
- SELECT jsonb_typeof('[1, 2, [3]]'::JSON)
- ----
- array
- query T
- SELECT json_typeof('true'::JSON)
- ----
- boolean
- query T
- SELECT jsonb_typeof('true'::JSON)
- ----
- boolean
- query T
- SELECT json_typeof('false'::JSON)
- ----
- boolean
- query T
- SELECT jsonb_typeof('false'::JSON)
- ----
- boolean
- query T
- SELECT json_typeof('null'::JSON)
- ----
- null
- query T
- SELECT jsonb_typeof('null'::JSON)
- ----
- null
- ## array_to_json
- query T
- SELECT array_to_json(ARRAY[[1,2],[3,4]])
- ----
- [[1,2],[3,4]]
- query T
- SELECT array_to_json('{1,2,3}'::INT[])
- ----
- [1,2,3]
- query T
- SELECT array_to_json('{"a","b","c"}'::STRING[])
- ----
- ["a","b","c"]
- query T
- SELECT array_to_json('{1.0,2.0,3.0}'::DECIMAL[])
- ----
- [1.0,2.0,3.0]
- query T
- SELECT array_to_json(NULL)
- ----
- NULL
- query T
- SELECT array_to_json(ARRAY[1,2,3],NULL)
- ----
- NULL
- query T
- SELECT array_to_json(ARRAY[1,2,3],false)
- ----
- [1,2,3]
- query error pq:array_to_json\(\):pretty printing is not supported
- SELECT array_to_json(ARRAY[1,2,3],true)
- query error pq:unknown signature:array_to_json\(string\)
- SELECT array_to_json('hello world')
- ## to_json and to_jsonb
- query T
- SELECT to_json(123::INT)
- ----
- 123
- query T
- SELECT to_json('\a'::TEXT)
- ----
- "\\a"
- query T
- SELECT to_json('\a'::TEXT COLLATE "fr_FR")
- ----
- "\\a"
- query T
- SELECT to_json(3::OID::INT::OID)
- ----
- "3"
- query T
- SELECT to_json('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::UUID);
- ----
- "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
- query T
- SELECT to_json('\x0001'::BYTEA)
- ----
- "\\x0001"
- query T
- SELECT to_json(true::BOOL)
- ----
- true
- query T
- SELECT to_json(false::BOOL)
- ----
- false
- query T
- SELECT to_json('"a"'::JSON)
- ----
- "a"
- query T
- SELECT to_json(1.234::FLOAT)
- ----
- 1.234
- query T
- SELECT to_json(1.234::DECIMAL)
- ----
- 1.234
- query T
- SELECT to_json('10.1.0.0/16'::INET)
- ----
- "10.1.0.0/16"
- query T
- SELECT to_json(ARRAY[[1,2],[3,4]])
- ----
- [[1,2],[3,4]]
- query T
- SELECT to_json('2014-05-28 12:22:35.614298'::TIMESTAMP)
- ----
- "2014-05-28T12:22:35.614298"
- query T
- SELECT to_json('2014-05-28 12:22:35.614298-04'::TIMESTAMPTZ)
- ----
- "2014-05-28T12:22:35.614298-04:00"
- query T
- SELECT to_json('2014-05-28 12:22:35.614298-04'::TIMESTAMP)
- ----
- "2014-05-28T12:22:35.614298"
- query T
- SELECT to_json('2014-05-28'::DATE)
- ----
- "2014-05-28"
- query T
- SELECT to_json('00:00:00'::TIME)
- ----
- "00:00:00"
- query T
- SELECT to_json('2h45m2s234ms'::INTERVAL)
- ----
- "02:45:02.234"
- query T
- SELECT to_json((1,2,'hello',NULL,NULL))
- ----
- {"f1":1,"f2":2,"f3":"hello","f4":null,"f5":null}
- query T
- SELECT to_jsonb(123::INT)
- ----
- 123
- query T
- SELECT to_jsonb('\a'::TEXT)
- ----
- "\\a"
- query T
- SELECT to_jsonb('\a'::TEXT COLLATE "fr_FR")
- ----
- "\\a"
- query T
- SELECT to_jsonb(3::OID::INT::OID)
- ----
- "3"
- query T
- SELECT to_jsonb('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::UUID);
- ----
- "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
- query T
- SELECT to_jsonb('\x0001'::BYTEA)
- ----
- "\\x0001"
- query T
- SELECT to_jsonb(true::BOOL)
- ----
- true
- query T
- SELECT to_jsonb(false::BOOL)
- ----
- false
- query T
- SELECT to_jsonb('"a"'::JSON)
- ----
- "a"
- query T
- SELECT to_jsonb(1.234::FLOAT)
- ----
- 1.234
- query T
- SELECT to_jsonb(1.234::DECIMAL)
- ----
- 1.234
- query T
- SELECT to_jsonb('10.1.0.0/16'::INET)
- ----
- "10.1.0.0/16"
- query T
- SELECT to_jsonb(ARRAY[[1,2],[3,4]])
- ----
- [[1,2],[3,4]]
- query T
- SELECT to_jsonb('2014-05-28 12:22:35.614298'::TIMESTAMP)
- ----
- "2014-05-28T12:22:35.614298"
- query T
- SELECT to_jsonb('2014-05-28 12:22:35.614298-04'::TIMESTAMPTZ)
- ----
- "2014-05-28T12:22:35.614298-04:00"
- query T
- SELECT to_jsonb('2014-05-28 12:22:35.614298-04'::TIMESTAMP)
- ----
- "2014-05-28T12:22:35.614298"
- query T
- SELECT to_jsonb('2014-05-28'::DATE)
- ----
- "2014-05-28"
- query T
- SELECT to_jsonb('00:00:00'::TIME)
- ----
- "00:00:00"
- query T
- SELECT to_jsonb('2h45m2s234ms'::INTERVAL)
- ----
- "02:45:02.234"
- query T
- SELECT to_jsonb((1,2,'hello',NULL,NULL))
- ----
- {"f1":1,"f2":2,"f3":"hello","f4":null,"f5":null}
- ## json_array_elements and jsonb_array_elements
- query T
- SELECT json_array_elements('[1,2,3]'::JSON)
- ----
- 1
- 2
- 3
- query T
- SELECT jsonb_array_elements('[1,2,3]'::JSON)
- ----
- 1
- 2
- 3
- query T
- SELECT json_array_elements('[1,true,null,"text",-1.234,{"2":3,"4":"5"},[1,2,3]]'::JSON)
- ----
- 1
- true
- null
- "text"
- -1.234
- {"2":3,"4":"5"}
- [1,2,3]
- query T
- SELECT json_array_elements('[]'::JSON)
- ----
- query error pq:cannot be called on a non-array
- SELECT json_array_elements('{"1":2}'::JSON)
- query error pq:cannot be called on a non-array
- SELECT jsonb_array_elements('{"1":2}'::JSON)
- ## json_array_elements_text and jsonb_array_elements_text
- query T
- SELECT json_array_elements_text('[1,2,3]'::JSON)
- ----
- 1
- 2
- 3
- query T
- SELECT json_array_elements_text('[1,2,3]'::JSON)
- ----
- 1
- 2
- 3
- query T
- SELECT json_array_elements_text('[1,true,null,"text",-1.234,{"2":3,"4":"5"},[1,2,3]]'::JSON)
- ----
- 1
- true
- NULL
- text
- -1.234
- {"2":3,"4":"5"}
- [1,2,3]
- query T
- SELECT json_array_elements('[]'::JSON)
- ----
- query error pq:cannot be called on a non-array
- SELECT json_array_elements_text('{"1":2}'::JSON)
- query error pq:cannot be called on a non-array
- SELECT jsonb_array_elements_text('{"1":2}'::JSON)
- ## json_object_keys and jsonb_object_keys
- query T
- SELECT json_object_keys('{"1":2,"3":4}'::JSON)
- ----
- 1
- 3
- query T
- SELECT jsonb_object_keys('{"1":2,"3":4}'::JSON)
- ----
- 1
- 3
- query T
- SELECT json_object_keys('{}'::JSON)
- ----
- query T
- SELECT json_object_keys('{"\"1\"":2}'::JSON)
- ----
- "1"
- # Keys are sorted.
- query T
- SELECT json_object_keys('{"a":1,"1":2,"3":{"4":5,"6":7}}'::JSON)
- ----
- 1
- 3
- a
- query error pq:cannot call json_object_keys on a scalar
- SELECT json_object_keys('null'::JSON)
- query error pq:cannot call json_object_keys on an array
- SELECT json_object_keys('[1,2,3]'::JSON)
- ## json_build_object
- query T
- SELECT json_build_object()
- ----
- {}
- query T
- SELECT json_build_object('a',2,'b',4)
- ----
- {"a":2,"b":4}
- query T
- SELECT jsonb_build_object(true,'val',1,0,1.3,2,date '2019-02-03' - date '2019-01-01',4)
- ----
- {"1":0,"1.3":2,"33":4,"true":"val"}
- query T
- SELECT json_build_object('a',1,'b',1.2,'c',true,'d',null,'e','{"x":3,"y":[1,2,3]}'::JSON)
- ----
- {"a":1,"b":1.2,"c":true,"d":null,"e":{"x":3,"y":[1,2,3]}}
- query T
- SELECT json_build_object(
- 'a',json_build_object('b',false,'c',99),
- 'd',json_build_object('e',ARRAY[9,8,7]::int[])
- )
- ----
- {"a":{"b":false,"c":99},"d":{"e":[9,8,7]}}
- query T
- SELECT json_build_object(a,3) FROM (SELECT 1 AS a,2 AS b) r
- ----
- {"1":3}
- query T
- SELECT json_build_object('\a'::TEXT COLLATE "fr_FR",1)
- ----
- {"\\a":1}
- query T
- SELECT json_build_object('\a',1)
- ----
- {"\\a":1}
- query T
- SELECT json_build_object(json_object_keys('{"x":3,"y":4}'::JSON),2)
- ----
- {"x":2}
- {"y":2}
- # Regression for panic when bit array is passed as argument.
- query T
- SELECT json_build_object('a','0100110'::varbit)
- ----
- {"a":"0100110"}
- # even number of arguments
- query error pq:json_build_object\(\):argument list must have even number of elements
- SELECT json_build_object(1,2,3)
- # keys must be scalar and not null
- query error pq:json_build_object\(\):argument 1 cannot be null
- SELECT json_build_object(null,2)
- query error pq:json_build_object\(\):key value must be scalar,not array,tuple,or json
- SELECT json_build_object((1,2),3)
- query error pq:json_build_object\(\):key value must be scalar,not array,tuple,or json
- SELECT json_build_object('{"a":1,"b":2}'::JSON,3)
- query error pq:json_build_object\(\):key value must be scalar,not array,tuple,or json
- SELECT json_build_object('{1,2,3}'::int[],3)
- query T
- SELECT json_extract_path('{"a":1}','a')
- ----
- 1
- query T
- SELECT json_extract_path('{"a":1}','a',NULL)
- ----
- NULL
- query T
- SELECT json_extract_path('{"a":1}')
- ----
- {"a":1}
- query T
- SELECT json_extract_path('{"a":{"b":2}}','a')
- ----
- {"b":2}
- query T
- SELECT json_extract_path('{"a":{"b":2}}','a','b')
- ----
- 2
- query T
- SELECT jsonb_extract_path('{"a":{"b":2}}','a','b')
- ----
- 2
- query T
- SELECT json_extract_path('{"a":{"b":2}}','a','b','c')
- ----
- NULL
- query T
- SELECT jsonb_pretty('{"a":1}')
- ----
- {
- "a":1
- }
- query T
- SELECT '[1,2,3]'::JSON || '[4,5,6]'::JSON
- ----
- [1,2,3,4,5,6]
- query T
- SELECT '{"a":1,"b":2}'::JSON || '{"b":3,"c":4}'
- ----
- {"a":1,"b":3,"c":4}
- query error pgcode 22023 invalid concatenation of jsonb objects
- SELECT '{"a":1,"b":2}'::JSON || '"c"'
- query T
- SELECT json_build_array()
- ----
- []
- query T
- SELECT json_build_array('\x0001'::BYTEA)
- ----
- ["\\x0001"]
- query T
- SELECT json_build_array(1,'1'::JSON,1.2,NULL,ARRAY['x','y'])
- ----
- [1,1,1.2,null,["x","y"]]
- query T
- SELECT jsonb_build_array()
- ----
- []
- query T
- SELECT jsonb_build_array('\x0001'::BYTEA)
- ----
- ["\\x0001"]
- query T
- SELECT jsonb_build_array(1,'1'::JSON,1.2,NULL,ARRAY['x','y'])
- ----
- [1,1,1.2,null,["x","y"]]
- # Regression for cockroach#37318
- query T
- SELECT jsonb_build_array('+Inf'::FLOAT8,'NaN'::FLOAT8)::STRING::JSONB
- ----
- ["Infinity","NaN"]
- query error pq:json_object\(\):array must have even number of elements
- SELECT json_object('{a,b,c}'::TEXT[])
- query error pq:json_object\(\):null value not allowed for object key
- SELECT json_object('{NULL,a}'::TEXT[])
- query error pq:json_object\(\):null value not allowed for object key
- SELECT json_object('{a,b,NULL,"d e f"}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- query error pq:json_object\(\):mismatched array dimensions
- SELECT json_object('{a,b,c,"d e f",g}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- query error pq:json_object\(\):mismatched array dimensions
- SELECT json_object('{a,b,c,"d e f"}'::TEXT[],'{1,2,3,"a b c",g}'::TEXT[])
- query error pq:unknown signature:json_object\(collatedstring\{fr_FR\}\[\]\)
- SELECT json_object(ARRAY['a'::TEXT COLLATE "fr_FR"])
- query T
- SELECT json_object('{}'::TEXT[])
- ----
- {}
- query T
- SELECT json_object('{}'::TEXT[],'{}'::TEXT[])
- ----
- {}
- query T
- SELECT json_object('{b,3,a,1,b,4,a,2}'::TEXT[])
- ----
- {"a":"2","b":"4"}
- query T
- SELECT json_object('{b,b,a,a}'::TEXT[],'{1,2,3,4}'::TEXT[])
- ----
- {"a":"4","b":"2"}
- query T
- SELECT json_object('{a,1,b,2,3,NULL,"d e f","a b c"}'::TEXT[])
- ----
- {"3":null,"a":"1","b":"2","d e f":"a b c"}
- query T
- SELECT json_object('{a,b,"","d e f"}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- ----
- {"":"3","a":"1","b":"2","d e f":"a b c"}
- query T
- SELECT json_object('{a,b,c,"d e f"}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- ----
- {"a":"1","b":"2","c":"3","d e f":"a b c"}
- query error pq:jsonb_object\(\):array must have even number of elements
- SELECT jsonb_object('{a,b,c}'::TEXT[])
- query error pq:jsonb_object\(\):null value not allowed for object key
- SELECT jsonb_object('{NULL,a}'::TEXT[])
- query error pq:jsonb_object\(\):null value not allowed for object key
- SELECT jsonb_object('{a,b,NULL,"d e f"}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- query error pq:jsonb_object\(\):mismatched array dimensions
- SELECT jsonb_object('{a,b,c,"d e f",g}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- query error pq:jsonb_object\(\):mismatched array dimensions
- SELECT jsonb_object('{a,b,c,"d e f"}'::TEXT[],'{1,2,3,"a b c",g}'::TEXT[])
- query error pq:unknown signature:jsonb_object\(collatedstring\{fr_FR\}\[\]\)
- SELECT jsonb_object(ARRAY['a'::TEXT COLLATE "fr_FR"])
- query T
- SELECT jsonb_object('{}'::TEXT[])
- ----
- {}
- query T
- SELECT jsonb_object('{}'::TEXT[],'{}'::TEXT[])
- ----
- {}
- query T
- SELECT jsonb_object('{b,3,a,1,b,4,a,2}'::TEXT[])
- ----
- {"a":"2","b":"4"}
- query T
- SELECT jsonb_object('{b,b,a,a}'::TEXT[],'{1,2,3,4}'::TEXT[])
- ----
- {"a":"4","b":"2"}
- query T
- SELECT jsonb_object('{a,1,b,2,3,NULL,"d e f","a b c"}'::TEXT[])
- ----
- {"3":null,"a":"1","b":"2","d e f":"a b c"}
- query T
- SELECT jsonb_object('{a,b,"","d e f"}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- ----
- {"":"3","a":"1","b":"2","d e f":"a b c"}
- query T
- SELECT jsonb_object('{a,b,c,"d e f"}'::TEXT[],'{1,2,3,"a b c"}'::TEXT[])
- ----
- {"a":"1","b":"2","c":"3","d e f":"a b c"}
- query error pq:cannot deconstruct an array as an object
- SELECT json_each('[1]'::JSON)
- query error pq:cannot deconstruct a scalar
- SELECT json_each('null'::JSON)
- query TT
- SELECT * from json_each('{}') q
- ----
- query TT colnames
- SELECT * from json_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q
- ----
- key value
- f1 [1,2,3]
- f2 {"f3":1}
- f4 null
- f5 99
- f6 "stringy"
- query error pq:cannot deconstruct an array as an object
- SELECT jsonb_each('[1]'::JSON)
- query error pq:cannot deconstruct a scalar
- SELECT jsonb_each('null'::JSON)
- query TT
- SELECT * from jsonb_each('{}') q
- ----
- query TT colnames
- SELECT * from jsonb_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q
- ----
- key value
- f1 [1,2,3]
- f2 {"f3":1}
- f4 null
- f5 99
- f6 "stringy"
- query error pq:cannot deconstruct an array as an object
- SELECT jsonb_each_text('[1]'::JSON)
- query error pq:cannot deconstruct a scalar
- SELECT jsonb_each_text('null'::JSON)
- query TT
- SELECT * from jsonb_each_text('{}') q
- ----
- query TT
- SELECT * from jsonb_each_text('{}') q
- ----
- query TT colnames
- SELECT * from jsonb_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q
- ----
- key value
- f1 [1,2,3]
- f2 {"f3":1}
- f4 NULL
- f5 99
- f6 stringy
- query error pq:cannot deconstruct an array as an object
- SELECT json_each_text('[1]'::JSON)
- query error pq:cannot deconstruct a scalar
- SELECT json_each_text('null'::JSON)
- query TT
- SELECT * from json_each_text('{}') q
- ----
- query TT
- SELECT * from json_each_text('{}') q
- ----
- query TT colnames
- SELECT * from json_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q
- ----
- key value
- f1 [1,2,3]
- f2 {"f3":1}
- f4 NULL
- f5 99
- f6 stringy
- query T
- SELECT json_set('{"a":1}','{a}'::STRING[],'2')
- ----
- {"a":2}
- query T
- SELECT jsonb_set('{"a":1}','{b}'::STRING[],'2')
- ----
- {"a":1,"b":2}
- statement error path element at position 1 is null
- SELECT jsonb_set('{"a":1}',ARRAY[null,'foo']::STRING[],'2')
- statement error path element at position 1 is null
- SELECT jsonb_set('{"a":1}','{null,foo}'::STRING[],'2',true)
- statement error path element at position 2 is null
- SELECT jsonb_set('{"a":1}','{foo,null}'::STRING[],'2',true)
- query T
- SELECT jsonb_set('{"a":1}','{b}'::STRING[],'2',true)
- ----
- {"a":1,"b":2}
- query T
- SELECT jsonb_set('{"a":1}','{b}'::STRING[],'2',false)
- ----
- {"a":1}
- query T
- SELECT jsonb_set('[{"f1":1,"f2":null},2,null,3]','{0,f1}'::STRING[],'[2,3,4]',false)
- ----
- [{"f1":[2,3,4],"f2":null},2,null,3]
- query T
- SELECT jsonb_set('[{"f1":1,"f2":null},2]','{0,f3}'::STRING[],'[2,3,4]')
- ----
- [{"f1":1,"f2":null,"f3":[2,3,4]},2]
- query T
- SELECT jsonb_insert('{"a":[0,1,2]}','{a,1}'::STRING[],'"new_value"');
- ----
- {"a":[0,"new_value",1,2]}
- query T
- SELECT jsonb_insert('[0,1,2,{"a":["a","b","d"]},4]','{3,a,2}'::STRING[],'"c"')
- ----
- [0,1,2,{"a":["a","b","c","d"]},4]
- query T
- SELECT jsonb_insert('{"a":"foo"}','{b}'::STRING[],'"bar"')
- ----
- {"a":"foo","b":"bar"}
- query T
- SELECT jsonb_insert(NULL,'{a}',NULL,false)
- ----
- NULL
- query T
- SELECT jsonb_insert('{"a":[0,1,2]}','{a,1}'::STRING[],'"new_value"',true)
- ----
- {"a":[0,1,"new_value",2]}
- query T
- SELECT jsonb_insert('{"a":[0,1,2]}','{a,-1}'::STRING[],'"new_value"',true)
- ----
- {"a":[0,1,2,"new_value"]}
- query error pq:jsonb_insert\(\):cannot replace existing key
- SELECT jsonb_insert('{"a":"foo"}','{a}'::STRING[],'"new_value"',false)
- query T
- SELECT jsonb_insert('{"a":"foo"}','{a,0}'::STRING[],'"new_value"',false)
- ----
- {"a":"foo"}
- query T
- SELECT jsonb_insert('[0,1,2,3]','{3}'::STRING[],'10',true)
- ----
- [0,1,2,3,10]
- statement error cannot set path in scalar
- SELECT jsonb_insert('1','{a}'::STRING[],'10',true)
- query T
- SELECT jsonb_insert('1',NULL,'10')
- ----
- NULL
- statement error path element at position 1 is null
- SELECT jsonb_insert('{"a":[0,1,2],"b":"hello","c":"world"}','{NULL,a,0}'::STRING[],'"new_val"')
- statement error path element at position 2 is null
- SELECT jsonb_insert('{"a":[0,1,2],"b":"hello","c":"world"}','{a,NULL,0}'::STRING[],'"new_val"')
- query T
- SELECT jsonb_strip_nulls(NULL)
- ----
- NULL
- query T
- SELECT json_strip_nulls('1')
- ----
- 1
- query T
- SELECT json_strip_nulls('"a string"')
- ----
- "a string"
- query T
- SELECT json_strip_nulls('null')
- ----
- null
- query T
- SELECT json_strip_nulls('[1,2,null,3,4]')
- ----
- [1,2,null,3,4]
- query T
- SELECT json_strip_nulls('{"a":1,"b":null,"c":[2,null,3],"d":{"e":4,"f":null}}')
- ----
- {"a":1,"c":[2,null,3],"d":{"e":4}}
- query T
- SELECT json_strip_nulls('[1,{"a":1,"b":null,"c":2},3]')
- ----
- [1,{"a":1,"c":2},3]
- query T
- SELECT jsonb_strip_nulls('{"a":{"b":null,"c":null},"d":{}}')
- ----
- {"a":{},"d":{}}
- query T
- SELECT jsonb_strip_nulls(NULL)
- ----
- NULL
- query T
- SELECT jsonb_strip_nulls('1')
- ----
- 1
- query T
- SELECT jsonb_strip_nulls('"a string"')
- ----
- "a string"
- query T
- SELECT jsonb_strip_nulls('null')
- ----
- null
- query T
- SELECT jsonb_strip_nulls('[1,2,null,3,4]')
- ----
- [1,2,null,3,4]
- query T
- SELECT jsonb_strip_nulls('{"a":1,"b":null,"c":[2,null,3],"d":{"e":4,"f":null}}')
- ----
- {"a":1,"c":[2,null,3],"d":{"e":4}}
- query T
- SELECT jsonb_strip_nulls('[1,{"a":1,"b":null,"c":2},3]')
- ----
- [1,{"a":1,"c":2},3]
- query T
- SELECT jsonb_strip_nulls('{"a":{"b":null,"c":null},"d":{}}')
- ----
- {"a":{},"d":{}}
- query error pq:json_array_length\(\):cannot get array length of a non-array
- SELECT json_array_length('{"f1":1,"f2":[5,6]}')
- query error pq:json_array_length\(\):cannot get array length of a scalar
- SELECT json_array_length('4')
- query I
- SELECT json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]')
- ----
- 5
- query I
- SELECT json_array_length('[]')
- ----
- 0
- query error pq:jsonb_array_length\(\):cannot get array length of a non-array
- SELECT jsonb_array_length('{"f1":1,"f2":[5,6]}')
- query error pq:jsonb_array_length\(\):cannot get array length of a scalar
- SELECT jsonb_array_length('4')
- query I
- SELECT jsonb_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]')
- ----
- 5
- query I
- SELECT jsonb_array_length('[]')
- ----
- 0
|