408 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			408 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html><head>
 | 
						|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | 
						|
<link href="../sqlite.css" rel="stylesheet">
 | 
						|
<title>Database Connection Configuration Options</title>
 | 
						|
<!-- path=../ -->
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div class=nosearch>
 | 
						|
<a href="../index.html">
 | 
						|
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite" border="0">
 | 
						|
</a>
 | 
						|
<div><!-- IE hack to prevent disappearing logo --></div>
 | 
						|
<div class="tagline desktoponly">
 | 
						|
Small. Fast. Reliable.<br>Choose any three.
 | 
						|
</div>
 | 
						|
<div class="menu mainmenu">
 | 
						|
<ul>
 | 
						|
<li><a href="../index.html">Home</a>
 | 
						|
<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
 | 
						|
<li class='wideonly'><a href='../about.html'>About</a>
 | 
						|
<li class='desktoponly'><a href="../docs.html">Documentation</a>
 | 
						|
<li class='desktoponly'><a href="../download.html">Download</a>
 | 
						|
<li class='wideonly'><a href='../copyright.html'>License</a>
 | 
						|
<li class='desktoponly'><a href="../support.html">Support</a>
 | 
						|
<li class='desktoponly'><a href="../prosupport.html">Purchase</a>
 | 
						|
<li class='search' id='search_menubutton'>
 | 
						|
<a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
<div class="menu submenu" id="submenu">
 | 
						|
<ul>
 | 
						|
<li><a href='../about.html'>About</a>
 | 
						|
<li><a href='../docs.html'>Documentation</a>
 | 
						|
<li><a href='../download.html'>Download</a>
 | 
						|
<li><a href='../support.html'>Support</a>
 | 
						|
<li><a href='../prosupport.html'>Purchase</a>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
<div class="searchmenu" id="searchmenu">
 | 
						|
<form method="GET" action="../search">
 | 
						|
<select name="s" id="searchtype">
 | 
						|
<option value="d">Search Documentation</option>
 | 
						|
<option value="c">Search Changelog</option>
 | 
						|
</select>
 | 
						|
<input type="text" name="q" id="searchbox" value="">
 | 
						|
<input type="submit" value="Go">
 | 
						|
</form>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
<script>
 | 
						|
function toggle_div(nm) {
 | 
						|
var w = document.getElementById(nm);
 | 
						|
if( w.style.display=="block" ){
 | 
						|
w.style.display = "none";
 | 
						|
}else{
 | 
						|
w.style.display = "block";
 | 
						|
}
 | 
						|
}
 | 
						|
function toggle_search() {
 | 
						|
var w = document.getElementById("searchmenu");
 | 
						|
if( w.style.display=="block" ){
 | 
						|
w.style.display = "none";
 | 
						|
} else {
 | 
						|
w.style.display = "block";
 | 
						|
setTimeout(function(){
 | 
						|
document.getElementById("searchbox").focus()
 | 
						|
}, 30);
 | 
						|
}
 | 
						|
}
 | 
						|
function div_off(nm){document.getElementById(nm).style.display="none";}
 | 
						|
window.onbeforeunload = function(e){div_off("submenu");}
 | 
						|
/* Disable the Search feature if we are not operating from CGI, since */
 | 
						|
/* Search is accomplished using CGI and will not work without it. */
 | 
						|
if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
 | 
						|
document.getElementById("search_menubutton").style.display = "none";
 | 
						|
}
 | 
						|
/* Used by the Hide/Show button beside syntax diagrams, to toggle the */
 | 
						|
function hideorshow(btn,obj){
 | 
						|
var x = document.getElementById(obj);
 | 
						|
var b = document.getElementById(btn);
 | 
						|
if( x.style.display!='none' ){
 | 
						|
x.style.display = 'none';
 | 
						|
b.innerHTML='show';
 | 
						|
}else{
 | 
						|
x.style.display = '';
 | 
						|
b.innerHTML='hide';
 | 
						|
}
 | 
						|
return false;
 | 
						|
}
 | 
						|
