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>
 |