-C Fix\sthe\ssqlite3changegroup_change_finish()\sAPI\sso\sthat\sit\scorrectly\shandles\sNULL\sbeing\spassed\sfor\sthe\spzErr\sparameter.
-D 2026-05-13T20:37:30.527
+C Handle\sconstraints\slike\s"a=$var"\swhere\sthe\svalue\sbound\sto\s$var\sis\s-1,\s0\sor\s1\sin\sthe\ssame\sway\sas\sa\sliteral\s-1,\s0,\s1.\sThis\smight\scause\sexcessive\sreprepares.
+D 2026-05-14T17:54:23.788
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F src/wal.c 7340d4f9bb827bd349127cac6b2cf0cb7f76b9fda645f7b9b0bf7a6e0b1e2e7c
F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
-F src/where.c 7241a71725d8c193ddd9e69a299820fcd755943f3b5ac376a84b2716e2848401
+F src/where.c 53abef65858e20b3c7d9f23fa9d78ee385d7054b9e13a8c1886265167f39288c
F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da
F src/wherecode.c 4d573077652f79780d6b50840ab8cbb72053dbb4eb230780dd2a146ab034475d
F src/whereexpr.c e9f7185fba366d9365aa7a97329609e4cf00b3dd0400d069fbaa5187350c17c6
F test/altertrig.test b1590647076add5a47aea0f2236c609ca0bc8a7a2462463edd3e5882c7894802
F test/amatch1.test 8a9405f497a57705a368f242658e2aea900dd2efbc48a48024263b0df6fc1ea0
F test/analyze.test 2fb21d7d64748636384e6cb8998dbf83968caf644c07fcb4f76c18f2e7ede94b
-F test/analyze3.test c5156cef33f04b90a6b9e9d5d0bbc273a0fb44147d4508407bf1080811e2c6c8
+F test/analyze3.test 42adfaedaddca1d93d9f4ac38465791e25a2e4b7a261a5278e92f554ac1e15f1
F test/analyze4.test 68bd069f3ac7ac1e652ddd9f04f57d5606ddb4208450f5297005db7aa0dd707d
F test/analyze5.test fa5131952303ac4146aba101b116b9c8cb89e2637531c334a6df7f7d19dddc0d
F test/analyze6.test 028f5bdfc9e5b5294768fa9a7185b8cd1d019aa7aab5b2f8ee42d7271d9a3b28
F test/enc3.test 55ef64416d72975c66167310a51dc9fc544ba3ae4858b8d5ab22f4cb6500b087
F test/enc4.test c8f1ce3618508fd0909945beb8b8831feef2c020
F test/eqp.test 1d653fe8d2612cd6764e5ea2f16dcf5f13a9f50448b9233bb1573804bccd7579
-F test/eqp2.test 6e8996148de88f0e7670491e92e712a2920a369b4406f21a27c3c9b6a46b68dd
+F test/eqp2.test 950ca786db3e74cbca5105cfd160c84f81744275034b1e3cc3c75e3e3807a0cc
F test/errmsg.test eae9f091eb39ce7e20305de45d8e5d115b68fa856fba4ea6757b6ca3705ff7f9
F test/errofst1.test 6da78363739ba8991f498396ab331b5d64e7ab5c4172c12b5884683ef523ac53
F test/eval.test 73969a2d43a511bf44080c44485a8c4d796b6a4f038d19e491867081155692c0
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 3ddc07110dacef98c14b852dcdc4f11d1c0f4061008bf3a61e2df707b0dc6c6b
-R 1dab4a7992096fd33a1b7a8bbcb2d58c
+P f81d6d7bc8943729f678a3b62921a96764b15b9cc11d8a5753e48210a1b59617
+R 8f8318379b196cd0991d680e07b8a844
+T *branch * reprepare-a=var
+T *sym-reprepare-a=var *
+T -sym-trunk *
U dan
-Z 369ba48121df91d9d1fcfb40348f03a0
+Z 7fbfe875c8d4b7c99a11f0177adeb2df
# Remove this line to create a well-formed Fossil manifest.
`--USE TEMP B-TREE FOR LAST 2 TERMS OF ORDER BY
}
+#-------------------------------------------------------------------------
+# Test that a bound value of 0 is handled in the same way as a literal
+# 0 when estimating the probability of (x=<some-integer>).
+#
+reset_db
+do_execsql_test 2.0 {
+ CREATE TABLE t1(a INT, b INT);
+ CREATE TABLE t2(x INT, y INT);
+ CREATE INDEX t1_a ON t1(a);
+ CREATE INDEX t1_b ON t1(b);
+ CREATE INDEX t2_x ON t2(x);
+
+ WITH s(i) AS ( SELECT 0 UNION ALL SELECT i+1 FROM s WHERE i<999)
+ INSERT INTO t1 SELECT i%33, i FROM s;
+
+ WITH s(i) AS ( SELECT 0 UNION ALL SELECT i+1 FROM s WHERE i<59)
+ INSERT INTO t2 SELECT i, i%3 FROM s;
+
+ ANALYZE;
+}
+
+set zero [expr 0]
+
+do_eqp_test 2.1 {
+ SELECT * FROM t1 JOIN t2 ON t1.b = t2.x
+ WHERE t1.a = 5 AND t2.y = $zero
+} {SEARCH t1 USING INDEX t1_a (a=?)*SEARCH t2 USING INDEX t2_x (x=?)}
+
+do_eqp_test 2.2 {
+ SELECT * FROM t1 JOIN t2 ON t1.b = t2.x
+ WHERE t1.a = 5 AND t2.y = 0
+} {SEARCH t1 USING INDEX t1_a (a=?)*SEARCH t2 USING INDEX t2_x (x=?)}
+
+
finish_test