</script>
 | 
						|
</div>
 | 
						|
<!-- keywords: SQLITE_DBCONFIG_DEFENSIVE SQLITE_DBCONFIG_DQS_DDL SQLITE_DBCONFIG_DQS_DML SQLITE_DBCONFIG_ENABLE_FKEY SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION SQLITE_DBCONFIG_ENABLE_QPSG SQLITE_DBCONFIG_ENABLE_TRIGGER SQLITE_DBCONFIG_ENABLE_VIEW SQLITE_DBCONFIG_LEGACY_ALTER_TABLE SQLITE_DBCONFIG_LEGACY_FILE_FORMAT SQLITE_DBCONFIG_LOOKASIDE SQLITE_DBCONFIG_MAINDBNAME SQLITE_DBCONFIG_MAX SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE SQLITE_DBCONFIG_RESET_DATABASE SQLITE_DBCONFIG_TRIGGER_EQP SQLITE_DBCONFIG_TRUSTED_SCHEMA SQLITE_DBCONFIG_WRITABLE_SCHEMA -->
 | 
						|
<div class=nosearch>
 | 
						|
<a href="intro.html"><h2>SQLite C Interface</h2></a>
 | 
						|
<h2>Database Connection Configuration Options</h2>
 | 
						|
</div>
 | 
						|
<blockquote><pre>
 | 
						|
#define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
 | 
						|
#define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
 | 
						|
#define SQLITE_DBCONFIG_ENABLE_FKEY           1002 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_ENABLE_TRIGGER        1003 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 1004 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      1006 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_ENABLE_QPSG           1007 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_TRIGGER_EQP           1008 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_RESET_DATABASE        1009 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_DEFENSIVE             1010 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA       1011 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    1012 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_DQS_DML               1013 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_DQS_DDL               1014 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_ENABLE_VIEW           1015 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    1016 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA        1017 /* int int* */
 | 
						|
#define SQLITE_DBCONFIG_MAX                   1017 /* Largest DBCONFIG */
 | 
						|
</pre></blockquote>
 | 
						|
<p>
 | 
						|
These constants are the available integer configuration options that
 | 
						|
can be passed as the second argument to the <a href="../c3ref/db_config.html">sqlite3_db_config()</a> interface.</p>
 | 
						|
 | 
						|
<p>New configuration options may be added in future releases of SQLite.
 | 
						|
Existing configuration options might be discontinued.  Applications
 | 
						|
should check the return code from <a href="../c3ref/db_config.html">sqlite3_db_config()</a> to make sure that
 | 
						|
the call worked.  The <a href="../c3ref/db_config.html">sqlite3_db_config()</a> interface will return a
 | 
						|
non-zero <a href="../rescode.html">error code</a> if a discontinued or unsupported configuration option
 | 
						|
is invoked.</p>
 | 
						|
 | 
						|
<p><dl>
 | 
						|
<a name="sqlitedbconfiglookaside"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
 | 
						|
<dd> This option takes three additional arguments that determine the
 | 
						|
<a href="../malloc.html#lookaside">lookaside memory allocator</a> configuration for the <a href="../c3ref/sqlite3.html">database connection</a>.
 | 
						|
