]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add an OOM test case for the issue with dropping RETURNING triggers when the schema...
authordan <Dan Kennedy>
Thu, 13 Nov 2025 18:02:22 +0000 (18:02 +0000)
committerdan <Dan Kennedy>
Thu, 13 Nov 2025 18:02:22 +0000 (18:02 +0000)
FossilOrigin-Name: dc569288dd63754269e14be7a9937c882531685a3e9caec25f86ec8c01eb9583

manifest
manifest.uuid
test/returningfault.test

index 7c362646c87e8b37d7657a10e1d014722cc66700..bdccf18a6497a146e5741095d87074be2369fc0b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sbetter\stest\scase\sfor\sthe\sissue\swith\sdropping\sRETURNING\striggers\swhen\sthe\sschema\sis\sreset\swhile\spreparing\sa\sstatement.
-D 2025-11-13T17:42:55.573
+C Add\san\sOOM\stest\scase\sfor\sthe\sissue\swith\sdropping\sRETURNING\striggers\swhen\sthe\sschema\sis\sreset\swhile\spreparing\sa\sstatement\sthat\suses\san\seponymous\svtab.
+D 2025-11-13T18:02:22.344
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -1523,7 +1523,7 @@ F test/reservebytes.test 6163640b5a5120c0dee6591481e673a0fa0bf0d12d4da7513bad692
 F test/resetdb.test 54c06f18bc832ac6d6319e5ab23d5c8dd49fdbeec7c696d791682a8006bd5fc3
 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
 F test/returning1.test cd32517148948859db214dd814354597dd40e7489259590fac1a4f7bf44deb97
-F test/returningfault.test ae4c4b5e8745813287a359d9ccdb9d5c883c2e68afb18fb0767937d5de5692a4
+F test/returningfault.test 5f9649d05680357ab077fa6bad574a3eb3f6e4858a6880b25171be516a4efcda
 F test/rollback.test 952c4d805bca96adc2be76f621ea22115fe40b330015af36fcc8028c8547fcee
 F test/rollback2.test 3f3a4e20401825017df7e7671e9f31b6de5fae5620c2b9b49917f52f8c160a8f
 F test/rollbackfault.test 0e646aeab8840c399cfbfa43daab46fd609cf04a
@@ -2167,8 +2167,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P e8b34b4178be621102dac165b716283055fad90b3edc2394f56a24f9f0149448
-R 20aa046c40edd19c9eb0c123dec945ac
+P 6a9fdde109865b23888f099d066721404e8b853f3dacd55ce08c8bbda2491ec3
+R 293a9ba450ddf977c5efff80a5fbf409
 U dan
-Z 4c6394f8af064a5c9e605294797a46bf
+Z 137373639e55a850897c0a977a7f6597
 # Remove this line to create a well-formed Fossil manifest.
index 6488f255784ea5f6dd30a380fa00c2c0b1434dee..a8244b1bc2466bb7832b599cf25fa8d9779fdd38 100644 (file)
@@ -1 +1 @@
-6a9fdde109865b23888f099d066721404e8b853f3dacd55ce08c8bbda2491ec3
+dc569288dd63754269e14be7a9937c882531685a3e9caec25f86ec8c01eb9583
index 8bf6fbfe06427daff90b4c226725c79684489f8f..b0177e6dc81af99de152879c0d577a2a13f1fb9b 100644 (file)
@@ -14,13 +14,15 @@ set testdir [file dirname $argv0]
 source $testdir/tester.tcl
 source $testdir/malloc_common.tcl
 
+set ::testprefix returningfault
+
 
 do_execsql_test 1.0 {
   CREATE TABLE t1 (b);
 } {}
 faultsim_save_and_close
 
-do_faultsim_test pagerfault-1 -faults oom-t* -prep {
+do_faultsim_test 1 -faults oom-t* -prep {
   faultsim_restore_and_reopen
 } -body {
   execsql { 
@@ -32,5 +34,52 @@ do_faultsim_test pagerfault-1 -faults oom-t* -prep {
   faultsim_test_result {1 {sub-select returns 5 columns - expected 1}}
 }
 
+ifcapable vtab {
+  reset_db
+  do_execsql_test 2.0 {
+    CREATE TABLE t1(x);
+  }
+  proc eponymous_cmd {method args} {
+    switch -- $method {
+      xConnect {
+        db eval { SELECT * FROM sqlite_schema }
+        return "CREATE TABLE t1 (a, b)"
+      }
+  
+      xBestIndex {
+        return "idxnum 555"
+      }
+  
+      xFilter {
+        return [list sql {SELECT 123, 'A', 'B'}]
+      }
+  
+      xUpdate {
+        return 123
+      }
+  
+    }
+  
+    return {}
+  }
+
+  faultsim_save_and_close
+
+  do_faultsim_test 2 -faults oom* -prep {
+    faultsim_restore_and_reopen
+    register_tcl_module db eponymous_cmd
+    db eval { SELECT * FROM t1 }
+    sqlite3 db2 test.db
+    db2 eval { CREATE TABLE t2(y) }
+    db2 close
+  } -body {
+    db eval {
+      INSERT INTO tcl VALUES('hello', 'world') RETURNING *
+    }
+  } -test {
+    faultsim_test_result {0 {hello world}} {1 {vtable constructor failed: tcl}}
+  }
+}
 
 finish_test