]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New test cases for JSONB.
authordrh <>
Mon, 2 Oct 2023 23:56:46 +0000 (23:56 +0000)
committerdrh <>
Mon, 2 Oct 2023 23:56:46 +0000 (23:56 +0000)
FossilOrigin-Name: 6d4aeff5751722c83ebb0e1f21072b72be418c64dcf28ee032d3a548e1b3a951

manifest
manifest.uuid
test/json102.test

index 02e0ac823a42f87b9c4d8038c257807eead68a88..c3140c8eeed3d4206571c5868143235c1b649137 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sjsonb_insert()\sso\sthat\sit\sdoes\snot\sbehave\slike\sjsonb_set().\nNew\stest\scases\sadded.
-D 2023-10-02T20:16:06.301
+C New\stest\scases\sfor\sJSONB.
+D 2023-10-02T23:56:46.985
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1304,7 +1304,7 @@ F test/json/json-q1-b.txt 606818a5fba6d9e418c9f4ea7d8418af026775042dad81439b7244
 F test/json/json-q1.txt 65f9d1cdcc4cffa9823fb73ed936aae5658700cd001fde448f68bfb91c807307
 F test/json/json-speed-check.sh b060a9a6c696c0a807d8929400fa11bd7113edc58b0d66b9795f424f8d0db326 x
 F test/json101.test e8ccd09f965c594f38ef486ddf7913f0fcac97be20a785a41c3d7cd4289e82de
-F test/json102.test d89476e2fb515c8c2660b1dcdd9772ac8f17bb538d12e7b7f44dfa46fc899aa8
+F test/json102.test 557a46e16df1aa9bdbc4076a71a45814ea0e7503d6621d87d42a8c04cbc2b0ef
 F test/json103.test 53df87f83a4e5fa0c0a56eb29ff6c94055c6eb919f33316d62161a8880112dbe
 F test/json104.test 1b844a70cddcfa2e4cd81a5db0657b2e61e7f00868310f24f56a9ba0114348c1
 F test/json105.test 11670a4387f4308ae0318cadcbd6a918ea7edcd19fbafde020720a073952675d
@@ -2123,8 +2123,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P d624c31e5c49e1ce63b4b72caa42a61c5167866f47d842fbcfe4e826fd079d7c
-R f84ac9b23e77db6a3aeb1eb8d5ee202d
+P 54197149b811d30b6c4487eedf5692b164ed0f90cfcc541aa3157094f5f17f6a
+R f7716cc560ac345b0556f46a68783d4e
 U drh
-Z 7bfe4ac791f85f5c6a70ea3c48417630
+Z aa79deaa2b4777d46e48ea5272670f4a
 # Remove this line to create a well-formed Fossil manifest.