The first argument (the third parameter to <a href="../c3ref/db_config.html">sqlite3_db_config()</a> is a
 | 
						|
pointer to a memory buffer to use for lookaside memory.
 | 
						|
The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
 | 
						|
may be NULL in which case SQLite will allocate the
 | 
						|
lookaside buffer itself using <a href="../c3ref/free.html">sqlite3_malloc()</a>. The second argument is the
 | 
						|
size of each lookaside buffer slot.  The third argument is the number of
 | 
						|
slots.  The size of the buffer in the first argument must be greater than
 | 
						|
or equal to the product of the second and third arguments.  The buffer
 | 
						|
must be aligned to an 8-byte boundary.  If the second argument to
 | 
						|
SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally
 | 
						|
rounded down to the next smaller multiple of 8.  The lookaside memory
 | 
						|
configuration for a database connection can only be changed when that
 | 
						|
connection is not currently using lookaside memory, or in other words
 | 
						|
when the "current value" returned by
 | 
						|
<a href="../c3ref/db_status.html">sqlite3_db_status</a>(D,<a href="../c3ref/c_config_covering_index_scan.html#sqliteconfiglookaside">SQLITE_CONFIG_LOOKASIDE</a>,...) is zero.
 | 
						|
Any attempt to change the lookaside memory configuration when lookaside
 | 
						|
memory is in use leaves the configuration unchanged and returns
 | 
						|
<a href="../rescode.html#busy">SQLITE_BUSY</a>.</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigenablefkey"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
 | 
						|
<dd> This option is used to enable or disable the enforcement of
 | 
						|
<a href="../foreignkeys.html">foreign key constraints</a>.  There should be two additional arguments.
 | 
						|
The first argument is an integer which is 0 to disable FK enforcement,
 | 
						|
positive to enable FK enforcement or negative to leave FK enforcement
 | 
						|
unchanged.  The second parameter is a pointer to an integer into which
 | 
						|
is written 0 or 1 to indicate whether FK enforcement is off or on
 | 
						|
following this call.  The second parameter may be a NULL pointer, in
 | 
						|
which case the FK enforcement setting is not reported back. </dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigenabletrigger"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
 | 
						|
<dd> This option is used to enable or disable <a href="../lang_createtrigger.html">triggers</a>.
 | 
						|
There should be two additional arguments.
 | 
						|
The first argument is an integer which is 0 to disable triggers,
 | 
						|
positive to enable triggers or negative to leave the setting unchanged.
 | 
						|
The second parameter is a pointer to an integer into which
 | 
						|
is written 0 or 1 to indicate whether triggers are disabled or enabled
 | 
						|
following this call.  The second parameter may be a NULL pointer, in
 | 
						|
which case the trigger setting is not reported back. </dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigenableview"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
 | 
						|
<dd> This option is used to enable or disable <a href="../lang_createview.html">views</a>.
 | 
						|
There should be two additional arguments.
 | 
						|
The first argument is an integer which is 0 to disable views,
 | 
						|
positive to enable views or negative to leave the setting unchanged.
 | 
						|
The second parameter is a pointer to an integer into which
 | 
						|
is written 0 or 1 to indicate whether views are disabled or enabled
 | 
						|
following this call.  The second parameter may be a NULL pointer, in
 | 
						|
which case the view setting is not reported back. </dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigenablefts3tokenizer"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
 | 
						|
<dd> This option is used to enable or disable the
 | 
						|
<a href="../fts3.html#f3tknzr">fts3_tokenizer()</a> function which is part of the
 | 
						|
<a href="../fts3.html">FTS3</a> full-text search engine extension.
 | 
						|
There should be two additional arguments.
 | 
						|
The first argument is an integer which is 0 to disable fts3_tokenizer() or
 | 
						|
positive to enable fts3_tokenizer() or negative to leave the setting
 | 
						|
unchanged.
 | 
						|
The second parameter is a pointer to an integer into which
 | 
						|
is written 0 or 1 to indicate whether fts3_tokenizer is disabled or enabled
 | 
						|
following this call.  The second parameter may be a NULL pointer, in
 | 
						|
which case the new setting is not reported back. </dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigenableloadextension"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION</dt>
 | 
						|
<dd> This option is used to enable or disable the <a href="../c3ref/load_extension.html">sqlite3_load_extension()</a>
 | 
						|
interface independently of the <a href="../lang_corefunc.html#load_extension">load_extension()</a> SQL function.
 | 
						|
The <a href="../c3ref/enable_load_extension.html">sqlite3_enable_load_extension()</a> API enables or disables both the
 | 
						|
C-API <a href="../c3ref/load_extension.html">sqlite3_load_extension()</a> and the SQL function <a href="../lang_corefunc.html#load_extension">load_extension()</a>.
 | 
						|
There should be two additional arguments.
 | 
						|
When the first argument to this interface is 1, then only the C-API is
 | 
						|
enabled and the SQL function remains disabled.  If the first argument to
 | 
						|
this interface is 0, then both the C-API and the SQL function are disabled.
 | 
						|
If the first argument is -1, then no changes are made to state of either the
 | 
						|
C-API or the SQL function.
 | 
						|
The second parameter is a pointer to an integer into which
 | 
						|
is written 0 or 1 to indicate whether <a href="../c3ref/load_extension.html">sqlite3_load_extension()</a> interface
 | 
						|
is disabled or enabled following this call.  The second parameter may
 | 
						|
be a NULL pointer, in which case the new setting is not reported back.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigmaindbname"></a>
 | 
						|
 <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
 | 
						|
<dd> This option is used to change the name of the "main" database
 | 
						|
schema.  The sole argument is a pointer to a constant UTF8 string
 | 
						|
which will become the new schema name in place of "main".  SQLite
 | 
						|
does not make a copy of the new main schema name string, so the application
 | 
						|
must ensure that the argument passed into this DBCONFIG option is unchanged
 | 
						|
until after the database connection closes.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfignockptonclose"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE</dt>
 | 
						|
<dd> Usually, when a database in wal mode is closed or detached from a
 | 
						|
database handle, SQLite checks if this will mean that there are now no
 | 
						|
connections at all to the database. If so, it performs a checkpoint
 | 
						|
operation before closing the connection. This option may be used to
 | 
						|
override this behaviour. The first parameter passed to this operation
 | 
						|
is an integer - positive to disable checkpoints-on-close, or zero (the
 | 
						|
default) to enable them, and negative to leave the setting unchanged.
 | 
						|
The second parameter is a pointer to an integer
 | 
						|
into which is written 0 or 1 to indicate whether checkpoints-on-close
 | 
						|
have been disabled - 0 if they are not disabled, 1 if they are.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigenableqpsg"></a>
 | 
						|
 <dt>SQLITE_DBCONFIG_ENABLE_QPSG</dt>
 | 
						|
<dd>The SQLITE_DBCONFIG_ENABLE_QPSG option activates or deactivates
 | 
						|
the <a href="../queryplanner-ng.html#qpstab">query planner stability guarantee</a> (QPSG).  When the QPSG is active,
 | 
						|
a single SQL query statement will always use the same algorithm regardless
 | 
						|
of values of <a href="../lang_expr.html#varparam">bound parameters</a>. The QPSG disables some query optimizations
 | 
						|
that look at the values of bound parameters, which can make some queries
 | 
						|
slower.  But the QPSG has the advantage of more predictable behavior.  With
 | 
						|
the QPSG active, SQLite will always use the same query plan in the field as
 | 
						|
was used during testing in the lab.
 | 
						|
The first argument to this setting is an integer which is 0 to disable
 | 
						|
the QPSG, positive to enable QPSG, or negative to leave the setting
 | 
						|
unchanged. The second parameter is a pointer to an integer into which
 | 
						|
is written 0 or 1 to indicate whether the QPSG is disabled or enabled
 | 
						|
following this call.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigtriggereqp"></a>
 | 
						|
 <dt>SQLITE_DBCONFIG_TRIGGER_EQP</dt>
 | 
						|
<dd> By default, the output of EXPLAIN QUERY PLAN commands does not
 | 
						|
include output for any operations performed by trigger programs. This
 | 
						|
option is used to set or clear (the default) a flag that governs this
 | 
						|
behavior. The first parameter passed to this operation is an integer -
 | 
						|
positive to enable output for trigger programs, or zero to disable it,
 | 
						|
or negative to leave the setting unchanged.
 | 
						|
The second parameter is a pointer to an integer into which is written
 | 
						|
0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
 | 
						|
it is not disabled, 1 if it is.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigresetdatabase"></a>
 | 
						|
 <dt>SQLITE_DBCONFIG_RESET_DATABASE</dt>
 | 
						|
<dd> Set the SQLITE_DBCONFIG_RESET_DATABASE flag and then run
 | 
						|
<a href="../lang_vacuum.html">VACUUM</a> in order to reset a database back to an empty database
 | 
						|
with no schema and no content. The following process works even for
 | 
						|
a badly corrupted database file:
 | 
						|
<ol>
 | 
						|
<li> If the database connection is newly opened, make sure it has read the
 | 
						|
database schema by preparing then discarding some query against the
 | 
						|
database, or calling sqlite3_table_column_metadata(), ignoring any
 | 
						|
errors.  This step is only necessary if the application desires to keep
 | 
						|
the database in WAL mode after the reset if it was in WAL mode before
 | 
						|
the reset.
 | 
						|
<li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0);
 | 
						|
