diff options
author | dan <dan@noemail.net> | 2009-08-30 11:42:51 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2009-08-30 11:42:51 +0000 |
commit | 76d462ee7851a3ca27e8075cc540b440a4ed0135 (patch) | |
tree | e61387b14c264a4b97094703d867c600c5c63969 /src/expr.c | |
parent | 165921a7427ef9dd52a398c9ef7edcbd2feffae4 (diff) | |
download | sqlite-76d462ee7851a3ca27e8075cc540b440a4ed0135.tar.gz sqlite-76d462ee7851a3ca27e8075cc540b440a4ed0135.zip |
Fixes for new triggers scheme.
FossilOrigin-Name: 9eb91efda5241609ff18ff15ef5eaa0e86788eab
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/expr.c b/src/expr.c index 62616199c..959bc2229 100644 --- a/src/expr.c +++ b/src/expr.c @@ -90,7 +90,9 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ pColl = p->pColl; if( pColl ) break; op = p->op; - if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_REGISTER) && p->pTab!=0 ){ + if( p->pTab!=0 && ( + op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_REGISTER || op==TK_TRIGGER + )){ /* op==TK_REGISTER && p->pTab!=0 happens when pExpr was originally ** a TK_COLUMN but was previously evaluated and cached in a register */ const char *zColl; @@ -2557,11 +2559,12 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ } case TK_TRIGGER: { - sqlite3VdbeAddOp3(v, OP_TriggerVal, pExpr->iColumn, target,pExpr->iTable); - assert( pExpr->pTab ); - VdbeComment((v, "%s.%s", + int iVal = pExpr->iTable * (pExpr->pTab->nCol+1) + 1 + pExpr->iColumn; + sqlite3VdbeAddOp2(v, OP_Param, iVal, target); + VdbeComment((v, "%s.%s -> $%d", (pExpr->iTable ? "new" : "old"), - (pExpr->iColumn<0 ? "rowid" : pExpr->pTab->aCol[pExpr->iColumn].zName) + (pExpr->iColumn<0 ? "rowid" : pExpr->pTab->aCol[pExpr->iColumn].zName), + target )); break; } |