diff options
author | dan <dan@noemail.net> | 2018-11-16 08:36:15 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-11-16 08:36:15 +0000 |
commit | cbfaa076d70dd0ec0110bcc24c32e2ae11d633e0 (patch) | |
tree | f01e4454e992814e6be2e4cf9608b2d2516b446a /ext/misc/fileio.c | |
parent | 6f147c54ef48e1aae41fac6322cfeb7481eb1dea (diff) | |
download | sqlite-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.c | 7 |
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; |