]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix for ticket #3887. Other unrelated bits of code cleanup in the expr.c
authordrh <drh@noemail.net>
Sat, 30 May 2009 14:16:31 +0000 (14:16 +0000)
committerdrh <drh@noemail.net>
Sat, 30 May 2009 14:16:31 +0000 (14:16 +0000)
source module. (CVS 6693)

FossilOrigin-Name: 00e7250f11e190cd915870438d172f574d110e6d

manifest
manifest.uuid
src/expr.c
src/sqliteInt.h

index d3d971ae94eed87ffe6cb1ba1b5891b1a3bb376a..fde6d858f620977c37ae90d8951e9b36cc7792da 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C In\svacuum.c\suse\s"PagerIsMemdb(X)"\sinstead\sof\s"PagerFile(X)->pMethods==0".\s(CVS\s6692)
-D 2009-05-30T10:46:10
+C Fix\sfor\sticket\s#3887.\s\sOther\sunrelated\sbits\sof\scode\scleanup\sin\sthe\sexpr.c\nsource\smodule.\s(CVS\s6693)
+D 2009-05-30T14:16:32
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 583e87706abc3026960ed759aff6371faf84c211
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -114,7 +114,7 @@ F src/callback.c 57359fa93de47c341b6b8ee504a88ff276397686
 F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
 F src/date.c ab5f7137656652a48434d64f96bdcdc823bb23b3
 F src/delete.c cb791855c7948cecc96def9d97989879ca26f257
-F src/expr.c b844f5f63bc46c160ce20ec7b76ca2fe4aa70323
+F src/expr.c 0851fab95daa554fee9c807f418661c9f76a159d
 F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
 F src/func.c 9d7b47729c337c5e4b78d795922ed34eec4aef67
 F src/global.c 448419c44ce0701104c2121b0e06919b44514c0c
@@ -162,7 +162,7 @@ F src/select.c fd1737a667bab296f50049a841b3aba5ec89418e
 F src/shell.c 7eacd0bdaa887931f5ff205c9defc3e8df95a2dd
 F src/sqlite.h.in 79210c4d8905cfb4b038486dde5f36fabb796a86
 F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
-F src/sqliteInt.h 39fb1a85a71f9a86817ccc55b308335b4b43012a
+F src/sqliteInt.h 9d9e15a343bc56e8fc11217d5095f3c9f0508bed
 F src/sqliteLimit.h ffe93f5a0c4e7bd13e70cd7bf84cfb5c3465f45d
 F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
 F src/table.c cc86ad3d6ad54df7c63a3e807b5783c90411a08d
@@ -731,7 +731,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P ede06dacdf7acab23cd9666a0a0d092a637bcb78
-R 954353c465f3c24b9164432f42f3e6d9
-U danielk1977
-Z e2e502fdb8f1f0ede9b0b596fa4ae5d2
+P 874295ce71380da3f4c9296df0e0ce5ece136220
+R 45b4a46b0ff2886bd9af43bbb9bddda9
+U drh
+Z 3b1ac411039a31c3d64698f887a60c7f
index f407b00dd7eef01271199f6fa7c0c188c587913b..25055881af401b5910b0ec6aff159caef7e7e201 100644 (file)
@@ -1 +1 @@
-874295ce71380da3f4c9296df0e0ce5ece136220
\ No newline at end of file
+00e7250f11e190cd915870438d172f574d110e6d
\ No newline at end of file
index b9979d6020ea1d143eecc1cd009d891da058c3e0..7ed692964bfa63ddcb5179f82013255bf7f811c5 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains routines used for analyzing expressions and
 ** for generating VDBE code that evaluates expressions in SQLite.
 **
-** $Id: expr.c,v 1.441 2009/05/29 19:00:13 drh Exp $
+** $Id: expr.c,v 1.442 2009/05/30 14:16:32 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -2403,8 +2403,8 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
         pDef = sqlite3VtabOverloadFunction(db, pDef, nFarg, pFarg->a[0].pExpr);
       }
 #endif
-      for(i=0; i<nFarg && i<32; i++){
-        if( sqlite3ExprIsConstant(pFarg->a[i].pExpr) ){
+      for(i=0; i<nFarg; i++){
+        if( i<32 && sqlite3ExprIsConstant(pFarg->a[i].pExpr) ){
           constMask |= (1<<i);
         }
         if( (pDef->flags & SQLITE_FUNC_NEEDCOLL)!=0 && !pColl ){
@@ -2429,9 +2429,7 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
     case TK_SELECT: {
       testcase( op==TK_EXISTS );
       testcase( op==TK_SELECT );
-      if( pExpr->iColumn==0 ){
-        sqlite3CodeSubselect(pParse, pExpr, 0, 0);
-      }
+      sqlite3CodeSubselect(pParse, pExpr, 0, 0);
       inReg = pExpr->iColumn;
       break;
     }
index fadde5047d4234cc2df92489575d1c76c6431623..b370fe071e2fd1e5d562c088c5831e2844568e8f 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** Internal interface definitions for SQLite.
 **
-** @(#) $Id: sqliteInt.h,v 1.878 2009/05/28 21:04:39 drh Exp $
+** @(#) $Id: sqliteInt.h,v 1.879 2009/05/30 14:16:32 drh Exp $
 */
 #ifndef _SQLITEINT_H_
 #define _SQLITEINT_H_
@@ -952,7 +952,7 @@ struct FuncDef {
 **     implemented by C function xFunc that accepts nArg arguments. The
 **     value passed as iArg is cast to a (void*) and made available
 **     as the user-data (sqlite3_user_data()) for the function. If 
-**     argument bNC is true, then the FuncDef.needCollate flag is set.
+**     argument bNC is true, then the SQLITE_FUNC_NEEDCOLL flag is set.
 **
 **   AGGREGATE(zName, nArg, iArg, bNC, xStep, xFinal)
 **     Used to create an aggregate function definition implemented by
@@ -969,13 +969,16 @@ struct FuncDef {
 **     parameter.
 */
 #define FUNCTION(zName, nArg, iArg, bNC, xFunc) \
-  {nArg, SQLITE_UTF8, bNC*8, SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0}
+  {nArg, SQLITE_UTF8, bNC*SQLITE_FUNC_NEEDCOLL, \
+   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0}
 #define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
-  {nArg, SQLITE_UTF8, bNC*8, pArg, 0, xFunc, 0, 0, #zName, 0}
+  {nArg, SQLITE_UTF8, bNC*SQLITE_FUNC_NEEDCOLL, \
+   pArg, 0, xFunc, 0, 0, #zName, 0}
 #define LIKEFUNC(zName, nArg, arg, flags) \
   {nArg, SQLITE_UTF8, flags, (void *)arg, 0, likeFunc, 0, 0, #zName, 0}
 #define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \
-  {nArg, SQLITE_UTF8, nc*8, SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0}
+  {nArg, SQLITE_UTF8, nc*SQLITE_FUNC_NEEDCOLL, \
+   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0}
 
 /*
 ** All current savepoints are stored in a linked list starting at