diff options
Diffstat (limited to 'src/sqliteInt.h')
-rw-r--r-- | src/sqliteInt.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h index c394e4aa0..9efb02397 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -2029,6 +2029,10 @@ struct AutoincInfo { ** TriggerPrg.orconf, is stored in the TriggerPrg.pProgram variable. ** The Parse.pTriggerPrg list never contains two entries with the same ** values for both pTrigger and orconf. +** +** The TriggerPrg.oldmask variable is set to a mask of old.* columns +** accessed (or set to 0 for triggers fired as a result of INSERT +** statements). */ struct TriggerPrg { Trigger *pTrigger; /* Trigger this program was coded from */ @@ -2098,15 +2102,14 @@ struct Parse { int regRowid; /* Register holding rowid of CREATE TABLE entry */ int regRoot; /* Register holding root page number for new objects */ AutoincInfo *pAinc; /* Information about AUTOINCREMENT counters */ + int nMaxArg; /* Max args passed to user function by sub-program */ /* Information used while coding trigger programs. */ - Parse *pRoot; /* Root Parse structure */ + Parse *pToplevel; /* Parse structure for main program (or NULL) */ Table *pTriggerTab; /* Table triggers are being coded for */ - u32 oldmask; - u32 newmask; - int triggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */ - int nArg; - int orconf; /* Default ON CONFLICT policy for trigger steps */ + u32 oldmask; /* Mask of old.* columns referenced */ + u8 eTriggerOp; /* TK_UPDATE, TK_INSERT or TK_DELETE */ + u8 eOrconf; /* Default ON CONFLICT policy for trigger steps */ /* Above is constant between recursions. Below is reset before and after ** each recursion */ @@ -2692,6 +2695,7 @@ void sqlite3MaterializeView(Parse*, Table*, Expr*, int); void sqlite3DeleteTrigger(sqlite3*, Trigger*); void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*); u32 sqlite3TriggerOldmask(Parse*,Trigger*,int,ExprList*,Table*,int); +# define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p)) #else # define sqlite3TriggersExist(B,C,D,E,F) 0 # define sqlite3DeleteTrigger(A,B) @@ -2699,6 +2703,7 @@ void sqlite3MaterializeView(Parse*, Table*, Expr*, int); # define sqlite3UnlinkAndDeleteTrigger(A,B,C) # define sqlite3CodeRowTrigger(A,B,C,D,E,F,G,H,I,J) # define sqlite3TriggerList(X, Y) 0 +# define sqlite3ParseToplevel(p) p #endif int sqlite3JoinType(Parse*, Token*, Token*, Token*); |