Fix the DROP TABLE command so that it cannot be used to bypass foreign key constraints (if foreign key support is enabled).
FossilOrigin-Name: 8353808c9e70412fdee31bfda7810e948f1c7485
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 60414f7..2ae1ec8 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -2122,6 +2122,7 @@
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 */
+ u8 disableTriggers; /* True to disable triggers */
/* Above is constant between recursions. Below is reset before and after
** each recursion */
@@ -2949,15 +2950,17 @@
*/
#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
void sqlite3FkCheck(Parse*, Table*, ExprList*, int, int);
+ void sqlite3FkDropTable(Parse*, SrcList *, Table*);
void sqlite3FkActions(Parse*, Table*, ExprList*, int);
int sqlite3FkRequired(Parse*, Table*, ExprList*);
u32 sqlite3FkOldmask(Parse*, Table*, ExprList*);
FKey *sqlite3FkReferences(Table *);
#else
- #define sqlite3FkCheck(a,b,c,d,e)
#define sqlite3FkActions(a,b,c,d)
- #define sqlite3FkRequired(a,b,c) 0
+ #define sqlite3FkCheck(a,b,c,d,e)
+ #define sqlite3FkDropTable(a,b,c)
#define sqlite3FkOldmask(a,b,c) 0
+ #define sqlite3FkRequired(a,b,c) 0
#endif
#ifndef SQLITE_OMIT_FOREIGN_KEY
void sqlite3FkDelete(Table*);