diff options
author | drh <drh@noemail.net> | 2015-04-15 14:14:38 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-04-15 14:14:38 +0000 |
commit | ff363ee1217d79e8988a16ef0d72e5ee1729dc48 (patch) | |
tree | ad4bf050eb315f2742224500d564bb8918458bf5 /src/resolve.c | |
parent | df3c171881b4ee77003b9d7e287220c22dbc97a2 (diff) | |
parent | 0d01ec8de83b4e0d7523d67c5f92a44f0ba79b8e (diff) | |
download | sqlite-ff363ee1217d79e8988a16ef0d72e5ee1729dc48.tar.gz sqlite-ff363ee1217d79e8988a16ef0d72e5ee1729dc48.zip |
Merge all recent trunk fixes and enhancements into the sessions branch.
FossilOrigin-Name: e65e65f9bc9b4bf5c9dd6e3a77a0d5f03c40e006
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/resolve.c b/src/resolve.c index a7b14cd00..6294ba26e 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -460,6 +460,7 @@ static int lookupName( if( cnt==0 && zTab==0 && ExprHasProperty(pExpr,EP_DblQuoted) ){ pExpr->op = TK_STRING; pExpr->pTab = 0; + pExpr->iTable = -1; return WRC_Prune; } @@ -993,9 +994,11 @@ static int resolveCompoundOrderBy( if( pItem->pExpr==pE ){ pItem->pExpr = pNew; }else{ - assert( pItem->pExpr->op==TK_COLLATE ); - assert( pItem->pExpr->pLeft==pE ); - pItem->pExpr->pLeft = pNew; + Expr *pParent = pItem->pExpr; + assert( pParent->op==TK_COLLATE ); + while( pParent->pLeft->op==TK_COLLATE ) pParent = pParent->pLeft; + assert( pParent->pLeft==pE ); + pParent->pLeft = pNew; } sqlite3ExprDelete(db, pE); pItem->u.x.iOrderByCol = (u16)iCol; @@ -1195,7 +1198,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ ** after the names have been resolved. */ if( p->selFlags & SF_Converted ){ Select *pSub = p->pSrc->a[0].pSelect; - assert( p->pSrc->nSrc==1 && isCompound==0 && p->pOrderBy ); + assert( p->pSrc->nSrc==1 && p->pOrderBy ); assert( pSub->pPrior && pSub->pOrderBy==0 ); pSub->pOrderBy = p->pOrderBy; p->pOrderBy = 0; |