index bb4d24251bc2a637956bbe165e3ffc58ed76eb56..cc209c225ae2b0db37ad49e23a1cc107b7537c86 100644 (file)
@@ -1 +1 @@
-54197149b811d30b6c4487eedf5692b164ed0f90cfcc541aa3157094f5f17f6a
\ No newline at end of file
+6d4aeff5751722c83ebb0e1f21072b72be418c64dcf28ee032d3a548e1b3a951
\ No newline at end of file
index 8ada49d7ae31b8437fab78765ec33d170902b054..15a54b47c4bba3cbdd1a2035c29ab216873cb49e 100644 (file)
@@ -222,87 +222,291 @@ do_execsql_test json102-320-4 {
 do_execsql_test json102-330 {
   SELECT json_insert('{"a":2,"c":4}', '$.e', 99);
 } {{{"a":2,"c":4,"e":99}}}
+do_execsql_test json102-330-2 {
+  SELECT json_insert(jsonb('{"a":2,"c":4}'), '$.e', 99);
+} {{{"a":2,"c":4,"e":99}}}
+do_execsql_test json102-330-3 {
+  SELECT json(jsonb_insert('{"a":2,"c":4}', '$.e', 99));
+} {{{"a":2,"c":4,"e":99}}}
+do_execsql_test json102-330-4 {
+  SELECT json(jsonb_insert(jsonb('{"a":2,"c":4}'), '$.e', 99));
+} {{{"a":2,"c":4,"e":99}}}
 do_execsql_test json102-340 {
   SELECT json_replace('{"a":2,"c":4}', '$.a', 99);
 } {{{"a":99,"c":4}}}
+do_execsql_test json102-340-2 {
+  SELECT json_replace(jsonb('{"a":2,"c":4}'), '$.a', 99);
+} {{{"a":99,"c":4}}}
+do_execsql_test json102-340-3 {
+  SELECT json(jsonb_replace('{"a":2,"c":4}', '$.a', 99));
+} {{{"a":99,"c":4}}}
+do_execsql_test json102-340-4 {
+  SELECT json(jsonb_replace(jsonb('{"a":2,"c":4}'), '$.a', 99));
+} {{{"a":99,"c":4}}}
 do_execsql_test json102-350 {
   SELECT json_replace('{"a":2,"c":4}', '$.e', 99);
 } {{{"a":2,"c":4}}}
+do_execsql_test json102-350-2 {
+  SELECT json_replace(jsonb('{"a":2,"c":4}'), '$.e', 99);
+} {{{"a":2,"c":4}}}
+do_execsql_test json102-350-3 {
+  SELECT json(jsonb_replace('{"a":2,"c":4}', '$.e', 99));
+} {{{"a":2,"c":4}}}
+do_execsql_test json102-350-4 {
+  SELECT json(jsonb_replace(jsonb('{"a":2,"c":4}'), '$.e', 99));
+} {{{"a":2,"c":4}}}
 do_execsql_test json102-360 {
   SELECT json_set('{"a":2,"c":4}', '$.a', 99);
 } {{{"a":99,"c":4}}}
+do_execsql_test json102-360-2 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.a', 99);
+} {{{"a":99,"c":4}}}
+do_execsql_test json102-360-3 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.a', 99));
+} {{{"a":99,"c":4}}}
+do_execsql_test json102-360-4 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.a', 99));
+} {{{"a":99,"c":4}}}
 do_execsql_test json102-370 {
   SELECT json_set('{"a":2,"c":4}', '$.e', 99);
 } {{{"a":2,"c":4,"e":99}}}
+do_execsql_test json102-370-2 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.e', 99);
+} {{{"a":2,"c":4,"e":99}}}
+do_execsql_test json102-370-3 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.e', 99));
+} {{{"a":2,"c":4,"e":99}}}
+do_execsql_test json102-370-4 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.e', 99));
+} {{{"a":2,"c":4,"e":99}}}
 do_execsql_test json102-380 {
   SELECT json_set('{"a":2,"c":4}', '$.c', '[97,96]');
 } {{{"a":2,"c":"[97,96]"}}}
+do_execsql_test json102-380-2 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.c', '[97,96]');
+} {{{"a":2,"c":"[97,96]"}}}
+do_execsql_test json102-380-3 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.c', '[97,96]'));
+} {{{"a":2,"c":"[97,96]"}}}
+do_execsql_test json102-380-4 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.c', '[97,96]'));
+} {{{"a":2,"c":"[97,96]"}}}
 do_execsql_test json102-390 {
   SELECT json_set('{"a":2,"c":4}', '$.c', json('[97,96]'));
 } {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-2 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.c', json('[97,96]'));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-3 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.c', json('[97,96]')));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-4 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.c', json('[97,96]')));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-5 {
+  SELECT json_set('{"a":2,"c":4}', '$.c', jsonb('[97,96]'));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-6 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.c', jsonb('[97,96]'));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-7 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.c', jsonb('[97,96]')));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-390-8 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.c', jsonb('[97,96]')));
+} {{{"a":2,"c":[97,96]}}}
 do_execsql_test json102-400 {
   SELECT json_set('{"a":2,"c":4}', '$.c', json_array(97,96));
 } {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-2 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.c', json_array(97,96));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-3 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.c', json_array(97,96)));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-4 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.c', json_array(97,96)));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-5 {
