From: drh Date: Mon, 24 Mar 2014 01:43:50 +0000 (+0000) Subject: Further enhancements to geneverated VDBE code for ORDER BY. X-Git-Tag: version-3.8.7~132^2~95^2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70f624c3a9ed4a9d1efc61ddd3a6744d741be886;p=thirdparty%2Fsqlite.git Further enhancements to geneverated VDBE code for ORDER BY. FossilOrigin-Name: e7188fad87ec82d36a39b80ccaf8006bf45a9bcd --- diff --git a/manifest b/manifest index 140d5c124c..979df5c0f1 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C merge\sfixes\sfrom\strunk -D 2014-03-23T18:47:00.384 +C Further\senhancements\sto\sgeneverated\sVDBE\scode\sfor\sORDER\sBY. +D 2014-03-24T01:43:50.641 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -217,7 +217,7 @@ F src/printf.c e5a0005f8b3de21f85da6a709d2fbee76775bf4b F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece F src/resolve.c 273d5f47c4e2c05b2d3d2bffeda939551ab59e66 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 -F src/select.c 09fef04ec0746d168ddcff37031ee804ac19dd0e +F src/select.c bf5446f892259f2bb59b0fd9f123b37862b6282b F src/shell.c cee9f46f2688a261601b1fd3d7f4b3cddf9b5cdf F src/sqlite.h.in a2ef671f92747a5a1c8a47bad5c585a8dd9eca80 F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e @@ -1157,7 +1157,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P d696cdedacd39075aa7fc407ab7c7e50f01d9f39 641408a1395bfc911ca619ef9e5f073b913d856b -R e64080ab6e1cc6573ca05b14626c10fb +P faf7f9caf526ab33a6fdb9c89b45a0483510db21 +R 55d45b1a91856051dc771a7feb58050e U drh -Z 0df19c139e23d451d51cd0e8cf9cddd3 +Z 450407adee455925374bbdaef08e9b36 diff --git a/manifest.uuid b/manifest.uuid index 49e295d769..61b2c1f687 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -faf7f9caf526ab33a6fdb9c89b45a0483510db21 \ No newline at end of file +e7188fad87ec82d36a39b80ccaf8006bf45a9bcd \ No newline at end of file diff --git a/src/select.c b/src/select.c index 1acc6d1020..5ececf1540 100644 --- a/src/select.c +++ b/src/select.c @@ -473,8 +473,7 @@ static void pushOntoSorter( int nOBSat = pSort->nOBSat; /* No. ORDER BY terms to skip */ int op; /* Opcode to add sorter record to sorter */ - sqlite3ExprCacheClear(pParse); - sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, 0); + sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, SQLITE_ECEL_DUP); sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr); sqlite3VdbeAddOp3(v, OP_Move, regData, regBase+nExpr+1, nData); sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nBase-nOBSat, regRecord); @@ -1127,7 +1126,6 @@ static void generateSortTail( int addr; int addrOnce = 0; int iTab; - int pseudoTab = 0; ExprList *pOrderBy = pSort->pOrderBy; int eDest = pDest->eDest; int iParm = pDest->iSDParm; @@ -1138,6 +1136,9 @@ static void generateSortTail( int nSortData; /* Trailing values to read from sorter */ u8 p5; /* p5 parameter for 1st OP_Column */ int i; +#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS + struct ExprList_item *aOutEx = p->pEList->a; +#endif if( pSort->labelBkOut ){ sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); @@ -1148,8 +1149,6 @@ static void generateSortTail( iTab = pSort->iECursor; regRow = sqlite3GetTempReg(pParse); if( eDest==SRT_Output || eDest==SRT_Coroutine ){ - pseudoTab = pParse->nTab++; - sqlite3VdbeAddOp3(v, OP_OpenPseudo, pseudoTab, regRow, nColumn); regRowid = 0; regRow = pDest->iSdst; nSortData = nColumn; @@ -1180,6 +1179,7 @@ static void generateSortTail( for(i=0; i