]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert() that could fail if a virtual table called sqlite3_step() from within...
authordan <Dan Kennedy>
Mon, 20 Jan 2025 18:26:58 +0000 (18:26 +0000)
committerdan <Dan Kennedy>
Mon, 20 Jan 2025 18:26:58 +0000 (18:26 +0000)
FossilOrigin-Name: 39bdbb3f6dd1d30d180526d35c11f789f5e9d45b99ead72fd4a3b136afab66b1

ext/fts5/test/fts5misc.test
manifest
manifest.uuid
src/vdbeapi.c
test/fkey6.test

index c2e580c5640912a5d4fc1aa714fea3ce8eaf0369..2aca1986a1fbad070c3a7bd12deeee5746a97316 100644 (file)
@@ -591,7 +591,6 @@ do_execsql_test 21.2 {
   PRAGMA integrity_check
 } {ok}
 
-breakpoint
 sqlite3_db_config db DEFENSIVE 1
 do_execsql_test 21.3 {
   CREATE TABLE xyz_notashadow(x, y);
@@ -665,5 +664,26 @@ do_execsql_test 25.0 {
   SELECT fts5_test_poslist(t1) FROM t1('b') ORDER BY rank;
 } {{}}
 
+#-------------------------------------------------------------------------
+reset_db
+
+do_execsql_test 26.0 {
+  PRAGMA foreign_keys = ON;
+  CREATE TABLE t1(x INTEGER PRIMARY KEY);
+  CREATE TABLE t2(y INTEGER PRIMARY KEY,
+      z INTEGER REFERENCES t1(x) DEFERRABLE INITIALLY DEFERRED
+  );
+  CREATE VIRTUAL TABLE t3 USING fts5(a, b, content='', tokendata=1);
+}
+
+do_execsql_test 26.1 {
+  BEGIN;
+    INSERT INTO t2 VALUES(1,111);
+    INSERT INTO t3 VALUES(3,3);
+    PRAGMA defer_foreign_keys=ON;
+    DELETE FROM t2 WHERE y+1;
+  COMMIT;
+}
+
 finish_test
 
index 0440599bc151156593c782c09dbcd5b81153f11d..6c62b5451d4fc0821a20512e65df5c2fc3a6e039 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C configure\sscript:\sremove\san\soverzealous\sis-a-file\scheck\sin\sthe\stclsh\ssearch\swhich\sfails\sto\saccount\sfor\simplicit\s.exe\sextensions\son\sWindows\sbuilds.\sReported\sin\s[forum:c27403ef974df9f1|forum\spost\sc27403ef974df9f1].\s(Same\schange\sas\s[89306d1a4905]\sbut\sto\sa\sdifferent\sfile,\sas\sthat\scontent\swas\smoved\ssince\sthe\s3.48\srelease.)
-D 2025-01-20T16:14:09.083
+C Fix\san\sassert()\sthat\scould\sfail\sif\sa\svirtual\stable\scalled\ssqlite3_step()\sfrom\swithin\sthe\sxSync()\smethod\swhile\scommitting\sa\s"PRAGMA\sdefer_foreign_keys=1"\stransaction.
+D 2025-01-20T18:26:58.868
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -207,7 +207,7 @@ F ext/fts5/test/fts5locale.test 83ba7ee12628b540d3098f39c39c1de0c0440eddff8f7512
 F ext/fts5/test/fts5matchinfo.test 877520582feb86bbfd95ab780099bcba4526f18ac75ee34979144cf86ba3a5a3
 F ext/fts5/test/fts5merge.test 2654df0bcdb2d117c2d38b6aeb0168061be01c643f9e9194b36c43a2970e8082
 F ext/fts5/test/fts5merge2.test 3ebad1a59d6ad3fb66eff6523a09e95dc6367cbefb3cd73196801dea0425c8e2
-F ext/fts5/test/fts5misc.test 8c3cc771f773dc4bb4973620c51e7729e324ca2cc80eb8894f1c2c605e361f0b
+F ext/fts5/test/fts5misc.test f4dee7da898d605a6488c5b7afaace3158ed6bb9addff78faa1b37b402b77fb9
 F ext/fts5/test/fts5multi.test a15bc91cdb717492e6e1b66fec1c356cb57386b980c7ba5af1915f97fe878581
 F ext/fts5/test/fts5multiclient.test 5ff811c028d6108045ffef737f1e9f05028af2458e456c0937c1d1b8dea56d45
 F ext/fts5/test/fts5near.test 33d60867581066e5db7016deb5d651628125d7ff4e0233a88175aa5b65874c74
@@ -851,7 +851,7 @@ F src/vacuum.c b763b6457bd058d2072ef9364832351fd8d11e8abf70cbb349657360f7d55c40
 F src/vdbe.c 8a6eb02823b424b273614bae41579392a5c495424592b60423dd2c443a583df0
 F src/vdbe.h 9676348d342bd04e21e384c63b57224171ce84fac77853357334ef94c4d33cf4
 F src/vdbeInt.h bf294a0c8fc4cc80779e74b04b8bd82c6e1197b3137cefe0b16cdf002fc7dfd6
-F src/vdbeapi.c 38c252a202d70b56cfb734460bc888ddbd581afec1a10cd4d6c894c9e0b5baea
+F src/vdbeapi.c 033decc098df353b97a5ca14302ad812e2567f1037747c2d5fcda62aac1bb74e
 F src/vdbeaux.c 5fcbc642a3d3d88c5ea15cadf2c8b8e4e067cb9ff374beb1875c9d209001299e
 F src/vdbeblob.c 255be187436da38b01f276c02e6a08103489bbe2a7c6c21537b7aecbe0e1f797
 F src/vdbemem.c df568ef0187e4be2788c35174f6d9b8566ab9475f9aff2d73907ed05aa5684b2
@@ -1154,7 +1154,7 @@ F test/fkey2.test 1063d65e5923c054cfb8f0555a92a3ae0fa8c067275a33ee1715bd856cdb30
 F test/fkey3.test 76d475c80b84ee7a5d062e56ccb6ea68882e2b49
 F test/fkey4.test 86446017011273aad8f9a99c1a65019e7bd9ca9d
 F test/fkey5.test 6727452e163a427147e84e739da18713da553d79f9783559b04fdcd36d5c7421
-F test/fkey6.test bdb9c808349a149575b87cf4bfd82d4c81612f0c4d954d27b3f42f043a385396
+F test/fkey6.test ebd11efb00b9c70b57f4c6b6184445145c96e320329bd90a175036570c5b25ca
 F test/fkey7.test 64fb28da03da5dfe3cdef5967aa7e832c2507bf7fb8f0780cacbca1f2338d031
 F test/fkey8.test 51deda7f1a1448bca95875e4a6e1a3a75b4bd7215e924e845bd60de60e4d84bf
 F test/fkey_malloc.test 594a7ea1fbab553c036c70813cd8bd9407d63749
@@ -2208,8 +2208,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 fec4ff185a2f3f1bee8f27432206276636cf27365d2d41cd7282f8c0425f2e96
-R 25cfe1ba29c81abc6c4cc0abffb7da62
-U stephan
-Z 0cb7636a2c620ecf85b9efcc34578b99
+P 239a3d1573f4cb720308018280b2add54034e69e38fe7060a7238875eee4f1c9
+R dfc3a0a07b5a7948068bb24ed717b487
+U dan
+Z 96f6b83e4a526a99706f87b354741f28
 # Remove this line to create a well-formed Fossil manifest.
index 289c53bcfc2fa7d0fcc9f44b1bfef73d4d0b7545..6465b82876ed737f559f7df8b62b45f81c9410d3 100644 (file)
@@ -1 +1 @@
-239a3d1573f4cb720308018280b2add54034e69e38fe7060a7238875eee4f1c9
+39bdbb3f6dd1d30d180526d35c11f789f5e9d45b99ead72fd4a3b136afab66b1
index e33cb2e4d386fe79c78c48c5cf0c5d918d5c1206..5fc04b139c2776f484acc6d5432e9b04cb02f697 100644 (file)
@@ -783,7 +783,7 @@ static int sqlite3Step(Vdbe *p){
       }
 
       assert( db->nVdbeWrite>0 || db->autoCommit==0
-          || (db->nDeferredCons==0 && db->nDeferredImmCons==0)
+          || ((db->nDeferredCons + db->nDeferredImmCons)==0)
       );
 
 #ifndef SQLITE_OMIT_TRACE
index 865875952359700a6ab40c406f06aacd7cd8b771..72de926b528641a398d36407b6b01bc8738782f2 100644 (file)
@@ -250,7 +250,22 @@ do_catchsql_test 4.2 {
   COMMIT;
 } {1 {FOREIGN KEY constraint failed}}
 
+#-------------------------------------------------------------------------
+#
+reset_db
+do_execsql_test 5.0 {
+  PRAGMA foreign_keys = 1;
+  CREATE TABLE p1(a INTEGER PRIMARY KEY, b);
+  CREATE TABLE c1(x REFERENCES p1 DEFERRABLE INITIALLY DEFERRED);
+}
 
+do_execsql_test 5.1 {
+  BEGIN;
+    INSERT INTO c1 VALUES(123);
+    PRAGMA defer_foreign_keys = 1;
+    INSERT INTO p1 VALUES(123, 'one two three');
+  COMMIT;
+}
 
 
 finish_test