]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Expression nodes of type TK_ROW mean the rowid of the first table in the
authordrh <drh@noemail.net>
Mon, 6 Oct 2008 13:54:35 +0000 (13:54 +0000)
committerdrh <drh@noemail.net>
Mon, 6 Oct 2008 13:54:35 +0000 (13:54 +0000)
source list. (CVS 5769)

FossilOrigin-Name: 2f7db6c98f17e0b7110258093c283091a91d4e4f

manifest
manifest.uuid
src/resolve.c

index 7ddcfbfbc0a0199f2fdb0523eff84b349e269e30..1a8dd59fd459d4e8af41c4adf410ef0cfbbbbb76 100644 (file)
--- 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
index 0456388007a8d34278dfa50e82ae3661e694ab96..92fa86c580427d4938042524222bdd7c50411091 100644 (file)
@@ -1 +1 @@
-693503e241001271512f4ce3e8cc932ba6a3106c
\ No newline at end of file
+2f7db6c98f17e0b7110258093c283091a91d4e4f
\ No newline at end of file
index dfbc3b17a114fe6ad899d92b02724c16866cff27..4b30350c774ca460316d94023a3a4e3b5bb3e2b8 100644 (file)
@@ -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 <stdlib.h>
@@ -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: {