]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with UPDATE statements that modify the rowid of contentless_delete...
authordan <Dan Kennedy>
Fri, 27 Sep 2024 19:10:54 +0000 (19:10 +0000)
committerdan <Dan Kennedy>
Fri, 27 Sep 2024 19:10:54 +0000 (19:10 +0000)
FossilOrigin-Name: d69abca82145465c85241a12322986f22bf12ffe42f86c2c8e8e2f2a77d53bf8

ext/fts5/fts5_main.c
ext/fts5/test/fts5update2.test
manifest
manifest.uuid

index 4ea727cac28ca0686e700cf2c5b381c062374ac7..5713fccdd1f51ce49de0dcef6ff53673bee836ce 100644 (file)
@@ -2031,10 +2031,10 @@ static int fts5UpdateMethod(
               rc = sqlite3Fts5StorageContentInsert(pStorage, 0, apVal, pRowid);
             }
             if( rc==SQLITE_OK ){
-              rc = sqlite3Fts5StorageDelete(pStorage, iOld, 0, 1);
+              rc = sqlite3Fts5StorageDelete(pStorage, iOld, 0, 0);
             }
             if( rc==SQLITE_OK ){
-              rc = sqlite3Fts5StorageIndexInsert(pStorage, apVal,*pRowid);
+              rc = sqlite3Fts5StorageIndexInsert(pStorage, apVal, *pRowid);
             }
           }
         }else if( bContent ){
index a402b3cb233af01d74cab0b4c764e4e4b0aa68ef..64bc856452910c54e346b3d2fd00f1157b98c9de 100644 (file)
@@ -117,6 +117,27 @@ foreach {tn cu} {
   do_catchsql_test 1.$tn.14 {
     UPDATE ft1 SET d='d11' WHERE rowid=1
   } {1 {cannot UPDATE contentless fts5 table: ft1}}
+
+  # It should be possible to update the rowid if contentless_delete=1 is
+  # set and all indexed columns are updated.
+  if {$tn==2} breakpoint
+  do_execsql_test 1.$tn.15 {
+    UPDATE ft2 SET a='a_one', d='d_one', rowid=11 WHERE rowid=1
+  } 
+
+  set res(0) {
+    2 {} {} {} {}
+    3 {} {} {} {}
+    11 {} {} {} {}
+  }
+  set res(1) {
+    2 {} b2.1.2 c2.2 {}
+    3 {} b3 c3.2 {}
+    11 {} b1.1.2 c1.2 {}
+  }
+  do_execsql_test 1.$tn.16 {
+    SELECT rowid, * FROM ft2
+  } $res($cu)
 }
 
 finish_test
index 9524da68c3c667c6728f2a13a8865543435a0c55..fbcaee73414d1d2b1d5d3c6bc71be1d83b171504 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\sUPDATEs\sthat\sdo\snot\smodify\sall\sUNINDEXED\scolumns\sof\sa\scontentless_delete=1,\scontentless_unindexed=1\stable.
-D 2024-09-27T18:32:52.251
+C Fix\sa\sproblem\swith\sUPDATE\sstatements\sthat\smodify\sthe\srowid\sof\scontentless_delete=1\stables.
+D 2024-09-27T19:10:54.658
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -100,7 +100,7 @@ F ext/fts5/fts5_config.c a6633d88596758941c625b526075b85d3d9fd1089d8d9eab5db6e8a
 F ext/fts5/fts5_expr.c 9a56f53700d1860f0ee2f373c2b9074eaf2a7aa0637d0e27a6476de26a3fee33
 F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1
 F ext/fts5/fts5_index.c 571483823193f09439356741669aa8c81da838ae6f5e1bfa7517f7ee2fb3addd
-F ext/fts5/fts5_main.c 4e4a23b76b7ec8d93c6bcad0468d0871cf2d6d270369bfa80d2e1d3a1fc33d92
+F ext/fts5/fts5_main.c 50eb059e51d730e8e0c77df4e568b018079e112a755c094488b0d5b1aa06afbb
 F ext/fts5/fts5_storage.c 337b05e4c66fc822d031e264d65bde807ec2fab08665ca2cc8aaf9c5fa06792c
 F ext/fts5/fts5_tcl.c 4db9258a7882c5eac0da4433042132aaf15b87dd1e1636c7a6ca203abd2c8bfe
 F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee
@@ -248,7 +248,7 @@ F ext/fts5/test/fts5unicode4.test 728c8f0caafb05567f524ad313d9f8b780fa45987b8a8d
 F ext/fts5/test/fts5unindexed.test 168838d2c385e131120bbf5b516d2432a5fabc4caa2259c932e1d49ae209a4ae
 F ext/fts5/test/fts5unindexed2.test 516236eceaac05ace322290a0d3705b4c4ffe4760d8eb9d014d9d27d56dfcc02
 F ext/fts5/test/fts5update.test b8affd796e45c94a4d19ad5c26606ea06065a0f162a9562d9f005b5a80ccf0bc
-F ext/fts5/test/fts5update2.test 1564d67b209a7d9358c450ecc53b12fcfbf176e865a3d340a31fc603cf3c0c2b
+F ext/fts5/test/fts5update2.test 8d201489b3f3fa253bea592ba6c943d49d80d6bdd7ca8002e70005ec89df3f44
 F ext/fts5/test/fts5version.test c22d163c17e60a99f022cbc52de5a48bb7f84deaa00fe15e9bc4c3aa1996204e
 F ext/fts5/test/fts5vocab.test 2a2bdb60d0998fa3124d541b6d30b019504918dc43a6584645b63a24be72f992
 F ext/fts5/test/fts5vocab2.test bbba149c254375d00055930c1a501c9a51e80b0d20bf7b98f3e9fa3b03786373
@@ -2217,8 +2217,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 4a26a4e0015bc42b1d007def3750caf7baefe429270a295cc2f4499c98c07247
-R 95c3ae17f3cd6ac697952fa425e027b2
+P b6b1db8d343d3e55c3a5589af3ec629762e06c6b689b77defd445347198cb2e7
+R acb0bb065c957a3db625bc75e5d80840
 U dan
-Z 35986965a22be180ac5ad4eb973f5b34
+Z c447109d9b6c39331039c8ac2d02cdb0
 # Remove this line to create a well-formed Fossil manifest.
index 7207c2799cd22cf56d17aa4c4c7bd15dd769f917..cce3bd54505931bdb685ab7a214684363bdc6e5d 100644 (file)
@@ -1 +1 @@
-b6b1db8d343d3e55c3a5589af3ec629762e06c6b689b77defd445347198cb2e7
+d69abca82145465c85241a12322986f22bf12ffe42f86c2c8e8e2f2a77d53bf8