diff --git a/manifest b/manifest index 5140cebc1e..f192e38d0a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\stest\scase\sfor\s[bugs:/info/2026-10-11T16:09:34Z\s|\s2026-10-11T16:09:34Z].\sBug\swas\salready\sfixed\sby\s[7f154192db]. -D 2026-10-12T13:44:50.244 +C Avoid\sever\srepreparing\sa\sstatement\sif\sa\scall\sto\ssqlite3_bind_int64()\sdoes\snot\sactually\schange\sthe\sbound\svalue. +D 2026-10-12T14:05:08.235 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -871,7 +871,7 @@ F src/vacuum.c d3d35d8ae893d419ade5fa196d761a83bddcbb62137a1a157ae751ef38b26e82 F src/vdbe.c 2954169319fef68d5119e9855637e7a44dc64f34ee474d68001a05c03072cb48 F src/vdbe.h b6ffb28da04363fd5d439b8204118fd3f2e751abe4f8e3edb089155fb90d4607 F src/vdbeInt.h 68e5ab63f184f2871780c83ce78b425d0360869611baea4c65575f91f76ac1d3 -F src/vdbeapi.c 5929b6010966f1f8f5be8605323cfa004b8f68cfa056735f8f283d85fae81391 +F src/vdbeapi.c 4f7ad184ca2cd3770c5da3ce707f348965f9a2677acc25dcc256237ccdd0b99f F src/vdbeaux.c 27d92528e7953a80f64782ef75e65a6694277214082e87d125e74e52d9e7ecd5 F src/vdbeblob.c b3f0640db9642fbdc88bd6ebcc83d6009514cafc98f062f675f2c8d505d82692 F src/vdbemem.c b2113c949e2ed918294e16a5ebaacdaca6be4f820f670517e3362e94c7019432 @@ -1622,7 +1622,7 @@ F test/regexp1.sql a57e8d2777c7d62142bc802a7f18791ed5f17561ce6a1ca6ff287ba1a8c87 F test/regexp1.test 0023eae4073265641b826a70d81ba34d4dd66ad71871a5b4a1b7cf500d5c0c51 F test/regexp2.test 64f9726b2ddc71aea06725fcad53231833d038d58b936d49083ace658b370a13 F test/reindex.test cd9d6021729910ece82267b4f5e1b5ac2911a7566c43b43c176a6a4732e2118d -F test/reprepare.test c8e4c5e8ba41849c73a03e006b9e6a38c9a86002300fb07f7a806d8b73b1e0e3 +F test/reprepare.test 44106ed3509dac4ad81f70bbad97aaf32e4c8d92761133f3a51883f324b150be F test/reservebytes.test 6163640b5a5120c0dee6591481e673a0fa0bf0d12d4da7513bad692c1a49a162 F test/resetdb.test 54c06f18bc832ac6d6319e5ab23d5c8dd49fdbeec7c696d791682a8006bd5fc3 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb @@ -2284,8 +2284,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 7f154192db5a3a79f4666edd31dfc29fd73904ccd3630952e3b032e49fee6455 -R 33c8c740bf911a86fd5b8557c1ba1cab +P 085dca9d30e5ce500e22374573b553f6bcd934549bc5b25305b0b97d6b37a104 +R eb4b1159f59ceaf74db08801163c192e U dan -Z 9e68ec7f4733a7d310b8587dda072ab5 +Z 8a563abeff3722e462d3eade902cf9a5 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index a48fbb2e5a..ecffe44339 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -085dca9d30e5ce500e22374573b553f6bcd934549bc5b25305b0b97d6b37a104 +4708cfe5f7fe1874870564956f0f81ba79226657c6d07ea1edffba7d5a6e4e3b diff --git a/src/vdbeapi.c b/src/vdbeapi.c index 51a6bed242..29b4fd4b72 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -1892,7 +1892,7 @@ int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){ if( sm1!=sm2 ){ p->expired = 1; } - }else{ + }else if( (pVar->flags & MEM_Int)==0 || iValue!=pVar->u.i ){ /* Always expire if the smimask bit is clear */ p->expired = 1; } diff --git a/test/reprepare.test b/test/reprepare.test index 750dc0edec..c13b4d48a4 100644 --- a/test/reprepare.test +++ b/test/reprepare.test @@ -85,6 +85,16 @@ do_reprepare_test 1.3 { { sqlite3_bind_int64 $stmt 1 2 } 1 } +do_reprepare_test 1.4 { + SELECT * FROM t1 LIMIT ?1 +} { + { sqlite3_bind_int64 $stmt 1 12 } 1 + { sqlite3_bind_int64 $stmt 1 12 } 0 + { sqlite3_bind_int64 $stmt 1 13 } 1 + { sqlite3_bind_int64 $stmt 1 13 } 0 + { sqlite3_bind_int64 $stmt 1 14 } 1 +} + #------------------------------------------------------------------------- # Test that if a variable is used both in a context where only a change # to or from a small integer requires a reprepare (an equality comparison)