aboutsummaryrefslogtreecommitdiff
path: root/ext/misc/fileio.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-11-16 08:36:15 +0000
committerdan <dan@noemail.net>2018-11-16 08:36:15 +0000
commitcbfaa076d70dd0ec0110bcc24c32e2ae11d633e0 (patch)
treef01e4454e992814e6be2e4cf9608b2d2516b446a /ext/misc/fileio.c
parent6f147c54ef48e1aae41fac6322cfeb7481eb1dea (diff)
downloadsqlite-cbfaa076d70dd0ec0110bcc24c32e2ae11d633e0.tar.gz
sqlite-cbfaa076d70dd0ec0110bcc24c32e2ae11d633e0.zip
Fix a problem with virtual table "fsdir" and some join queries.
FossilOrigin-Name: 7fffcee0fc3fe8d036f0d93ec17673992c3edcf2bb454dc90d80142435b37946
Diffstat (limited to 'ext/misc/fileio.c')
-rw-r--r--ext/misc/fileio.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/ext/misc/fileio.c b/ext/misc/fileio.c
index e3e22ea4b..12d20084f 100644
--- a/ext/misc/fileio.c
+++ b/ext/misc/fileio.c
@@ -835,15 +835,14 @@ static int fsdirBestIndex(
(void)tab;
pConstraint = pIdxInfo->aConstraint;
for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){
- if( pConstraint->usable==0 ) continue;
if( pConstraint->op!=SQLITE_INDEX_CONSTRAINT_EQ ) continue;
- if( pConstraint->iColumn==4 ) idx4 = i;
+ if( pConstraint->iColumn==4 && pConstraint->usable ) idx4 = i;
if( pConstraint->iColumn==5 ) idx5 = i;
}
- if( idx4<0 ){
+ if( idx4<0 || (idx5>=0 && pIdxInfo->aConstraint[idx5].usable==0) ){
pIdxInfo->idxNum = 0;
- pIdxInfo->estimatedCost = (double)(((sqlite3_int64)1) << 50);
+ pIdxInfo->estimatedCost = (double)(((sqlite3_int64)1) << 60);
}else{
pIdxInfo->aConstraintUsage[idx4].omit = 1;
pIdxInfo->aConstraintUsage[idx4].argvIndex = 1;