+  SELECT json_set('{"a":2,"c":4}', '$.c', jsonb_array(97,96));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-6 {
+  SELECT json_set(jsonb('{"a":2,"c":4}'), '$.c', jsonb_array(97,96));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-7 {
+  SELECT json(jsonb_set('{"a":2,"c":4}', '$.c', jsonb_array(97,96)));
+} {{{"a":2,"c":[97,96]}}}
+do_execsql_test json102-400-8 {
+  SELECT json(jsonb_set(jsonb('{"a":2,"c":4}'), '$.c', jsonb_array(97,96)));
+} {{{"a":2,"c":[97,96]}}}
 do_execsql_test json102-410 {
   SELECT json_object('a',2,'c',4);
 } {{{"a":2,"c":4}}}
+do_execsql_test json102-410b {
+  SELECT json(jsonb_object('a',2,'c',4));
+} {{{"a":2,"c":4}}}
 do_execsql_test json102-420 {
   SELECT json_object('a',2,'c','{e:5}');
 } {{{"a":2,"c":"{e:5}"}}}
+do_execsql_test json102-420b {
+  SELECT json(jsonb_object('a',2,'c','{e:5}'));
+} {{{"a":2,"c":"{e:5}"}}}
 do_execsql_test json102-430 {
   SELECT json_object('a',2,'c',json_object('e',5));
 } {{{"a":2,"c":{"e":5}}}}
+do_execsql_test json102-430-2 {
+  SELECT json(jsonb_object('a',2,'c',json_object('e',5)));
+} {{{"a":2,"c":{"e":5}}}}
+do_execsql_test json102-430-3 {
+  SELECT json_object('a',2,'c',jsonb_object('e',5));
+} {{{"a":2,"c":{"e":5}}}}
+do_execsql_test json102-430-4 {
+  SELECT json(jsonb_object('a',2,'c',jsonb_object('e',5)));
+} {{{"a":2,"c":{"e":5}}}}
 do_execsql_test json102-440 {
   SELECT json_remove('[0,1,2,3,4]','$[2]');
 } {{[0,1,3,4]}}
+do_execsql_test json102-440-2 {
+  SELECT json_remove(jsonb('[0,1,2,3,4]'),'$[2]');
+} {{[0,1,3,4]}}
+do_execsql_test json102-440-3 {
+  SELECT json(jsonb_remove('[0,1,2,3,4]','$[2]'));
+} {{[0,1,3,4]}}
+do_execsql_test json102-440-4 {
+  SELECT json(jsonb_remove(jsonb('[0,1,2,3,4]'),'$[2]'));
+} {{[0,1,3,4]}}
 do_execsql_test json102-450 {
   SELECT json_remove('[0,1,2,3,4]','$[2]','$[0]');
 } {{[1,3,4]}}
+do_execsql_test json102-450-2 {
+  SELECT json_remove(jsonb('[0,1,2,3,4]'),'$[2]','$[0]');
+} {{[1,3,4]}}
+do_execsql_test json102-450-3 {
+  SELECT json(jsonb_remove('[0,1,2,3,4]','$[2]','$[0]'));
+} {{[1,3,4]}}
+do_execsql_test json102-450-4 {
+  SELECT json(jsonb_remove(jsonb('[0,1,2,3,4]'),'$[2]','$[0]'));
+} {{[1,3,4]}}
 do_execsql_test json102-460 {
   SELECT json_remove('[0,1,2,3,4]','$[0]','$[2]');
 } {{[1,2,4]}}
+do_execsql_test json102-460-2 {
+  SELECT json_remove(jsonb('[0,1,2,3,4]'),'$[0]','$[2]');
+} {{[1,2,4]}}
+do_execsql_test json102-460-3 {
+  SELECT json(jsonb_remove('[0,1,2,3,4]','$[0]','$[2]'));
+} {{[1,2,4]}}
+do_execsql_test json102-460-4 {
+  SELECT json(jsonb_remove(jsonb('[0,1,2,3,4]'),'$[0]','$[2]'));
+} {{[1,2,4]}}
 do_execsql_test json102-470 {
   SELECT json_remove('{"x":25,"y":42}');
 } {{{"x":25,"y":42}}}
+do_execsql_test json102-470-2 {
+  SELECT json_remove(jsonb('{"x":25,"y":42}'));
+} {{{"x":25,"y":42}}}
+do_execsql_test json102-470-3 {
+  SELECT json(jsonb_remove('{"x":25,"y":42}'));
+} {{{"x":25,"y":42}}}
+do_execsql_test json102-470-4 {
+  SELECT json(jsonb_remove(jsonb('{"x":25,"y":42}')));
+} {{{"x":25,"y":42}}}
 do_execsql_test json102-480 {
   SELECT json_remove('{"x":25,"y":42}','$.z');
 } {{{"x":25,"y":42}}}
+do_execsql_test json102-480-2 {
+  SELECT json_remove(jsonb('{"x":25,"y":42}'),'$.z');
+} {{{"x":25,"y":42}}}
+do_execsql_test json102-480-3 {
+  SELECT json(jsonb_remove('{"x":25,"y":42}','$.z'));
+} {{{"x":25,"y":42}}}
+do_execsql_test json102-480-4 {
+  SELECT json(jsonb_remove(jsonb('{"x":25,"y":42}'),'$.z'));
+} {{{"x":25,"y":42}}}
 do_execsql_test json102-490 {
   SELECT json_remove('{"x":25,"y":42}','$.y');
 } {{{"x":25}}}
+do_execsql_test json102-490-2 {
+  SELECT json_remove(jsonb('{"x":25,"y":42}'),'$.y');
+} {{{"x":25}}}
+do_execsql_test json102-490-3 {
+  SELECT json(jsonb_remove('{"x":25,"y":42}','$.y'));
+} {{{"x":25}}}
+do_execsql_test json102-490-4 {
+  SELECT json(jsonb_remove(jsonb('{"x":25,"y":42}'),'$.y'));
+} {{{"x":25}}}
 do_execsql_test json102-500 {
   SELECT json_remove('{"x":25,"y":42}','$');
 } {{}}
+do_execsql_test json102-500-2 {
+  SELECT json_remove(jsonb('{"x":25,"y":42}'),'$');
+} {{}}
+do_execsql_test json102-500-3 {
+  SELECT json(jsonb_remove('{"x":25,"y":42}','$'));
+} {{}}
+do_execsql_test json102-500-4 {
+  SELECT json(jsonb_remove(jsonb('{"x":25,"y":42}'),'$'));
+} {{}}
 do_execsql_test json102-510 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}');
 } {{object}}
