From 73c0fdc7fa21eeeb65d18f583db59490509212bf Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 15 Jun 2009 18:32:36 +0000 Subject: [PATCH] Updates to resolve.c to facilitate full coverage testing. (CVS 6762) FossilOrigin-Name: c50f0f28df1dfdccf1d159c983b616cd9b823955 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/resolve.c | 43 +++++++++++++++++++------------------------ 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/manifest b/manifest index c73adc5bec..1a54542e2f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\scompiler\swarnings\swith\sMSVC\sbuild.\s(CVS\s6761) -D 2009-06-15T16:27:08 +C Updates\sto\sresolve.c\sto\sfacilitate\sfull\scoverage\stesting.\s(CVS\s6762) +D 2009-06-15T18:32:36 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 8b8fb7823264331210cddf103831816c286ba446 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -156,7 +156,7 @@ F src/pragma.c 06b3a4b93a5e587f1c04b4a40016eb360792cdf3 F src/prepare.c 889208e3567a98bb3d345a30f63240beb9ac90f9 F src/printf.c 508a1c59433353552b6553cba175eaa7331f8fc1 F src/random.c 676b9d7ac820fe81e6fb2394ac8c10cff7f38628 -F src/resolve.c f86d3490cf93a12f8a451720defc622cbc79873a +F src/resolve.c 34c5b59db6d5ae901558225facabc5833693f9b4 F src/rowset.c c64dafba1f9fd876836c8db8682966b9d197eb1f F src/select.c 71748b8e244112cf73df9446c4246c192276c30d F src/shell.c db2643650b9268df89a4bedca3f1c6d9e786f1bb @@ -734,7 +734,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746 -P aff34826aa4667d24f0dbc8bea828dc0f84d2108 -R ab89da00143db50e3863f3ec2715823c -U shane -Z 49bb545d34c133193720edd93586168c +P e1e6430752449a34671b6c89326b03ac36ea6d9a +R 78938853ca46277a6aea6374dcd54eee +U drh +Z 1ecdfcd773dc185e922d924dee4a6294 diff --git a/manifest.uuid b/manifest.uuid index 6974ba11d9..faed5b1eed 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e1e6430752449a34671b6c89326b03ac36ea6d9a \ No newline at end of file +c50f0f28df1dfdccf1d159c983b616cd9b823955 \ No newline at end of file diff --git a/src/resolve.c b/src/resolve.c index e7458cceeb..666bbf226b 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.28 2009/06/01 16:53:10 shane Exp $ +** $Id: resolve.c,v 1.29 2009/06/15 18:32:36 drh Exp $ */ #include "sqliteInt.h" #include @@ -76,15 +76,14 @@ static void resolveAlias( if( pDup==0 ) return; }else{ char *zToken = pOrig->u.zToken; + assert( zToken!=0 ); pOrig->u.zToken = 0; pDup = sqlite3ExprDup(db, pOrig, 0); pOrig->u.zToken = zToken; if( pDup==0 ) return; - if( zToken ){ - assert( (pDup->flags & (EP_Reduced|EP_TokenOnly))==0 ); - pDup->flags2 |= EP2_MallocedToken; - pDup->u.zToken = sqlite3DbStrDup(db, zToken); - } + assert( (pDup->flags & (EP_Reduced|EP_TokenOnly))==0 ); + pDup->flags2 |= EP2_MallocedToken; + pDup->u.zToken = sqlite3DbStrDup(db, zToken); } if( pExpr->flags & EP_ExpCollate ){ pDup->pColl = pExpr->pColl; @@ -169,7 +168,9 @@ static int lookupName( if( sqlite3StrICmp(zTabName, zTab)!=0 ) continue; }else{ char *zTabName = pTab->zName; - if( zTabName==0 || sqlite3StrICmp(zTabName, zTab)!=0 ) continue; + if( NEVER(zTabName==0) || sqlite3StrICmp(zTabName, zTab)!=0 ){ + continue; + } if( zDb!=0 && sqlite3StrICmp(db->aDb[iDb].zName, zDb)!=0 ){ continue; } @@ -248,14 +249,12 @@ static int lookupName( cnt++; pExpr->iColumn = iCol==pTab->iPKey ? -1 : (i16)iCol; pExpr->pTab = pTab; - if( iCol>=0 ){ - testcase( iCol==31 ); - testcase( iCol==32 ); - if( iCol>=32 ){ - *piColMask = 0xffffffff; - }else{ - *piColMask |= ((u32)1)<=32 ){ + *piColMask = 0xffffffff; + }else{ + *piColMask |= ((u32)1)<db); /* The database encoding */ + testcase( pExpr->op==TK_CONST_FUNC ); assert( !ExprHasProperty(pExpr, EP_xIsSelect) ); zId = pExpr->u.zToken; nId = sqlite3Strlen30(zId); @@ -542,9 +542,10 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ } #ifndef SQLITE_OMIT_SUBQUERY case TK_SELECT: - case TK_EXISTS: + case TK_EXISTS: testcase( pExpr->op==TK_EXISTS ); #endif case TK_IN: { + testcase( pExpr->op==TK_IN ); if( ExprHasProperty(pExpr, EP_xIsSelect) ){ int nRef = pNC->nRef; #ifndef SQLITE_OMIT_CHECK @@ -593,7 +594,7 @@ static int resolveAsName( UNUSED_PARAMETER(pParse); - if( pE->op==TK_ID || (pE->op==TK_STRING && pE->u.zToken[0]!='\'') ){ + if( pE->op==TK_ID ){ char *zCol = pE->u.zToken; for(i=0; inExpr; i++){ char *zAs = pEList->a[i].zName; @@ -729,7 +730,7 @@ static int resolveCompoundOrderBy( if( pItem->done ) continue; pE = pItem->pExpr; if( sqlite3ExprIsInteger(pE, &iCol) ){ - if( iCol<0 || iCol>pEList->nExpr ){ + if( iCol<=0 || iCol>pEList->nExpr ){ resolveOutOfRangeError(pParse, "ORDER", i+1, pEList->nExpr); return 1; } @@ -743,9 +744,6 @@ static int resolveCompoundOrderBy( } sqlite3ExprDelete(db, pDup); } - if( iCol<0 ){ - return 1; - } } if( iCol>0 ){ CollSeq *pColl = pE->pColl; @@ -852,9 +850,6 @@ static int resolveOrderGroupBy( for(i=0, pItem=pOrderBy->a; inExpr; i++, pItem++){ Expr *pE = pItem->pExpr; iCol = resolveAsName(pParse, pSelect->pEList, pE); - if( iCol<0 ){ - return 1; /* OOM error */ - } if( iCol>0 ){ /* If an AS-name match is found, mark this ORDER BY column as being ** a copy of the iCol-th result-set column. The subsequent call to