aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2020-01-07 19:45:40 +0000
committerdrh <drh@noemail.net>2020-01-07 19:45:40 +0000
commit2b1c2aad9f45a21e04d3420152779386b6cf7d33 (patch)
tree1a1df932219cf9ffcc8aafd31aed443f0b661b47 /src
parent3f68142b820d10f3b0b4b9df65e789f4058eb67d (diff)
downloadsqlite-2b1c2aad9f45a21e04d3420152779386b6cf7d33.tar.gz
sqlite-2b1c2aad9f45a21e04d3420152779386b6cf7d33.zip
Create the "trusted_schema" pragma. Add sqlite3_vtab_config() calls to set
the risk rank for many virtual tables. FossilOrigin-Name: 4c21373c21c9b17b222ae65297a039a035e6ec6b505c00c33704e3c03f94f834
Diffstat (limited to 'src')
-rw-r--r--src/dbpage.c1
-rw-r--r--src/dbstat.c1
-rw-r--r--src/pragma.c2
-rw-r--r--src/pragma.h9
4 files changed, 11 insertions, 2 deletions
diff --git a/src/dbpage.c b/src/dbpage.c
index 27c962d14..c4f0b539e 100644
--- a/src/dbpage.c
+++ b/src/dbpage.c
@@ -73,6 +73,7 @@ static int dbpageConnect(
DbpageTable *pTab = 0;
int rc = SQLITE_OK;
+ sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY);
rc = sqlite3_declare_vtab(db,
"CREATE TABLE x(pgno INTEGER PRIMARY KEY, data BLOB, schema HIDDEN)");
if( rc==SQLITE_OK ){
diff --git a/src/dbstat.c b/src/dbstat.c
index d0ce82e8c..2fea48ce8 100644
--- a/src/dbstat.c
+++ b/src/dbstat.c
@@ -167,6 +167,7 @@ static int statConnect(
}else{
iDb = 0;
}
+ sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY);
rc = sqlite3_declare_vtab(db, zDbstatSchema);
if( rc==SQLITE_OK ){
pTab = (StatTable *)sqlite3_malloc64(sizeof(StatTable));
diff --git a/src/pragma.c b/src/pragma.c
index 2c127ed5a..f577fd2b5 100644
--- a/src/pragma.c
+++ b/src/pragma.c
@@ -1107,7 +1107,7 @@ void sqlite3Pragma(
#endif
if( sqlite3GetBoolean(zRight, 0) ){
- db->flags |= mask;
+ db->flags |= (mask & ~(SQLITE_TrustedSchema));
}else{
db->flags &= ~mask;
if( mask==SQLITE_DeferFKs ) db->nDeferredImmCons = 0;
diff --git a/src/pragma.h b/src/pragma.h
index 449180ba1..3edf5c1c3 100644
--- a/src/pragma.h
+++ b/src/pragma.h
@@ -617,6 +617,13 @@ static const PragmaName aPragmaName[] = {
/* ePragFlg: */ PragFlg_Result0,
/* ColNames: */ 0, 0,
/* iArg: */ 0 },
+#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
+ {/* zName: */ "trusted_schema",
+ /* ePragTyp: */ PragTyp_FLAG,
+ /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1,
+ /* ColNames: */ 0, 0,
+ /* iArg: */ SQLITE_TrustedSchema },
+#endif
#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
{/* zName: */ "user_version",
/* ePragTyp: */ PragTyp_HEADER_VALUE,
@@ -673,4 +680,4 @@ static const PragmaName aPragmaName[] = {
/* iArg: */ SQLITE_WriteSchema|SQLITE_NoSchemaError },
#endif
};
-/* Number of pragmas: 65 on by default, 81 total. */
+/* Number of pragmas: 66 on by default, 82 total. */