aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2021-09-29 18:33:26 +0000
committerdan <Dan Kennedy>2021-09-29 18:33:26 +0000
commitab632bc97e8d68d77912b16176a39781fd75a2a8 (patch)
tree86013a43db2fa68790589d2457157b5ab2a3d7fe /src/expr.c
parenteda0001d897fb122478248c81750d9a0a29ebbe8 (diff)
downloadsqlite-ab632bc97e8d68d77912b16176a39781fd75a2a8.tar.gz
sqlite-ab632bc97e8d68d77912b16176a39781fd75a2a8.zip
Fix another problem with ALTER TABLE and vector UPDATE statements within triggers.
FossilOrigin-Name: a0df216f7c3f8963efba0b1ffee65d6a63309d846ffdcf2d2932cb4f1d4967b7
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/expr.c b/src/expr.c
index 3e60cf712..d121fbfd2 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -516,12 +516,16 @@ Expr *sqlite3ExprForVectorField(
pRet->pLeft = pVector;
}
}else{
- if( pVector->op==TK_VECTOR ) pVector = pVector->x.pList->a[iField].pExpr;
- pRet = sqlite3ExprDup(pParse->db, pVector, 0);
- if( pRet && IN_RENAME_OBJECT ){
- SWAP(Expr, *pRet, *pVector);
- sqlite3RenameTokenRemap(pParse, pRet, pVector);
+ if( pVector->op==TK_VECTOR ){
+ Expr **ppVector = &pVector->x.pList->a[iField].pExpr;
+ pVector = *ppVector;
+ if( IN_RENAME_OBJECT ){
+ /* This must be a vector UPDATE inside a trigger */
+ *ppVector = 0;
+ return pVector;
+ }
}
+ pRet = sqlite3ExprDup(pParse->db, pVector, 0);
}
return pRet;
}