aboutsummaryrefslogtreecommitdiff
path: root/src/sqliteInt.h
diff options
context:
space:
mode:
authordrh <>2021-01-29 19:32:17 +0000
committerdrh <>2021-01-29 19:32:17 +0000
commitb83524795427e9ad8131fe9827e397f973b37932 (patch)
treeb11f546c7b283c9cc68e9408b6645a877e2bd8a6 /src/sqliteInt.h
parent2c99b84c955e3d19dbb305a6ac60bac654e4952b (diff)
downloadsqlite-b83524795427e9ad8131fe9827e397f973b37932.tar.gz
sqlite-b83524795427e9ad8131fe9827e397f973b37932.zip
Working prototype.
FossilOrigin-Name: b7ef4dc21f187ff4ff679e823782535188c3814aa6ce720b3a01c6d3ba4ef9f5
Diffstat (limited to 'src/sqliteInt.h')
-rw-r--r--src/sqliteInt.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index c66b44290..231ead506 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -1159,6 +1159,7 @@ typedef struct ParseCleanup ParseCleanup;
typedef struct PreUpdate PreUpdate;
typedef struct PrintfArguments PrintfArguments;
typedef struct RenameToken RenameToken;
+typedef struct Returning Returning;
typedef struct RowSet RowSet;
typedef struct Savepoint Savepoint;
typedef struct Select Select;
@@ -3429,6 +3430,7 @@ struct Parse {
u32 oldmask; /* Mask of old.* columns referenced */
u32 newmask; /* Mask of new.* columns referenced */
u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */
+ u8 bReturning; /* Coding a RETURNING trigger */
u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */
u8 disableTriggers; /* True to disable triggers */
@@ -3441,7 +3443,6 @@ struct Parse {
int aTempReg[8]; /* Holding area for temporary registers */
Token sNameToken; /* Token with unqualified schema object name */
- ExprList *pReturning; /* The RETURNING clause, if any */
/************************************************************************
** Above is constant between recursions. Below is reset before and after
@@ -3579,6 +3580,7 @@ struct Trigger {
char *table; /* The table or view to which the trigger applies */
u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */
u8 tr_tm; /* One of TRIGGER_BEFORE, TRIGGER_AFTER */
+ u8 bReturning; /* This trigger implements a RETURNING clause */
Expr *pWhen; /* The WHEN clause of the expression (may be NULL) */
IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger,
the <column-list> is stored here */
@@ -3639,6 +3641,7 @@ struct Trigger {
struct TriggerStep {
u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT, TK_SELECT */
u8 orconf; /* OE_Rollback etc. */
+ u8 eTrigDest; /* SRT_ destination value for SELECT */
Trigger *pTrig; /* The trigger that this step is a part of */
Select *pSelect; /* SELECT statement or RHS of INSERT INTO SELECT ... */
char *zTarget; /* Target table for DELETE, UPDATE, INSERT */
@@ -3653,6 +3656,18 @@ struct TriggerStep {
};
/*
+** Information about a RETURNING clause
+*/
+struct Returning {
+ Parse *pParse; /* The parse that includes the RETURNING clause */
+ ExprList *pReturnEL; /* List of expressions to return */
+ Trigger retTrig; /* The transient trigger that implements RETURNING */
+ TriggerStep retTStep; /* The trigger step */
+ Select retSel; /* The SELECT statement that implements RETURNING */
+ u64 retSrcList; /* The empty FROM clause of the SELECT */
+};
+
+/*
** An objected used to accumulate the text of a string where we
** do not necessarily know how big the string will be in the end.
*/