]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Update tests to work with SQLITE_ALLOW_ROWID_IN_VIEW.
authordan <Dan Kennedy>
Tue, 19 Mar 2024 15:27:15 +0000 (15:27 +0000)
committerdan <Dan Kennedy>
Tue, 19 Mar 2024 15:27:15 +0000 (15:27 +0000)
FossilOrigin-Name: 495b8c7b08b998ddfe2ad055703f058c768e7e94014952e5cd8a81c7c1515cb1

manifest
manifest.uuid
src/ctime.c
src/test_config.c
test/join5.test
test/join8.test
test/misc2.test
test/returning1.test
test/rowid.test
test/trigger9.test

index 1bd5d0bc66f9147f11c8bff03fac634da42fc78a..c5b4e813c0ac6f29a0b861a09aa909dc1d5dedba 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\sfuzzinvariants.c\stest\smodule\sso\sthat\sit\sdoes\snot\sgenerate\ninvariants\sthat\sdepend\son\srowid\swhen\sSQLITE_ALLOW_ROWID_IN_VIEW\sis\sused,\nsince\srowid\svalues\scan\sbe\sunreliable\sin\sthat\scontext.
-D 2024-03-19T14:38:39.687
+C Update\stests\sto\swork\swith\sSQLITE_ALLOW_ROWID_IN_VIEW.
+D 2024-03-19T15:27:15.880
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -695,7 +695,7 @@ F src/btreeInt.h 98aadb6dcb77b012cab2574d6a728fad56b337fc946839b9898c4b4c969e30b
 F src/build.c 71445e2d1e2c78b120a20a46d80a29a9ea42370df430efda5bb6ef377e8016c8
 F src/callback.c db3a45e376deff6a16c0058163fe0ae2b73a2945f3f408ca32cf74960b28d490
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
-F src/ctime.c 23331529e654be40ca97d171cbbffe9b3d4c71cc53b78fe5501230675952da8b
+F src/ctime.c 64e4b1227b4ed123146f0aa2989131d1fbd9b927b11e80c9d58c6a68f9cd5ce3
 F src/date.c 126ba2ab10aeb2e7ba6e089b5f07b747c0625b8287f78b60da346eda8d23c875
 F src/dbpage.c 80e46e1df623ec40486da7a5086cb723b0275a6e2a7b01d9f9b5da0f04ba2782
 F src/dbstat.c 3b677254d512fcafd4d0b341bf267b38b235ccfddbef24f9154e19360fa22e43
@@ -774,7 +774,7 @@ F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0
 F src/test_bestindex.c f6af1e41cb7901edafb065a8198e4a0192dd42432b642d038965be5e628dec12
 F src/test_blob.c ae4a0620b478548afb67963095a7417cd06a4ec0a56adb453542203bfdcb31ce
 F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
-F src/test_config.c f0cc1f517deaa96dd384822ae2bb91534fa56aa458528b439830d709941d3932
+F src/test_config.c 5fa77ee6064ba546e144c4fea870c5ede2c54314616f81485c6a9c4192100c75
 F src/test_delete.c e2fe07646dff6300b48d49b2fee2fe192ed389e834dd635e3b3bac0ce0bf9f8f
 F src/test_demovfs.c 38a459d1c78fd9afa770445b224c485e079018d6ac07332ff9bd07b54d2b8ce9
 F src/test_devsym.c 649434ed34d0b03fbd5a6b42df80f0f9a7e53f94dd1710aad5dd8831e91c4e86
@@ -1326,10 +1326,10 @@ F test/join.test f7abfef3faeaf2800308872e33a57e5b6e4a2b44fb8c6b90c6068412e71a6cf
 F test/join2.test 8561fe82ce434ac96de91544072e578dc2cadddf2d9bc9cd802f866a9b92502e
 F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
 F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
-F test/join5.test 7cc3f3595bb41e60f3f96d5cb6dd8cfcbc31212f0136bba6fc081c082994a94a
+F test/join5.test f939b2c7f45a8d36f6b690b797cfa2d7bb828a5ff6e43d9cca88bd91e08fb464
 F test/join6.test f809c025fa253f9e150c0e9afd4cef8813257bceeb6f46e04041228c9403cc2c
 F test/join7.test 2268dcbb54b724391dda3748ea95c60d960607ffeed67885675998e7117697f6