<li> <a href="../c3ref/exec.html">sqlite3_exec</a>(db, "<a href="../lang_vacuum.html">VACUUM</a>", 0, 0, 0);
 | 
						|
<li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
 | 
						|
</ol>
 | 
						|
Because resetting a database is destructive and irreversible, the
 | 
						|
process requires the use of this obscure API and multiple steps to help
 | 
						|
ensure that it does not happen by accident.</p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigdefensive"></a>
 | 
						|
 <dt>SQLITE_DBCONFIG_DEFENSIVE</dt>
 | 
						|
<dd>The SQLITE_DBCONFIG_DEFENSIVE option activates or deactivates the
 | 
						|
"defensive" flag for a database connection.  When the defensive
 | 
						|
flag is enabled, language features that allow ordinary SQL to
 | 
						|
deliberately corrupt the database file are disabled.  The disabled
 | 
						|
features include but are not limited to the following:
 | 
						|
<ul>
 | 
						|
<li> The <a href="../pragma.html#pragma_writable_schema">PRAGMA writable_schema=ON</a> statement.
 | 
						|
<li> The <a href="../pragma.html#pragma_journal_mode">PRAGMA journal_mode=OFF</a> statement.
 | 
						|
<li> Writes to the <a href="../dbpage.html">sqlite_dbpage</a> virtual table.
 | 
						|
