@@ -176,6 +176,34 @@ do_execsql_test json-blob-text-object {
176176 SELECT json(x'7b226b6579223a2276616c7565227d');
177177} {{{" key" :" value" }}}
178178
179+ do_execsql_test jsonb-blob-text-true {
180+ SELECT json(jsonb(x'74727565'));
181+ } {true}
182+
183+ do_execsql_test jsonb-blob-text-false {
184+ SELECT json(jsonb(x'66616c7365'));
185+ } {false}
186+
187+ do_execsql_test jsonb-blob-text-null {
188+ SELECT json(jsonb(x'6e756c6c'));
189+ } {null}
190+
191+ do_execsql_test jsonb-blob-text-number {
192+ SELECT json(jsonb(x'313233'));
193+ } {123}
194+
195+ do_execsql_test jsonb-blob-text-string {
196+ SELECT json(jsonb(x'2268656c6c6f22'));
197+ } {{" hello" }}
198+
199+ do_execsql_test jsonb-blob-text-array {
200+ SELECT json(jsonb(x'5b312c322c335d'));
201+ } {{[1,2,3]}}
202+
203+ do_execsql_test jsonb-blob-text-object {
204+ SELECT json(jsonb(x'7b226b6579223a2276616c7565227d'));
205+ } {{{" key" :" value" }}}
206+
179207do_execsql_test json-pretty-ident-1 {
180208 SELECT json_pretty('{x: 1}', '');
181209} {{{
@@ -254,7 +282,6 @@ do_execsql_test json_bare_negative_infinity {
254282 SELECT json(-1e309);
255283} {{-9e999}}
256284
257-
258285do_execsql_test json_extract_null {
259286 SELECT json_extract(null, '$')
260287} {{}}
@@ -766,6 +793,118 @@ do_execsql_test_in_memory_error_content json_replace_blob_error {
766793 SELECT json_replace('{" field" :1}', '$.field', a) FROM t;
767794} {JSON cannot hold BLOB values}
768795
796+ do_execsql_test_in_memory_error_content json_array_blob_error {
797+ CREATE TABLE t(a);
798+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
799+ SELECT json_array(a) FROM t;
800+ } {JSON cannot hold BLOB values}
801+
802+ do_execsql_test_in_memory_error_content jsonb_object_blob_error {
803+ CREATE TABLE t(a);
804+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
805+ SELECT jsonb_object('a', a) FROM t;
806+ } {JSON cannot hold BLOB values}
807+
808+ do_execsql_test_in_memory_error_content jsonb_set_blob_error {
809+ CREATE TABLE t(a);
810+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
811+ SELECT jsonb_set('{}', '$.field', a) FROM t;
812+ } {JSON cannot hold BLOB values}
813+
814+ do_execsql_test_in_memory_error_content jsonb_insert_blob_error {
815+ CREATE TABLE t(a);
816+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
817+ SELECT jsonb_insert('{}', '$.field', a) FROM t;
818+ } {JSON cannot hold BLOB values}
819+
820+ do_execsql_test_in_memory_error_content jsonb_replace_blob_error {
821+ CREATE TABLE t(a);
822+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
823+ SELECT jsonb_replace('{" field" :1}', '$.field', a) FROM t;
824+ } {JSON cannot hold BLOB values}
825+
826+ do_execsql_test_in_memory_error_content jsonb_array_blob_error {
827+ CREATE TABLE t(a);
828+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
829+ SELECT jsonb_array(a) FROM t;
830+ } {JSON cannot hold BLOB values}
831+
832+ do_execsql_test_on_specific_db {:memory:} jsonb_object_with_json_conversion {
833+ CREATE TABLE t1(data TEXT);
834+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
835+ SELECT json(jsonb_object('original', json(data), 'new', 'value')) FROM t1;
836+ } {{{" original" :{" name" :" Alice" ," age" :30}," new" :" value" }}}
837+
838+ do_execsql_test_on_specific_db {:memory:} json_object_with_jsonb_conversion {
839+ CREATE TABLE t1(data BLOB);
840+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
841+ SELECT json_object('original', json(data), 'new', 'value') FROM t1;
842+ } {{{" original" :{" name" :" Bob" ," age" :25}," new" :" value" }}}
843+
844+ do_execsql_test_on_specific_db {:memory:} jsonb_set_with_json_conversion {
845+ CREATE TABLE t1(data TEXT);
846+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
847+ SELECT json(jsonb_set(json(data), '$.city', '" NY" ')) FROM t1;
848+ } {{{" name" :" Alice" ," age" :30," city" :" \" NY\" " }}}
849+
850+
851+ do_execsql_test_on_specific_db {:memory:} json_set_with_jsonb_conversion {
852+ CREATE TABLE t1(data BLOB);
853+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
854+ SELECT json_set(json(data), '$.city', '" NY" ') FROM t1;
855+ } {{{" name" :" Bob" ," age" :25," city" :" \" NY\" " }}}
856+
857+
858+ do_execsql_test_on_specific_db {:memory:} jsonb_insert_with_json_conversion {
859+ CREATE TABLE t1(data TEXT);
860+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
861+ SELECT json(jsonb_insert(json(data), '$.city', '" NY" ')) FROM t1;
862+ } {{{" name" :" Alice" ," age" :30," city" :" \" NY\" " }}}
863+
864+
865+ do_execsql_test_on_specific_db {:memory:} json_insert_with_jsonb_conversion {
866+ CREATE TABLE t1(data BLOB);
867+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
868+ SELECT json_insert(json(data), '$.city', '" NY" ') FROM t1;
869+ } {{{" name" :" Bob" ," age" :25," city" :" \" NY\" " }}}
870+
871+
872+ do_execsql_test_on_specific_db {:memory:} jsonb_replace_with_json_conversion {
873+ CREATE TABLE t1(data TEXT);
874+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
875+ SELECT json(jsonb_replace(json(data), '$.age', '31')) FROM t1;
876+ } {{{" name" :" Alice" ," age" :" 31" }}}
877+
878+ do_execsql_test_on_specific_db {:memory:} json_replace_with_jsonb_conversion {
879+ CREATE TABLE t1(data BLOB);
880+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
881+ SELECT json_replace(json(data), '$.age', '26') FROM t1;
882+ } {{{" name" :" Bob" ," age" :" 26" }}}
883+
884+ do_execsql_test_on_specific_db {:memory:} jsonb_array_with_json_conversion {
885+ CREATE TABLE t1(data TEXT);
886+ INSERT INTO t1 VALUES ('{" name" :" Alice" }');
887+ SELECT json(jsonb_array(json(data), 'extra')) FROM t1;
888+ } {{[{" name" :" Alice" }," extra" ]}}
889+
890+ do_execsql_test_on_specific_db {:memory:} json_array_with_jsonb_conversion {
891+ CREATE TABLE t1(data BLOB);
892+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" }'));
893+ SELECT json_array(json(data), 'extra') FROM t1;
894+ } {{[{" name" :" Bob" }," extra" ]}}
895+
896+ do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_extract {
897+ CREATE TABLE t1(data BLOB);
898+ INSERT INTO t1 VALUES (jsonb('{" name" :" Alice" ," age" :30}'));
899+ SELECT json_extract(json(jsonb_set(data, '$.city', '" NY" ')), '$.city') FROM t1;
900+ } {{" NY" }}
901+
902+ do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_object {
903+ CREATE TABLE t1(text_data TEXT, blob_data BLOB);
904+ INSERT INTO t1 VALUES ('{" a" :1}', jsonb('{" b" :2}'));
905+ SELECT json_object('text', json(text_data), 'blob', json(blob_data)) FROM t1;
906+ } {{{" text" :{" a" :1}," blob" :{" b" :2}}}}
907+
769908do_execsql_test json_object_json_array {
770909 SELECT json_object('ex',json('[52,3]'));
771910} {{{" ex" :[52,3]}}}
0 commit comments