]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Revamp the "json" testset in speedtest1.
authordrh <>
Thu, 16 Jan 2025 17:19:06 +0000 (17:19 +0000)
committerdrh <>
Thu, 16 Jan 2025 17:19:06 +0000 (17:19 +0000)
FossilOrigin-Name: d33508836bc88314a205bfa9d80f3ebe695163cf0c46d500ad674535975408fb

manifest
manifest.uuid
test/speedtest1.c

index 73e42b6f79835f66518abec33daf86ad417df212..82d8bd5ec6e0a4eb3487a19c1195e0e92e0b7fe5 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\s"json"\stest\scase\sto\sspeedtest1\sand\sinclude\sit\sin\s"mix1".
-D 2025-01-16T14:37:48.974
+C Revamp\sthe\s"json"\stestset\sin\sspeedtest1.
+D 2025-01-16T17:19:06.045
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -1677,7 +1677,7 @@ F test/speed3.test 694affeb9100526007436334cf7d08f3d74b85ef
 F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715
 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa
 F test/speed4p.test 377a0c48e5a92e0b11c1c5ebb1bc9d83a7312c922bc0cb05970ef5d6a96d1f0c
-F test/speedtest1.c 572cc10da33f9ce696346fefddf8afc583745e448192fda8d81ae4be897da27f
+F test/speedtest1.c 6c9f30a9035aeafc767b770f0c576d45701ed928f7e354f6c18b6bbccbf81417
 F test/spellfix.test 951a6405d49d1a23d6b78027d3877b4a33eeb8221dcab5704b499755bb4f552e
 F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3
 F test/spellfix3.test 0f9efaaa502a0e0a09848028518a6fb096c8ad33
@@ -2205,8 +2205,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 85667b3a572bc9afd8c862a0b2c5f47f76ca80d6e61302ca7d7c1b326d3dd578
-R 207656080a990b075c009fc5a42018e0
+P 2db3a3ee37a9d2fe9b94d16d35c24846c37abe73b89cde4dd763e01a2bfaa8b7
+R c60371158767e3daeea4a8672be014f0
 U drh
-Z 5e27a73ae0785d981160c5186c684481
+Z 3720db8250a91ea5623fb5048e644ae1
 # Remove this line to create a well-formed Fossil manifest.
