Handle constraints like "a=$var" where the value bound to $var is -1, 0 or 1 in the same way as a literal -1, 0, 1. This might cause excessive reprepares.
FossilOrigin-Name: 224e827e87ac8aa4b18ff9b2193decbdcd832579bf6b6e0883c03db90ebd5319
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
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
|
||||
@@ -818,7 +818,7 @@ F src/vxworks.h 9d18819c5235b49c2340a8a4d48195ec5d5afb637b152406de95a9436beeaeab
|
||||
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
|
||||
@@ -856,7 +856,7 @@ F test/altertab3.test 575e771e2f02b13eb98798dc92eabacd187d6dbcf596e70f11d699b0b6
|
||||
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
|
||||
@@ -1093,7 +1093,7 @@ F test/enc2.test 872afe58db772e7dfa1ad8e0759f8cc820e9efc8172d460fae83023101c2e43
|
||||
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
|
||||
@@ -2205,8 +2205,11 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
|
||||
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.
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
branch trunk
|
||||
tag trunk
|
||||
branch reprepare-a=var
|
||||
tag reprepare-a=var
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
f81d6d7bc8943729f678a3b62921a96764b15b9cc11d8a5753e48210a1b59617
|
||||
224e827e87ac8aa4b18ff9b2193decbdcd832579bf6b6e0883c03db90ebd5319
|
||||
|
||||
+2
-1
@@ -3088,9 +3088,10 @@ static void whereLoopOutputAdjust(
|
||||
&& (pTerm->wtFlags & TERM_HIGHTRUTH)==0 /* tag-20200224-1 */
|
||||
){
|
||||
Expr *pRight = pOpExpr->pRight;
|
||||
Parse *pParse = pWC->pWInfo->pParse;
|
||||
int k = 0;
|
||||
testcase( pOpExpr->op==TK_IS );
|
||||
if( sqlite3ExprIsInteger(pRight, &k, 0) && k>=(-1) && k<=1 ){
|
||||
if( sqlite3ExprIsInteger(pRight, &k, pParse) && k>=(-1) && k<=1 ){
|
||||
k = 10;
|
||||
}else{
|
||||
k = 20;
|
||||
|
||||
+1
-1
@@ -415,7 +415,7 @@ do_test analyze3-3.4.1 {
|
||||
do_test analyze3-3.4.2 {
|
||||
sqlite3_bind_text $S 1 "abc" 3
|
||||
sqlite3_expired $S
|
||||
} {0}
|
||||
} {1}
|
||||
do_test analyze3-3.4.3 {
|
||||
sqlite3_bind_text $S 2 "def" 3
|
||||
sqlite3_expired $S
|
||||
|
||||
@@ -44,6 +44,40 @@ do_eqp_test 1.3 {
|
||||
`--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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user