diff --git a/manifest b/manifest index 7ddcfbfbc0..1a8dd59fd4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C In\ssqlite3_bind()\sinterfaces,\savoid\sacquiring\sthe\smutex\suntil\safter\sthe\nstatement\shandle\shas\sbeen\svalidated.\s\sTicket\s#3418.\s(CVS\s5768) -D 2008-10-06T12:46:44 +C Expression\snodes\sof\stype\sTK_ROW\smean\sthe\srowid\sof\sthe\sfirst\stable\sin\sthe\nsource\slist.\s(CVS\s5769) +D 2008-10-06T13:54:35 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in e4ab842f9a64ef61d57093539a8aab76b12810db F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -146,7 +146,7 @@ F src/pragma.c 0b1c2d2a241dd79a7361bbeb8ff575a9e9d7cd71 F src/prepare.c c7e00ed1b0bdcf699b1aad651247d4dc3d281b0b F src/printf.c 785f87120589c1db672e37c6eb1087c456e6f84d F src/random.c 11bbdf7def3746a762fbdb56c9d04648135ad6d8 -F src/resolve.c a6abf83125bce0c80ba04acc27c3565155ad305c +F src/resolve.c 9aeb0719949bad117e0df9fdd06688a5fa06223b F src/select.c 75d4ffe971e25831125ea165c0c580df00f4c403 F src/shell.c d83b578a8ccdd3e0e7fef4388a0887ce9f810967 F src/sqlite.h.in ea235b37a691b32e7941baa70fb0afaf6377dbb4 @@ -639,7 +639,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P bb51c34506b3353506b6f3566fbe2a10d02e8ebc -R 69a4995829880b2d104f98bd582a2981 +P 693503e241001271512f4ce3e8cc932ba6a3106c +R 497dc3af1e2cb1328ea2b80e152ed99a U drh -Z aca7259dd10a822c578f92e2091145fe +Z 1bfcb8fd89bfe1a5f0eb7238feee16f8 diff --git a/manifest.uuid b/manifest.uuid index 0456388007..92fa86c580 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -693503e241001271512f4ce3e8cc932ba6a3106c \ No newline at end of file +2f7db6c98f17e0b7110258093c283091a91d4e4f \ No newline at end of file diff --git a/src/resolve.c b/src/resolve.c index dfbc3b17a1..4b30350c77 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -14,7 +14,7 @@ ** resolve all identifiers by associating them with a particular ** table and column. ** -** $Id: resolve.c,v 1.5 2008/08/29 02:14:03 drh Exp $ +** $Id: resolve.c,v 1.6 2008/10/06 13:54:35 drh Exp $ */ #include "sqliteInt.h" #include @@ -418,6 +418,26 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ } #endif switch( pExpr->op ){ + +#ifndef SQLITE_OMIT_UPDATE_DELETE_LIMIT + /* The special operator TK_ROW means use the rowid for the first + ** column in the FROM clause. This is used by the LIMIT and ORDER BY + ** clause processing on UPDATE and DELETE statements. + */ + case TK_ROW: { + SrcList *pSrcList = pNC->pSrcList; + struct SrcList_item *pItem; + assert( pSrcList && pSrcList->nSrc==1 ); + pItem = pSrcList->a; + pExpr->op = TK_COLUMN; + pExpr->pTab = pItem->pTab; + pExpr->iTable = pItem->iCursor; + pExpr->iColumn = -1; + pExpr->affinity = SQLITE_AFF_INTEGER; + break; + } +#endif /* SQLITE_OMIT_UPDATE_DELETE_LIMIT + /* A lone identifier is the name of a column. */ case TK_ID: {