1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Allow xDestroy methods to execute "DROP TABLE" statements. (CVS 3287)

FossilOrigin-Name: a56bfa560425a5dc9273229f8838471dfc402024
This commit is contained in:
danielk1977
2006-06-23 14:32:08 +00:00
parent b7a2f2e8b7
commit 212b218c88
6 changed files with 53 additions and 38 deletions

View File

@@ -272,6 +272,14 @@ struct Context {
**
** The "sqlite3_stmt" structure pointer that is returned by sqlite3_compile()
** is really a pointer to an instance of this structure.
**
** The Vdbe.inVtabMethod variable is set to non-zero for the duration of
** any virtual table method invocations made by the vdbe program. It is
** set to 2 for xDestroy method calls and 1 for all other methods. This
** variable is used for two purposes: to allow xDestroy methods to execute
** "DROP TABLE" statements and to prevent some nasty side effects of
** malloc failure when SQLite is invoked recursively by a virtual table
** method function.
*/
struct Vdbe {
sqlite3 *db; /* The whole database */
@@ -326,7 +334,7 @@ struct Vdbe {
int lru; /* Counter used for LRU cache replacement */
#endif
#ifndef SQLITE_OMIT_VIRTUALTABLE
int inVtabMethod;
int inVtabMethod; /* See comments above */
#endif
};