@@ -254,7 +254,6 @@ do_execsql_test json_bare_negative_infinity {
254254 SELECT json(-1e309);
255255} {{-9e999}}
256256
257-
258257do_execsql_test json_extract_null {
259258 SELECT json_extract(null, '$')
260259} {{}}
@@ -766,6 +765,118 @@ do_execsql_test_in_memory_error_content json_replace_blob_error {
766765 SELECT json_replace('{" field" :1}', '$.field', a) FROM t;
767766} {JSON cannot hold BLOB values}
768767
768+ do_execsql_test_in_memory_error_content json_array_blob_error {
769+ CREATE TABLE t(a);
770+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
771+ SELECT json_array(a) FROM t;
772+ } {JSON cannot hold BLOB values}
773+
774+ do_execsql_test_in_memory_error_content jsonb_object_blob_error {
775+ CREATE TABLE t(a);
776+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
777+ SELECT jsonb_object('a', a) FROM t;
778+ } {JSON cannot hold BLOB values}
779+
780+ do_execsql_test_in_memory_error_content jsonb_set_blob_error {
781+ CREATE TABLE t(a);
782+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
783+ SELECT jsonb_set('{}', '$.field', a) FROM t;
784+ } {JSON cannot hold BLOB values}
785+
786+ do_execsql_test_in_memory_error_content jsonb_insert_blob_error {
787+ CREATE TABLE t(a);
788+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
789+ SELECT jsonb_insert('{}', '$.field', a) FROM t;
790+ } {JSON cannot hold BLOB values}
791+
792+ do_execsql_test_in_memory_error_content jsonb_replace_blob_error {
793+ CREATE TABLE t(a);
794+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
795+ SELECT jsonb_replace('{" field" :1}', '$.field', a) FROM t;
796+ } {JSON cannot hold BLOB values}
797+
798+ do_execsql_test_in_memory_error_content jsonb_array_blob_error {
799+ CREATE TABLE t(a);
800+ INSERT INTO t VALUES (x'74727565'); -- ASCII " true" ;
801+ SELECT jsonb_array(a) FROM t;
802+ } {JSON cannot hold BLOB values}
803+
804+ do_execsql_test_on_specific_db {:memory:} jsonb_object_with_json_conversion {
805+ CREATE TABLE t1(data TEXT);
806+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
807+ SELECT json(jsonb_object('original', json(data), 'new', 'value')) FROM t1;
808+ } {{{" original" :{" name" :" Alice" ," age" :30}," new" :" value" }}}
809+
810+ do_execsql_test_on_specific_db {:memory:} json_object_with_jsonb_conversion {
811+ CREATE TABLE t1(data BLOB);
812+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
813+ SELECT json_object('original', json(data), 'new', 'value') FROM t1;
814+ } {{{" original" :{" name" :" Bob" ," age" :25}," new" :" value" }}}
815+
816+ do_execsql_test_on_specific_db {:memory:} jsonb_set_with_json_conversion {
817+ CREATE TABLE t1(data TEXT);
818+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
819+ SELECT json(jsonb_set(json(data), '$.city', '" NY" ')) FROM t1;
820+ } {{{" name" :" Alice" ," age" :30," city" :" \" NY\" " }}}
821+
822+
823+ do_execsql_test_on_specific_db {:memory:} json_set_with_jsonb_conversion {
824+ CREATE TABLE t1(data BLOB);
825+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
826+ SELECT json_set(json(data), '$.city', '" NY" ') FROM t1;
827+ } {{{" name" :" Bob" ," age" :25," city" :" \" NY\" " }}}
828+
829+
830+ do_execsql_test_on_specific_db {:memory:} jsonb_insert_with_json_conversion {
831+ CREATE TABLE t1(data TEXT);
832+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
833+ SELECT json(jsonb_insert(json(data), '$.city', '" NY" ')) FROM t1;
834+ } {{{" name" :" Alice" ," age" :30," city" :" \" NY\" " }}}
835+
836+
837+ do_execsql_test_on_specific_db {:memory:} json_insert_with_jsonb_conversion {
838+ CREATE TABLE t1(data BLOB);
839+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
840+ SELECT json_insert(json(data), '$.city', '" NY" ') FROM t1;
841+ } {{{" name" :" Bob" ," age" :25," city" :" \" NY\" " }}}
842+
843+
844+ do_execsql_test_on_specific_db {:memory:} jsonb_replace_with_json_conversion {
845+ CREATE TABLE t1(data TEXT);
846+ INSERT INTO t1 VALUES ('{" name" :" Alice" ," age" :30}');
847+ SELECT json(jsonb_replace(json(data), '$.age', '31')) FROM t1;
848+ } {{{" name" :" Alice" ," age" :" 31" }}}
849+
850+ do_execsql_test_on_specific_db {:memory:} json_replace_with_jsonb_conversion {
851+ CREATE TABLE t1(data BLOB);
852+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" ," age" :25}'));
853+ SELECT json_replace(json(data), '$.age', '26') FROM t1;
854+ } {{{" name" :" Bob" ," age" :" 26" }}}
855+
856+ do_execsql_test_on_specific_db {:memory:} jsonb_array_with_json_conversion {
857+ CREATE TABLE t1(data TEXT);
858+ INSERT INTO t1 VALUES ('{" name" :" Alice" }');
859+ SELECT json(jsonb_array(json(data), 'extra')) FROM t1;
860+ } {{[{" name" :" Alice" }," extra" ]}}
861+
862+ do_execsql_test_on_specific_db {:memory:} json_array_with_jsonb_conversion {
863+ CREATE TABLE t1(data BLOB);
864+ INSERT INTO t1 VALUES (jsonb('{" name" :" Bob" }'));
865+ SELECT json_array(json(data), 'extra') FROM t1;
866+ } {{[{" name" :" Bob" }," extra" ]}}
867+
868+ do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_extract {
869+ CREATE TABLE t1(data BLOB);
870+ INSERT INTO t1 VALUES (jsonb('{" name" :" Alice" ," age" :30}'));
871+ SELECT json_extract(json(jsonb_set(data, '$.city', '" NY" ')), '$.city') FROM t1;
872+ } {{" NY" }}
873+
874+ do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_object {
875+ CREATE TABLE t1(text_data TEXT, blob_data BLOB);
876+ INSERT INTO t1 VALUES ('{" a" :1}', jsonb('{" b" :2}'));
877+ SELECT json_object('text', json(text_data), 'blob', json(blob_data)) FROM t1;
878+ } {{{" text" :{" a" :1}," blob" :{" b" :2}}}}
879+
769880do_execsql_test json_object_json_array {
770881 SELECT json_object('ex',json('[52,3]'));
771882} {{{" ex" :[52,3]}}}
0 commit comments