mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-18 10:21:03 +03:00
Fix an instance where the planner might choose to use the OR-optimization when it adds no benefit. The same quirk causes an assert() to fail. This is not a bug in released versions - without the assert() the library still gets the right answer, it just does so less efficiently than it should.
FossilOrigin-Name: f4bed1d7af8a94c6facd567dec5afae8865a5ad76b8834493099e5e30bed1132
This commit is contained in:
@@ -2135,6 +2135,8 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
|
||||
}
|
||||
pBuilder->iPlanLimit--;
|
||||
|
||||
whereLoopAdjustCost(pWInfo->pLoops, pTemplate);
|
||||
|
||||
/* If pBuilder->pOrSet is defined, then only keep track of the costs
|
||||
** and prereqs.
|
||||
*/
|
||||
@@ -2158,7 +2160,6 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
|
||||
|
||||
/* Look for an existing WhereLoop to replace with pTemplate
|
||||
*/
|
||||
whereLoopAdjustCost(pWInfo->pLoops, pTemplate);
|
||||
ppPrev = whereLoopFindLesser(&pWInfo->pLoops, pTemplate);
|
||||
|
||||
if( ppPrev==0 ){
|
||||
|
||||
Reference in New Issue
Block a user