+do_execsql_test json102-510b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778');
+} {{object}}
 do_execsql_test json102-520 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$');
 } {{object}}
+do_execsql_test json102-520b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$');
+} {{object}}
 do_execsql_test json102-530 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a');
 } {{array}}
+do_execsql_test json102-530b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a');
+} {{array}}
 do_execsql_test json102-540 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[0]');
 } {{integer}}
+do_execsql_test json102-540b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[0]');
+} {{integer}}
 do_execsql_test json102-550 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[1]');
 } {{real}}
+do_execsql_test json102-550b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[1]');
+} {{real}}
 do_execsql_test json102-560 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[2]');
 } {{true}}
+do_execsql_test json102-560b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[2]');
+} {{true}}
 do_execsql_test json102-570 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[3]');
 } {{false}}
+do_execsql_test json102-570b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[3]');
+} {{false}}
 do_execsql_test json102-580 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[4]');
 } {{null}}
+do_execsql_test json102-580b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[4]');
+} {{null}}
 do_execsql_test json102-590 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[5]');
 } {{text}}
+do_execsql_test json102-590b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[5]');
+} {{text}}
 do_execsql_test json102-600 {
   SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[6]');
 } {{}}
+do_execsql_test json102-600b {
+  SELECT json_type(x'cc0f1761cb0b133235332e350102001778','$.a[6]');
+} {{}}
 do_execsql_test json102-610 {
   SELECT json_valid(char(123)||'"x":35'||char(125));
 } {{1}}
@@ -312,17 +516,24 @@ do_execsql_test json102-620 {
 
 ifcapable vtab {
 do_execsql_test json102-1000 {
-  CREATE TABLE user(name,phone);
+  CREATE TABLE user(name,phone,phoneb);
   INSERT INTO user(name,phone) VALUES
      ('Alice','["919-555-2345","804-555-3621"]'),
      ('Bob','["201-555-8872"]'),
      ('Cindy','["704-555-9983"]'),
      ('Dave','["336-555-8421","704-555-4321","803-911-4421"]');
+  UPDATE user SET phoneb=jsonb(phone);
   SELECT DISTINCT user.name
     FROM user, json_each(user.phone)
    WHERE json_each.value LIKE '704-%'
    ORDER BY 1;
 } {Cindy Dave}
+do_execsql_test json102-1000b {
+  SELECT DISTINCT user.name
+    FROM user, json_each(user.phoneb)
+   WHERE json_each.value LIKE '704-%'
+   ORDER BY 1;
+} {Cindy Dave}
 
 do_execsql_test json102-1010 {
   UPDATE user
@@ -382,6 +593,12 @@ do_execsql_test json102-1110 {
    WHERE json_tree.type NOT IN ('object','array')
    ORDER BY +big.rowid, +json_tree.id
 } $correct_answer
+do_execsql_test json102-1110b {
+  SELECT big.rowid, fullkey, value
+    FROM big, json_tree(jsonb(big.json))
+   WHERE json_tree.type NOT IN ('object','array')
+   ORDER BY +big.rowid, +json_tree.id
+} $correct_answer
 do_execsql_test json102-1120 {
   SELECT big.rowid, fullkey, atom
     FROM big, json_tree(big.json)