-F test/join8.test d384d63985e3991c404afccadaf3efd1cdf9cd72680167f80e3cb80b95c18c68
+F test/join8.test 02da1534b2b47599a078e513f597c205934d115a5a6bc31af8a5615a7488a81f
 F test/join9.test 9056ddd3b0c0f4f9d658f4521038d9a37dc23ead8ca9a505d0b0db2b6a471e05
 F test/joinA.test 6ac4efdbb1eb9ca398162c5bc5623a757803b04bb4d76453c8563a0bdc2f73bd
 F test/joinB.test 1b2ba3fc8568b49411787fccbf540570c148e9b6a53a30f80691cb6268098ded
@@ -1426,7 +1426,7 @@ F test/minmax2.test cf9311babb6f0518d04e42fd6a42c619531c4309a9dd790a2c4e9b3bc595
 F test/minmax3.test cc1e8b010136db0d01a6f2a29ba5a9f321034354
 F test/minmax4.test 272ca395257f05937dc96441c9dde4bc9fbf116a8d4fa02baeb0d13d50e36c87
 F test/misc1.test e3e36262aff1bd9b8b9bf1eeb3af04adb3fc1e23f0a92dbff708bba9e939ace1
-F test/misc2.test 71e746af479119386ac2ed7ab7d81d99970e75b49ffd3e8efffee100b4b5f350
+F test/misc2.test a1a3573cc02662becd967766021d6f16c54684d56df5f227481c7ef0d9df0bd0
 F test/misc3.test cf3dda47d5dda3e53fc5804a100d3c82be736c9d
 F test/misc4.test 10cd6addb2fa9093df4751a1b92b50440175dd5468a6ec84d0386e78f087db0e
 F test/misc5.test 027cf0ac10314ea534173f335a33bb4059907ddabbac2c16786766d6f26c8923
@@ -1527,7 +1527,7 @@ F test/regexp2.test 55ed41da802b0e284ac7e2fe944be3948f93ff25abbca0361a609acfed13
 F test/reindex.test cd9d6021729910ece82267b4f5e1b5ac2911a7566c43b43c176a6a4732e2118d
 F test/resetdb.test 54c06f18bc832ac6d6319e5ab23d5c8dd49fdbeec7c696d791682a8006bd5fc3
 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
-F test/returning1.test db532cde29d6aebbc48c6ddc3149b30476f8e69ca7a2c4b53986c7635e6fd8ec
+F test/returning1.test 3ead782eddf51f573cdd43bcbb10d1b485ac095a19a76d16c43fd159ea9b7466
 F test/returningfault.test ae4c4b5e8745813287a359d9ccdb9d5c883c2e68afb18fb0767937d5de5692a4
 F test/rollback.test 06680159bc6746d0f26276e339e3ae2f951c64812468308838e0a3362d911eaa
 F test/rollback2.test 3f3a4e20401825017df7e7671e9f31b6de5fae5620c2b9b49917f52f8c160a8f
@@ -1535,7 +1535,7 @@ F test/rollbackfault.test 0e646aeab8840c399cfbfa43daab46fd609cf04a
 F test/round1.test 29c3c9039936ed024d672f003c4d35ee11c14c0acb75c5f7d6188ff16190cfd4
 F test/rowallock.test 3f88ec6819489d0b2341c7a7528ae17c053ab7cc
 F test/rowhash.test 0bc1d31415e4575d10cacf31e1a66b5cc0f8be81
-F test/rowid.test e29025be95baf6b32f0d5edef59a7633028325896a98f1caa8019559ca910350
+F test/rowid.test 17e2a82e0567eec4b265fd063c44b96d5fd7b25ad6bd976d9c5fd892f0c2e258
 F test/rowvalue.test baf4fa3ec1a8c1c920c3faa5fd25959cb454bbd99ac8960397c34549d9fc4abe
 F test/rowvalue2.test 060d238b7e5639a7c5630cb5e63e311b44efef2b
 F test/rowvalue3.test 1347e25ca11c547c5a6ff0cc5626f95aa9740e9275bfaec096029f57cb2130ce
@@ -1867,7 +1867,7 @@ F test/trigger5.test 619391a3e9fc194081d22cefd830d811e7badf83
 F test/trigger6.test 0e411654f122552da6590f0b4e6f781048a4a9b9
 F test/trigger7.test e7ce54bfda67a88d778aea42544e151c465547a7e617127b6914c2221a6d53c1
 F test/trigger8.test 30cb0530bd7c4728055420e3f739aa00412eafa4
-F test/trigger9.test fd49aff8b724ae1a6238989ecf84320d88c0e8f8d9142a891b93f826dfe37b59
+F test/trigger9.test 1724b595661da3dd3c8d79f0ebae818132a39e65c241bad2049f66952b1dc29d
 F test/triggerA.test 837be862d8721f903dba3f3ceff05b32e0bee5214cf6ea3da5fadf12d3650e9d
 F test/triggerB.test 56780c031b454abac2340dbb3b71ac5c56c3d7fe
 F test/triggerC.test 29f5a28d0fe39e6e2c01f6e1f53f08c0955170ae10a63ad023e33cb0a1682a51