index d4dd07d115bb14dd5e34474f5e75c7bdcfb6483f..e1c19508096f1621f3084f80b39789308ca4e5d7 100644 (file)
@@ -1 +1 @@
-2db3a3ee37a9d2fe9b94d16d35c24846c37abe73b89cde4dd763e01a2bfaa8b7
+d33508836bc88314a205bfa9d80f3ebe695163cf0c46d500ad674535975408fb
index 581e0af3731aebd7204e1a904cd755e657a30f44..95a451e7b7d88497eefc527ee3f5ca1aa132d198 100644 (file)
@@ -2156,55 +2156,64 @@ void testset_debug1(void){
 ** Performance tests for JSON.
 */
 void testset_json(void){
-  speedtest1_begin_test(100, "construct table J1 with %d rows of text JSON",
-                        g.szTest*250);
+  unsigned int r = 0x12345678;
+  sqlite3_test_control(SQLITE_TESTCTRL_PRNG_SEED, r, g.db);
+  speedtest1_begin_test(100, "table J1 is %d rows of JSONB",
+                        g.szTest*5);
   speedtest1_exec(
-     "CREATE TABLE j1(x JSON TEXT);\n"
+     "CREATE TABLE j1(x JSONB);\n"
      "WITH RECURSIVE\n"
-     "  c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<%d),\n"
-     "  array1(y) AS (\n"
-     "    SELECT json_group_array(\n"
-     "        json_object('x',x,'y',random(),'z',hex(randomblob(50)))\n"
-     "      )\n"
-     "    FROM c\n"
+     "  jval(n,j) AS (\n"
+     "    VALUES(0,'{}'),(1,'[]'),(2,'true'),(3,'false'),(4,'null'),\n"
+     "          (5,'{x:1,y:2}'),(6,'0.0'),(7,'3.14159'),(8,'-99.9'),\n"
+     "          (9,'[1,2,3,4]')\n"
      "  ),\n"
-     "  c2(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c2 WHERE n<5)\n"
+     "  c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<26*26-1),\n"
+     "  array1(y) AS MATERIALIZED (\n"
+     "    SELECT jsonb_group_array(\n"
+     "      jsonb_object('x',x,\n"
+     "                  'y',jsonb(coalesce(j,random()%%10000)),\n"
+     "                  'z',hex(randomblob(50)))\n"
+     "    )\n"
+     "    FROM c LEFT JOIN jval ON (x%%20)=n\n"
+     "  ),\n"
+     "  object1(z) AS MATERIALIZED (\n"
+     "    SELECT jsonb_group_object(char(0x61+x%%26,0x61+(x/26)%%26),\n"
+     "                      jsonb( coalesce(j,random()%%10000)))\n"
+     "      FROM c LEFT JOIN jval ON (x%%20)=n\n"
+     "  ),\n"
+     "  c2(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c2 WHERE n<%d)\n"
      "INSERT INTO j1(x)\n"
-     "  SELECT json_object('a',n,'b',n*2,'c',y,'d',3,'e',5,'f',6) FROM array1, c2;\n",
-     g.szTest*250
+     "  SELECT jsonb_object('a',n,'b',n+10000,'c',jsonb(y),'d',jsonb(z),\n"
+     "                     'e',n+20000,'f',n+30000)\n"
+     "    FROM array1, object1, c2;",
+     g.szTest*5
   );
   speedtest1_end_test();
 
-  speedtest1_begin_test(110, "construct table J2 with %d rows of JSONB",
-                        g.szTest*250);
+  speedtest1_begin_test(110, "table J2 is %d rows from J1 converted to text", g.szTest);
   speedtest1_exec(
      "CREATE TABLE j2(x JSON TEXT);\n"
-     "WITH RECURSIVE\n"
-     "  c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<%d),\n"
-     "  array1(y) AS (\n"
-     "    SELECT json_group_array(\n"
-     "        json_object('x',x,'y',random(),'z',hex(randomblob(50)))\n"
-     "      )\n"
-     "    FROM c\n"
-     "  ),\n"
-     "  c2(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c2 WHERE n<5)\n"
-     "INSERT INTO j2(x)\n"
-     "  SELECT jsonb_object('a',n,'b',n*2,'c',y,'d',3,'e',5,'f',6) FROM array1, c2;\n",
-     g.szTest*250
+     "INSERT INTO j2(x) SELECT json(x) FROM j1 LIMIT %d", g.szTest
   );
   speedtest1_end_test();
 
-  speedtest1_begin_test(120, "create indexes on JSON expressions");
+  speedtest1_begin_test(120, "create indexes on JSON expressions on J1");
   speedtest1_exec(
     "BEGIN;\n"
     "CREATE INDEX j1x1 ON j1(x->>'a');\n"
     "CREATE INDEX j1x2 ON j1(x->>'b');\n"
-    "CREATE INDEX j1x3 ON j1(x->>'e');\n"
-    "CREATE INDEX j1x4 ON j1(x->>'f');\n"
+    "CREATE INDEX j1x3 ON j1(x->>'f');\n"
+    "COMMIT;\n"
+  );
+  speedtest1_end_test();
+
+  speedtest1_begin_test(130, "create indexes on JSON expressions on J2");
+  speedtest1_exec(
+    "BEGIN;\n"
     "CREATE INDEX j2x1 ON j2(x->>'a');\n"
     "CREATE INDEX j2x2 ON j2(x->>'b');\n"
-    "CREATE INDEX j2x3 ON j2(x->>'e');\n"
-    "CREATE INDEX j2x4 ON j2(x->>'f');\n"
+    "CREATE INDEX j2x3 ON j2(x->>'f');\n"
     "COMMIT;\n"
   );
   speedtest1_end_test();
@@ -2212,9 +2221,9 @@ void testset_json(void){
   speedtest1_begin_test(130, "json_replace()/set()/remove() on every row of J1");
   speedtest1_exec(
     "BEGIN;\n"
-    "UPDATE j1 SET x=json_replace(x,'$.f',(x->>'f')+1);\n"
-    "UPDATE j1 SET x=json_set(x,'$.e',(x->>'f')-1);\n"
-    "UPDATE j1 SET x=json_remove(x,'$.d');\n"
+    "UPDATE j1 SET x=jsonb_replace(x,'$.f',(x->>'f')+1);\n"
+    "UPDATE j1 SET x=jsonb_set(x,'$.e',(x->>'f')-1);\n"
+    "UPDATE j1 SET x=jsonb_remove(x,'$.d');\n"
     "COMMIT;\n"
   );
   speedtest1_end_test();
@@ -2222,9 +2231,9 @@ void testset_json(void){
   speedtest1_begin_test(140, "json_replace()/set()/remove() on every row of J2");
   speedtest1_exec(
     "BEGIN;\n"
-    "UPDATE j2 SET x=jsonb_replace(x,'$.f',(x->>'f')+1);\n"
-    "UPDATE j2 SET x=jsonb_set(x,'$.e',(x->>'f')-1);\n"
-    "UPDATE j2 SET x=jsonb_remove(x,'$.d');\n"
+    "UPDATE j2 SET x=json_replace(x,'$.f',(x->>'f')+1);\n"
+    "UPDATE j2 SET x=json_set(x,'$.e',(x->>'f')-1);\n"
+    "UPDATE j2 SET x=json_remove(x,'$.d');\n"
     "COMMIT;\n"
   );
   speedtest1_end_test();