aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-08-21 08:29:48 +0000
committerdan <dan@noemail.net>2018-08-21 08:29:48 +0000
commitd145e5f46fe94e57fd4f875225e942cfa976c73c (patch)
tree88024b8fc5fddf34ccdd575ab61e944e4d8b4c00 /src
parentb013738b4c9a6e5598a4d9bdbc6b2629ddd9628d (diff)
downloadsqlite-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.c3
-rw-r--r--src/parse.y16
-rw-r--r--src/sqliteInt.h2
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*);