aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2009-09-08 19:15:01 +0000
committerdan <dan@noemail.net>2009-09-08 19:15:01 +0000
commite0af83aca632cb406a40e5de08347e3af8b1b460 (patch)
tree4a0fef58a5dc4908677876540c1e191c0f816cff /src/expr.c
parent2283d46cd6d53b4d96d0fe9bd907207c6543de86 (diff)
downloadsqlite-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.c23
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