diff options
author | dan <dan@noemail.net> | 2009-09-08 19:15:01 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2009-09-08 19:15:01 +0000 |
commit | e0af83aca632cb406a40e5de08347e3af8b1b460 (patch) | |
tree | 4a0fef58a5dc4908677876540c1e191c0f816cff /src/expr.c | |
parent | 2283d46cd6d53b4d96d0fe9bd907207c6543de86 (diff) | |
download | sqlite-e0af83aca632cb406a40e5de08347e3af8b1b460.tar.gz sqlite-e0af83aca632cb406a40e5de08347e3af8b1b460.zip |
Combine the OP_Statement and OP_Transaction opcodes.
FossilOrigin-Name: aec9dbd8d21c55c3945287a3dfa55d3ed168f977
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/expr.c b/src/expr.c index 75ff04bce..50b24de41 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2692,20 +2692,27 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ } #ifndef SQLITE_OMIT_TRIGGER case TK_RAISE: { - int vrc; - if( !pParse->pTriggerTab ){ - sqlite3ErrorMsg(pParse, - "RAISE() may only be used within a trigger-program"); - return 0; - } assert( pExpr->affinity==OE_Rollback || pExpr->affinity==OE_Abort || pExpr->affinity==OE_Fail || pExpr->affinity==OE_Ignore ); + if( !pParse->pTriggerTab ){ + sqlite3ErrorMsg(pParse, + "RAISE() may only be used within a trigger-program"); + return 0; + } + if( pExpr->affinity==OE_Abort ){ + sqlite3MayAbort(pParse); + } assert( !ExprHasProperty(pExpr, EP_IntValue) ); - vrc = (pExpr->affinity==OE_Ignore ? SQLITE_OK : SQLITE_CONSTRAINT); - sqlite3VdbeAddOp4(v, OP_Halt, vrc, pExpr->affinity, 0, pExpr->u.zToken,0); + if( pExpr->affinity==OE_Ignore ){ + sqlite3VdbeAddOp4( + v, OP_Halt, SQLITE_OK, OE_Ignore, 0, pExpr->u.zToken,0); + }else{ + sqlite3HaltConstraint(pParse, pExpr->affinity, pExpr->u.zToken, 0); + } + break; } #endif |