mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-19 21:43:15 +03:00
Minor problems in the high-speed NGQP fixed.
FossilOrigin-Name: 20eeccf1f24dd762f1bee9c3fe628c70ff01627f
This commit is contained in:
15
manifest
15
manifest
@@ -1,5 +1,5 @@
|
|||||||
C High-speed\sversion\sof\sNGQP.\s\sStill\shas\ssome\sminor\sproblems.
|
C Minor\sproblems\sin\sthe\shigh-speed\sNGQP\sfixed.
|
||||||
D 2013-06-09T17:21:25.979
|
D 2013-06-10T12:15:47.024
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
|
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@@ -289,7 +289,7 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83
|
|||||||
F src/wal.c 436bfceb141b9423c45119e68e444358ee0ed35d
|
F src/wal.c 436bfceb141b9423c45119e68e444358ee0ed35d
|
||||||
F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
|
F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
|
||||||
F src/walker.c 4fa43583d0a84b48f93b1e88f11adf2065be4e73
|
F src/walker.c 4fa43583d0a84b48f93b1e88f11adf2065be4e73
|
||||||
F src/where.c 2dae18fe0b79aa90f213c5f2ff385a7ac56d36d5
|
F src/where.c 9fff9a5f3f227857aa0590026837a78696d3bba7
|
||||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||||
F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
|
F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
|
||||||
@@ -1094,10 +1094,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||||
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
||||||
P dfbca3acaeb862f24f25e7810a16ff2066111ff4
|
P db2415fa677b84cd0f6dd424283c94e98d246e3b
|
||||||
R e3ea6bb6c8cd62c47ea6f6e83f99515a
|
R 1c99bcc201a3fe7c000749ac05c30a32
|
||||||
T *branch * nextgen-query-plan-fast
|
|
||||||
T *sym-nextgen-query-plan-fast *
|
|
||||||
T -sym-nextgen-query-plan-exp *
|
|
||||||
U drh
|
U drh
|
||||||
Z 13597db4c2da76541af04a4f735ffed4
|
Z f1d76f2fd1cf61ecde305cf79590397b
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
db2415fa677b84cd0f6dd424283c94e98d246e3b
|
20eeccf1f24dd762f1bee9c3fe628c70ff01627f
|
||||||
36
src/where.c
36
src/where.c
@@ -4281,6 +4281,21 @@ static int indexMightHelpWithOrderBy(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Return a bitmask where 1s indicate that the corresponding column of
|
||||||
|
** the table is used by an index. Only the first 63 columns are considered.
|
||||||
|
*/
|
||||||
|
static Bitmask columnsUsedByIndex(Index *pIdx){
|
||||||
|
Bitmask m = 0;
|
||||||
|
int j;
|
||||||
|
for(j=pIdx->nColumn-1; j>=0; j--){
|
||||||
|
int x = pIdx->aiColumn[j];
|
||||||
|
if( x<BMS-1 ) m |= MASKBIT(x);
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Add all WhereLoop objects a single table of the join were the table
|
** Add all WhereLoop objects a single table of the join were the table
|
||||||
** is idenfied by pBuilder->pNew->iTab. That table is guaranteed to be
|
** is idenfied by pBuilder->pNew->iTab. That table is guaranteed to be
|
||||||
@@ -4388,14 +4403,7 @@ static int whereLoopAddBtree(
|
|||||||
rc = whereLoopInsert(pBuilder, pNew);
|
rc = whereLoopInsert(pBuilder, pNew);
|
||||||
if( rc ) break;
|
if( rc ) break;
|
||||||
}else{
|
}else{
|
||||||
Bitmask m = pSrc->colUsed;
|
Bitmask m = pSrc->colUsed & ~columnsUsedByIndex(pProbe);
|
||||||
int j;
|
|
||||||
for(j=pProbe->nColumn-1; j>=0; j--){
|
|
||||||
int x = pProbe->aiColumn[j];
|
|
||||||
if( x<BMS-1 ){
|
|
||||||
m &= ~MASKBIT(x);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pNew->wsFlags = (m==0) ? (WHERE_IDX_ONLY|WHERE_INDEXED) : WHERE_INDEXED;
|
pNew->wsFlags = (m==0) ? (WHERE_IDX_ONLY|WHERE_INDEXED) : WHERE_INDEXED;
|
||||||
|
|
||||||
/* Full scan via index */
|
/* Full scan via index */
|
||||||
@@ -5186,7 +5194,7 @@ static int whereSimpleFastCase(WhereLoopBuilder *pBuilder){
|
|||||||
WhereTerm *pTerm;
|
WhereTerm *pTerm;
|
||||||
WhereLoop *pLoop;
|
WhereLoop *pLoop;
|
||||||
int iCur;
|
int iCur;
|
||||||
int i, j;
|
int j;
|
||||||
int nOrderBy;
|
int nOrderBy;
|
||||||
Table *pTab;
|
Table *pTab;
|
||||||
Index *pIdx;
|
Index *pIdx;
|
||||||
@@ -5202,6 +5210,11 @@ static int whereSimpleFastCase(WhereLoopBuilder *pBuilder){
|
|||||||
pLoop = pBuilder->pNew;
|
pLoop = pBuilder->pNew;
|
||||||
pWInfo->a[0].pWLoop = pLoop;
|
pWInfo->a[0].pWLoop = pLoop;
|
||||||
pLoop->wsFlags = 0;
|
pLoop->wsFlags = 0;
|
||||||
|
pLoop->maskSelf = getMask(&pWInfo->sMaskSet, iCur);
|
||||||
|
pWInfo->a[0].iTabCur = iCur;
|
||||||
|
#ifdef SQLITE_DEBUG
|
||||||
|
pLoop->cId = '0';
|
||||||
|
#endif
|
||||||
nOrderBy = pWInfo->pOrderBy ? pWInfo->pOrderBy->nExpr : 0;
|
nOrderBy = pWInfo->pOrderBy ? pWInfo->pOrderBy->nExpr : 0;
|
||||||
pTerm = findTerm(pWC, iCur, -1, 1, WO_EQ, 0);
|
pTerm = findTerm(pWC, iCur, -1, 1, WO_EQ, 0);
|
||||||
if( pTerm ){
|
if( pTerm ){
|
||||||
@@ -5223,7 +5236,10 @@ static int whereSimpleFastCase(WhereLoopBuilder *pBuilder){
|
|||||||
pLoop->aLTerm[j] = pTerm;
|
pLoop->aLTerm[j] = pTerm;
|
||||||
}
|
}
|
||||||
if( j!=pIdx->nColumn ) continue;
|
if( j!=pIdx->nColumn ) continue;
|
||||||
pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_ONEROW;
|
pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_ONEROW|WHERE_INDEXED;
|
||||||
|
if( (pItem->colUsed & ~columnsUsedByIndex(pIdx))==0 ){
|
||||||
|
pLoop->wsFlags |= WHERE_IDX_ONLY;
|
||||||
|
}
|
||||||
pLoop->nLTerm = j;
|
pLoop->nLTerm = j;
|
||||||
pLoop->u.btree.nEq = j;
|
pLoop->u.btree.nEq = j;
|
||||||
pLoop->u.btree.pIndex = pIdx;
|
pLoop->u.btree.pIndex = pIdx;
|
||||||
|
|||||||
Reference in New Issue
Block a user