@@ -2180,8 +2180,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 7bc882897b6910f93695ad372445df7791b096412089ccbcd4fde365c62fa074
-R 1d0ab0a71fdecadee0025e4c9e79a52a
-U drh
-Z ef38e4f5190d6a950df6cf2eac0e14a7
+P 0d711aaaa14472a82f8893e1b07d845073f3d018bd5b8093ec0b00ffbbc8cd5a
+R 9a00ab01baff88b608a562a16a741256
+U dan
+Z 3b22054791de9eb30bbf5d96e1597df1
 # Remove this line to create a well-formed Fossil manifest.
index 6d341e4ed101a57cbddd10e37e3314ac1a385f6f..2d1f2cba9433e2025adfd012930aff6ae59277b0 100644 (file)
@@ -1 +1 @@
-0d711aaaa14472a82f8893e1b07d845073f3d018bd5b8093ec0b00ffbbc8cd5a
\ No newline at end of file
+495b8c7b08b998ddfe2ad055703f058c768e7e94014952e5cd8a81c7c1515cb1
\ No newline at end of file
index cf761299fe5b059b9bd6162444824942b7e383c4..0ffe2a5bdf1ee9e145dd121b1ec42908094d206e 100644 (file)
@@ -65,6 +65,9 @@ static const char * const sqlite3azCompileOpt[] = {
   "ALLOW_COVERING_INDEX_SCAN=" CTIMEOPT_VAL(SQLITE_ALLOW_COVERING_INDEX_SCAN),
 # endif
 #endif
+#ifdef SQLITE_ALLOW_ROWID_IN_VIEW
+  "ALLOW_ROWID_IN_VIEW",
+#endif
 #ifdef SQLITE_ALLOW_URI_AUTHORITY
   "ALLOW_URI_AUTHORITY",
 #endif
index ee766a26d84430a6ae0e2814566b5842913a75d3..76904e5bf21afb9f97db2ba2f081fbaa350b226e 100644 (file)
@@ -59,6 +59,14 @@ static void set_options(Tcl_Interp *interp){
   Tcl_SetVar2(interp, "sqlite_options", "rowid32", "0", TCL_GLOBAL_ONLY);
 #endif
 
+#ifdef SQLITE_ALLOW_ROWID_IN_VIEW
+  Tcl_SetVar2(
+      interp, "sqlite_options", "allow_rowid_in_view", "1", TCL_GLOBAL_ONLY);
+#else
+  Tcl_SetVar2(
+      interp, "sqlite_options", "allow_rowid_in_view", "0", TCL_GLOBAL_ONLY);
+#endif
+
 #ifdef SQLITE_CASE_SENSITIVE_LIKE
   Tcl_SetVar2(interp, "sqlite_options","casesensitivelike","1",TCL_GLOBAL_ONLY);
 #else
index 44c8b71a8da9f87fdb7708f953c3e36681e8e9e7..7f8c2f6e658295e74d55b95d52f7e2e978530848 100644 (file)
@@ -370,8 +370,17 @@ do_execsql_test 9.1 {
   ANALYZE sqlite_schema;
   INSERT INTO sqlite_stat1 VALUES('t1','t1x1','648 324 81 81 81 81 81 81 81081 81 81 81');
   ANALYZE sqlite_schema;
-  SELECT a FROM (SELECT a FROM t1 NATURAL LEFT JOIN t1) NATURAL LEFT JOIN t1 WHERE (rowid,1)<=(5,0);
-} {1}
+}
+ifcapable allow_rowid_in_view {
+  set res {1 {no such column: rowid}}
+} else {
+  set res {0 1}
+}
+do_catchsql_test 9.2 {
+  SELECT a FROM 
+      (SELECT a FROM t1 NATURAL LEFT JOIN t1) NATURAL LEFT JOIN t1 
+  WHERE (rowid,1)<=(5,0);
+} $res
 
 # 2022-03-02 https://sqlite.org/forum/info/50a1bbe08ce4c29c
 # Bloom-filter pulldown is incompatible with skip-scan.
index fc50df32ff0a1224e12e871e64994912ecf589d5..269d251fccd91ee1636f266cbaf8bbfe068a95ae 100644 (file)
@@ -41,6 +41,11 @@ do_execsql_test join8-1000 {
   CREATE INDEX t1x2 ON t1(b);
   INSERT INTO t1 DEFAULT VALUES;
 } {}
+ifcapable allow_rowid_in_view {
+  set res {1 {no such column: rowid}}
+} else {
+  set res {0 1}
+}
 do_catchsql_test join8-1010 {
   SELECT a
     FROM (
@@ -61,7 +66,7 @@ do_catchsql_test join8-1010 {
     NATURAL LEFT FULL JOIN t1
    WHERE ( rowid , 1 )<=(CASE 5 WHEN 619 THEN 841 ELSE 3374391096 END,0)
    ORDER BY a ASC;
-} {0 1}
+} $res
 
 # Pending issue #2: (now resolved)
 # Jump to addrHalt inside the RIGHT JOIN body subroutine bypasses the
index 4796d5d374e245895904e9c9130cea0ca30b1f88..607799ea2176c995a2f1490d4e01d18bf1622c6f 100644 (file)
@@ -54,19 +54,34 @@ do_test misc2-2.1 {
   }
 } {}
 ifcapable subquery {
-  do_catchsql_test misc2-2.2 {
-    SELECT rowid, * FROM (SELECT * FROM t1, t2);
-  } {1 {no such column: rowid}}
+  ifcapable allow_rowid_in_view {
+    do_catchsql_test misc2-2.2 {
+      SELECT rowid, * FROM (SELECT * FROM t1, t2);
+    } {0 {{} 1 2 3 7 8 9}}
+  } else {
+    do_catchsql_test misc2-2.2 {
+      SELECT rowid, * FROM (SELECT * FROM t1, t2);
+    } {1 {no such column: rowid}}
+  }
   do_catchsql_test misc2-2.2b {
     SELECT 'rowid', * FROM (SELECT * FROM t1, t2);
   } {0 {rowid 1 2 3 7 8 9}}
 }
 
 ifcapable view {
-  do_catchsql_test misc2-2.3 {
-    CREATE VIEW v1 AS SELECT * FROM t1, t2;
-    SELECT rowid, * FROM v1;
-  } {1 {no such column: rowid}}
+  ifcapable allow_rowid_in_view {
+    do_catchsql_test misc2-2.3 {
+      CREATE VIEW v1 AS SELECT * FROM t1, t2;
+      SELECT rowid, * FROM v1;
+    } {0 {{} 1 2 3 7 8 9}}
+  } else {
+    do_catchsql_test misc2-2.3 {
+      CREATE VIEW v1 AS SELECT * FROM t1, t2;
+      SELECT rowid, * FROM v1;
+    } {1 {no such column: rowid}}
+  }
+
+
   do_catchsql_test misc2-2.3b {
     SELECT 'rowid', * FROM v1;
   } {0 {rowid 1 2 3 7 8 9}}
index 6c098dc25674a21599aea3c9e9bece65ce314acd..24032496ceeac395885695e31204476fe582e994 100644 (file)
@@ -212,17 +212,38 @@ do_execsql_test 10.2 {
   END;
 }
 
-do_catchsql_test 10.3a {
-  INSERT INTO t1(a, b) VALUES(1234, 5678) RETURNING rowid;
-} {1 {no such column: new.rowid}}
-
-do_catchsql_test 10.3b {
-  UPDATE t1 SET a='z' WHERE b='y' RETURNING rowid;
-} {1 {no such column: new.rowid}}
-
-do_execsql_test 10.4 {
-  SELECT * FROM log;
-} {}
+ifcapable !allow_rowid_in_view {
+  do_catchsql_test 10.3a {
+    INSERT INTO t1(a, b) VALUES(1234, 5678) RETURNING rowid;
+  } {1 {no such column: new.rowid}}
+  
+  do_catchsql_test 10.3b {
+    UPDATE t1 SET a='z' WHERE b='y' RETURNING rowid;
+  } {1 {no such column: new.rowid}}
+  
+  do_execsql_test 10.4 {
+    SELECT * FROM log;
+  } {}
+} else {
+  # Note: The values returned by the RETURNING clauses of the following
+  # two statements are the rowid columns of views. These values are not
+  # well defined, so the INSERT returns -1, and the UPDATE returns 1, 2 
+  # and 3. These match the values used for new.rowid expressions, but 
+  # not much else.
+  do_catchsql_test 10.3a {
+    INSERT INTO t1(a, b) VALUES(1234, 5678) RETURNING rowid;
+  } {0 -1}
+  
+  do_catchsql_test 10.3b {
+    UPDATE t1 SET a='z' WHERE b='y' RETURNING rowid;
+  } {0 {1 2 3}}
+  
+  do_execsql_test 10.4 {
+    SELECT * FROM log;
+  } {
+    insert -1 1234 5678 update 1 z y update 2 z y update 3 z y
+  }
+}
 
 # 2021-04-27 dbsqlfuzz 78b9400770ef8cc7d9427dfba26f4fcf46ea7dc2
 # Returning clauses on TEMP tables with triggers.
index 4327004d3120f21c187619431864cf28c48fc663..450ae35cce09dbb1eed0153c9cf5cb08c8818881 100644 (file)
@@ -803,17 +803,30 @@ do_execsql_test 16.0 {
   INSERT INTO t3(rowid, z) VALUES(3, 3);
 }
 
-do_execsql_test 16.1 { SELECT rowid FROM t1, t2; } {1}
-do_execsql_test 16.2 { SELECT rowid FROM t1, v1; } {1}
-do_execsql_test 16.3 { SELECT rowid FROM t3, v1; } {3}
-do_execsql_test 16.4 { SELECT rowid FROM t3, (SELECT 123); } {3}
-
-do_execsql_test 16.5 { SELECT rowid FROM t2, t1; } {1}
-do_execsql_test 16.6 { SELECT rowid FROM v1, t1; } {1}
-do_execsql_test 16.7 { SELECT rowid FROM v1, t3; } {3}
-do_execsql_test 16.8 { SELECT rowid FROM (SELECT 123), t3; } {3}
+ifcapable allow_rowid_in_view {
+  set nosuch "1 {no such column: rowid}"
+  do_execsql_test 16.1 { SELECT rowid FROM t1, t2; } {1}
+  do_catchsql_test 16.2 { SELECT rowid FROM t1, v1; } $nosuch
+  do_catchsql_test 16.3 { SELECT rowid FROM t3, v1; } $nosuch
+  do_catchsql_test 16.4 { SELECT rowid FROM t3, (SELECT 123); } $nosuch
+
+  do_execsql_test 16.5 { SELECT rowid FROM t2, t1; } {1}
+  do_catchsql_test 16.6 { SELECT rowid FROM v1, t1; } $nosuch
+  do_catchsql_test 16.7 { SELECT rowid FROM v1, t3; } $nosuch
+  do_catchsql_test 16.8 { SELECT rowid FROM (SELECT 123), t3; } $nosuch
+} else {
+  do_execsql_test 16.1 { SELECT rowid FROM t1, t2; } {1}
+  do_execsql_test 16.2 { SELECT rowid FROM t1, v1; } {1}
+  do_execsql_test 16.3 { SELECT rowid FROM t3, v1; } {3}
+  do_execsql_test 16.4 { SELECT rowid FROM t3, (SELECT 123); } {3}
+
+  do_execsql_test 16.5 { SELECT rowid FROM t2, t1; } {1}
+  do_execsql_test 16.6 { SELECT rowid FROM v1, t1; } {1}
+  do_execsql_test 16.7 { SELECT rowid FROM v1, t3; } {3}
+  do_execsql_test 16.8 { SELECT rowid FROM (SELECT 123), t3; } {3}
+}
 
-do_catchsql_test 16.5 { SELECT rowid FROM t1, t3; } {1 {no such column: rowid}}
+do_catchsql_test 16.9 { SELECT rowid FROM t1, t3; } {1 {no such column: rowid}}
 
 
 
index 6e31d1af972f456150f986135427953ec12a8da7..47940de5778e9019700f58cf05fc85d8417a4465 100644 (file)
@@ -242,12 +242,27 @@ do_execsql_test 4.1 {
   END;
 }
 
-do_catchsql_test 4.2 {
-  DELETE FROM v1 WHERE rowid=1;
-} {1 {no such column: rowid}}
+ifcapable !allow_rowid_in_view {
+  do_catchsql_test 4.2 {
+    DELETE FROM v1 WHERE rowid=1;
+  } {1 {no such column: rowid}}
 
-do_catchsql_test 4.3 {
-  UPDATE v1 SET a=b WHERE rowid=2;
-} {1 {no such column: rowid}}
+  do_catchsql_test 4.3 {
+    UPDATE v1 SET a=b WHERE rowid=2;
+  } {1 {no such column: rowid}}
+} else {
+  do_execsql_test 4.2a {
+    DELETE FROM log;
+  }
+  do_catchsql_test 4.2 {
+    DELETE FROM v1 WHERE rowid=1;
+  } {0 {}}
+  do_catchsql_test 4.3 {
+    UPDATE v1 SET a=b WHERE rowid=2;
+  } {0 {}}
+  do_execsql_test 4.3b {
+    SELECT * FROM log;
+  }
+}
 
 finish_test