diff options
author | dan <dan@noemail.net> | 2018-08-21 08:29:48 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-08-21 08:29:48 +0000 |
commit | d145e5f46fe94e57fd4f875225e942cfa976c73c (patch) | |
tree | 88024b8fc5fddf34ccdd575ab61e944e4d8b4c00 /src | |
parent | b013738b4c9a6e5598a4d9bdbc6b2629ddd9628d (diff) | |
download | sqlite-d145e5f46fe94e57fd4f875225e942cfa976c73c.tar.gz sqlite-d145e5f46fe94e57fd4f875225e942cfa976c73c.zip |
Minor changes to function tokenExpr() in order to claw back cycles lost to the
rename-column change.
FossilOrigin-Name: 479976955ecb27c3e77a280187eaf23722178549e072b34f3183354a27a4e5c3
Diffstat (limited to 'src')
-rw-r--r-- | src/alter.c | 3 | ||||
-rw-r--r-- | src/parse.y | 16 | ||||
-rw-r--r-- | src/sqliteInt.h | 2 |
3 files changed, 17 insertions, 4 deletions
diff --git a/src/alter.c b/src/alter.c index b4723d21d..87935aac6 100644 --- a/src/alter.c +++ b/src/alter.c @@ -939,7 +939,7 @@ struct RenameCtx { ** Add a new RenameToken object mapping parse tree element pPtr into ** token *pToken to the Parse object currently under construction. */ -void sqlite3RenameToken(Parse *pParse, void *pPtr, Token *pToken){ +void *sqlite3RenameToken(Parse *pParse, void *pPtr, Token *pToken){ RenameToken *pNew; pNew = sqlite3DbMallocZero(pParse->db, sizeof(RenameToken)); if( pNew ){ @@ -948,6 +948,7 @@ void sqlite3RenameToken(Parse *pParse, void *pPtr, Token *pToken){ pNew->pNext = pParse->pRename; pParse->pRename = pNew; } + return pPtr; } /* diff --git a/src/parse.y b/src/parse.y index 50bbd0207..7362a0c45 100644 --- a/src/parse.y +++ b/src/parse.y @@ -929,10 +929,19 @@ idlist(A) ::= nm(Y). static Expr *tokenExpr(Parse *pParse, int op, Token t){ Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1); if( p ){ - memset(p, 0, sizeof(Expr)); + /* memset(p, 0, sizeof(Expr)); */ p->op = (u8)op; + p->affinity = 0; p->flags = EP_Leaf; p->iAgg = -1; + p->pLeft = p->pRight = 0; + p->x.pList = 0; + p->pAggInfo = 0; + p->pTab = 0; + p->op2 = 0; +#ifndef SQLITE_OMIT_WINDOWFUNC + p->pWin = 0; +#endif p->u.zToken = (char*)&p[1]; memcpy(p->u.zToken, t.z, t.n); p->u.zToken[t.n] = 0; @@ -940,13 +949,16 @@ idlist(A) ::= nm(Y). if( p->u.zToken[0]=='"' ) p->flags |= EP_DblQuoted; sqlite3Dequote(p->u.zToken); } - if( IN_RENAME_COLUMN ) sqlite3RenameToken(pParse, (void*)p, &t); #if SQLITE_MAX_EXPR_DEPTH>0 p->nHeight = 1; #endif + if( IN_RENAME_COLUMN ){ + return (Expr*)sqlite3RenameToken(pParse, (void*)p, &t); + } } return p; } + } expr(A) ::= term(A). diff --git a/src/sqliteInt.h b/src/sqliteInt.h index b74ced549..4902d56d2 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -4236,7 +4236,7 @@ int sqlite3ResolveOrderGroupBy(Parse*, Select*, ExprList*, const char*); void sqlite3ColumnDefault(Vdbe *, Table *, int, int); void sqlite3AlterFinishAddColumn(Parse *, Token *); void sqlite3AlterBeginAddColumn(Parse *, SrcList *); -void sqlite3RenameToken(Parse*, void*, Token*); +void *sqlite3RenameToken(Parse*, void*, Token*); void sqlite3MoveRenameToken(Parse*, void *pTo, void *pFrom); CollSeq *sqlite3GetCollSeq(Parse*, u8, CollSeq *, const char*); char sqlite3AffinityType(const char*, Column*); |