<li> Direct writes to <a href="../vtab.html#xshadowname">shadow tables</a>.
 | 
						|
</ul>
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigwritableschema"></a>
 | 
						|
 <dt>SQLITE_DBCONFIG_WRITABLE_SCHEMA</dt>
 | 
						|
<dd>The SQLITE_DBCONFIG_WRITABLE_SCHEMA option activates or deactivates the
 | 
						|
"writable_schema" flag. This has the same effect and is logically equivalent
 | 
						|
to setting <a href="../pragma.html#pragma_writable_schema">PRAGMA writable_schema=ON</a> or <a href="../pragma.html#pragma_writable_schema">PRAGMA writable_schema=OFF</a>.
 | 
						|
The first argument to this setting is an integer which is 0 to disable
 | 
						|
the writable_schema, positive to enable writable_schema, or negative to
 | 
						|
leave the setting unchanged. The second parameter is a pointer to an
 | 
						|
integer into which is written 0 or 1 to indicate whether the writable_schema
 | 
						|
is enabled or disabled following this call.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfiglegacyaltertable"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_LEGACY_ALTER_TABLE</dt>
 | 
						|
<dd>The SQLITE_DBCONFIG_LEGACY_ALTER_TABLE option activates or deactivates
 | 
						|
the legacy behavior of the <a href="../lang_altertable.html#altertabrename">ALTER TABLE RENAME</a> command such it
 | 
						|
behaves as it did prior to <a href="../releaselog/3_24_0.html">version 3.24.0</a> (2018-06-04).  See the
 | 
						|
"Compatibility Notice" on the <a href="../lang_altertable.html#altertabrename">ALTER TABLE RENAME documentation</a> for
 | 
						|
additional information. This feature can also be turned on and off
 | 
						|
using the <a href="../pragma.html#pragma_legacy_alter_table">PRAGMA legacy_alter_table</a> statement.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigdqsdml"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_DQS_DML</td>
 | 
						|
<dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates
 | 
						|
the legacy <a href="../quirks.html#dblquote">double-quoted string literal</a> misfeature for DML statements
 | 
						|
only, that is DELETE, INSERT, SELECT, and UPDATE statements. The
 | 
						|
default value of this setting is determined by the <a href="../compile.html#dqs">-DSQLITE_DQS</a>
 | 
						|
compile-time option.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigdqsddl"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_DQS_DDL</td>
 | 
						|
<dd>The SQLITE_DBCONFIG_DQS option activates or deactivates
 | 
						|
the legacy <a href="../quirks.html#dblquote">double-quoted string literal</a> misfeature for DDL statements,
 | 
						|
such as CREATE TABLE and CREATE INDEX. The
 | 
						|
default value of this setting is determined by the <a href="../compile.html#dqs">-DSQLITE_DQS</a>
 | 
						|
compile-time option.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfigtrustedschema"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</td>
 | 
						|
<dd>The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to
 | 
						|
assume that database schemas are untainted by malicious content.
 | 
						|
When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite
 | 
						|
takes additional defensive steps to protect the application from harm
 | 
						|
including:
 | 
						|
<ul>
 | 
						|
<li> Prohibit the use of SQL functions inside triggers, views,
 | 
						|
CHECK constraints, DEFAULT clauses, expression indexes,
 | 
						|
partial indexes, or generated columns
 | 
						|
unless those functions are tagged with <a href="../c3ref/c_deterministic.html#sqliteinnocuous">SQLITE_INNOCUOUS</a>.
 | 
						|
<li> Prohibit the use of virtual tables inside of triggers or views
 | 
						|
unless those virtual tables are tagged with <a href="../c3ref/c_vtab_constraint_support.html#sqlitevtabinnocuous">SQLITE_VTAB_INNOCUOUS</a>.
 | 
						|
</ul>
 | 
						|
This setting defaults to "on" for legacy compatibility, however
 | 
						|
all applications are advised to turn it off if possible. This setting
 | 
						|
can also be controlled using the <a href="../pragma.html#pragma_trusted_schema">PRAGMA trusted_schema</a> statement.
 | 
						|
</dd></p>
 | 
						|
 | 
						|
<p><a name="sqlitedbconfiglegacyfileformat"></a>
 | 
						|
 | 
						|
<dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</td>
 | 
						|
<dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
 | 
						|
the legacy file format flag.  When activated, this flag causes all newly
 | 
						|
created database file to have a schema format version number (the 4-byte
 | 
						|
integer found at offset 44 into the database header) of 1.  This in turn
 | 
						|
means that the resulting database file will be readable and writable by
 | 
						|
any SQLite version back to 3.0.0 (2004-06-18).  Without this setting,
 | 
						|
newly created databases are generally not understandable by SQLite versions
 | 
						|
prior to 3.3.0 (2006-01-11).  As these words are written, there
 | 
						|
is now scarcely any need to generated database files that are compatible
 | 
						|
all the way back to version 3.0.0, and so this setting is of little
 | 
						|
practical use, but is provided so that SQLite can continue to claim the
 | 
						|
ability to generate new database files that are compatible with  version
 | 
						|
3.0.0.
 | 
						|
<p>Note that when the SQLITE_DBCONFIG_LEGACY_FILE_FORMAT setting is on,
 | 
						|
the <a href="../lang_vacuum.html">VACUUM</a> command will fail with an obscure error when attempting to
 | 
						|
process a table with generated columns and a descending index.  This is
 | 
						|
not considered a bug since SQLite versions 3.3.0 and earlier do not support
 | 
						|
either generated columns or decending indexes.
 | 
						|
</dd>
 | 
						|
</dl>
 | 
						|
</p><p>See also lists of
 | 
						|
  <a href="objlist.html">Objects</a>,
 | 
						|
  <a href="constlist.html">Constants</a>, and
 | 
						|
  <a href="funclist.html">Functions</a>.</p>
 |