mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-14 00:22:38 +03:00
Minor changes to function tokenExpr() in order to claw back cycles lost to the
rename-column change. FossilOrigin-Name: 479976955ecb27c3e77a280187eaf23722178549e072b34f3183354a27a4e5c3
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
16
src/parse.y
16
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).
|
||||
|
||||
@@ -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*);
|
||||
|
||||
Reference in New Issue
Block a user