aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2015-04-15 14:14:38 +0000
committerdrh <drh@noemail.net>2015-04-15 14:14:38 +0000
commitff363ee1217d79e8988a16ef0d72e5ee1729dc48 (patch)
treead4bf050eb315f2742224500d564bb8918458bf5 /src/resolve.c
parentdf3c171881b4ee77003b9d7e287220c22dbc97a2 (diff)
parent0d01ec8de83b4e0d7523d67c5f92a44f0ba79b8e (diff)
downloadsqlite-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.c11
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;