2 # Run this Tcl script to generate the compile.html file.
4 set rcsid
{$Id: compile.tcl
,v
1.5 2005/03/19 15:10:45 drh Exp
$ }
6 header
{Compilation Options For SQLite
}
9 <h1
>Compilation Options For SQLite
</h1
>
12 For most purposes
, SQLite can be built just fine using the
default
13 compilation
options. However
, if required
, the compile-time
options
14 documented below can be used to
15 <a href
="#omitfeatures">omit SQLite features
</a
> (resulting in
16 a smaller compiled library size
) or to change the
17 <a href
="#defaults">default values
</a
> of some parameters.
20 Every effort has been made to ensure that the various combinations
21 of compilation
options work harmoniously and produce a working library.
22 Nevertheless
, it is strongly recommended that the SQLite test-suite
23 be executed to check
for errors before using an SQLite library built
24 with non-standard compilation
options.
26 <a name
="defaults"></a
>
27 <h2
>Options To Set Default Parameter Values
</h2
>
29 <p
><b
>SQLITE_DEFAULT_AUTOVACUUM
=<i
><
;1 or
0>
;</i
></b
><br
>
30 This macro determines
if SQLite creates databases with the
31 <a href
="pragma.html#pragma_auto_vacuum">auto-vacuum
</a
>
32 flag
set by
default. The
default value is
0 (do not create auto-vacuum
33 databases
). In any case the compile-time
default may be overridden by the
34 "PRAGMA auto_vacuum" command.
37 <p
><b
>SQLITE_DEFAULT_CACHE_SIZE
=<i
><
;pages
>
;</i
></b
><br
>
38 This macro sets the
default size of the page-cache
for each attached
39 database
, in pages. This can be overridden by the
"PRAGMA cache_size"
40 comamnd. The
default value is
2000.
43 <p
><b
>SQLITE_DEFAULT_PAGE_SIZE
=<i
><
;bytes
>
;</i
></b
><br
>
44 This macro is used to
set the
default page-size used when a
45 database is created. The value assigned must be a power of
2. The
46 default value is
1024. The compile-time
default may be overridden at
47 runtime by the
"PRAGMA page_size" command.
50 <p
><b
>SQLITE_DEFAULT_TEMP_CACHE_SIZE
=<i
><
;pages
>
;</i
></b
><br
>
51 This macro sets the
default size of the page-cache
for temporary files
52 created by SQLite to store intermediate results
, in pages. It does
53 not affect the page-cache
for the temp database
, where tables created
54 using
"CREATE TEMP TABLE" are stored. The
default value is
500.
57 <p
><b
>SQLITE_MAX_PAGE_SIZE
=<i
><
;bytes
>
;</i
></b
><br
>
58 This is used to
set the maximum allowable page-size that can
59 be specified by the
"PRAGMA page_size" command. The
default value
63 <a name
="omitfeatures"></a
>
64 <h2
>Options To Omit Features
</h2
>
66 <p
>The following
options are used to reduce the size of the compiled
67 library by omiting optional features. This is probably only useful
68 in embedded systems where space is especially tight
, as even with all
69 features included the SQLite library is relatively small. Don't forget
70 to
tell your compiler to optimize
for binary size
! (the
-Os option if
73 <p
>The macros in this section do not require values. The following
74 compilation switches all have the same effect
:<br
>
75 -DSQLITE_OMIT_ALTERTABLE
<br
>
76 -DSQLITE_OMIT_ALTERTABLE
=1<br
>
77 -DSQLITE_OMIT_ALTERTABLE
=0
80 <p
>If any of these
options are defined
, then the same
set of SQLITE_OMIT_XXX
81 options must also be defined when using the 'lemon' tool to generate a parse.c
82 file. Because of this
, these
options may only used when the library is built
83 from
source, not from the collection of pre-packaged C files provided
for
84 non-UNIX like platforms on the website.
87 <p
><b
>SQLITE_OMIT_ALTERTABLE
</b
><br
>
88 When this
option is defined
, the
89 <a href
="lang_altertable.html">ALTER TABLE
</a
> command is not included in the
90 library. Executing an ALTER TABLE statement causes a parse
error.
93 <p
><b
>SQLITE_OMIT_AUTHORIZATION
</b
><br
>
94 Defining this
option omits the authorization callback feature from the
95 library. The
<a href
="capi3ref.html#sqlite3_set_authorizer">
96 sqlite3_set_authorizer
()</a
> API function is not present in the library.
99 <p
><b
>SQLITE_OMIT_AUTOVACUUM
</b
><br
>
100 If this
option is defined
, the library cannot create or write to
101 databases that support
102 <a href
="pragma.html#pragma_auto_vacuum">auto-vacuum
</a
>. Executing a
103 "PRAGMA auto_vacuum" statement is not an
error, but does not
return a value
104 or modify the auto-vacuum flag in the database
file. If a database that
105 supports auto-vacuum is opened by a library compiled with this
option, it
106 is automatically opened in read-only mode.
109 <p
><b
>SQLITE_OMIT_AUTOINCREMENT
</b
><br
>
110 This
option is used to omit the AUTOINCREMENT functionality. When this
111 is macro is defined
, columns declared as
"INTEGER PRIMARY KEY AUTOINCREMENT"
112 behave in the same way as columns declared as
"INTEGER PRIMARY KEY" when a
113 NULL is inserted. The sqlite_sequence system table is neither created
, nor
114 respected
if it already exists.
116 <p
><i
>TODO
: Need a link here
- AUTOINCREMENT is not yet documented
</i
><p
>
118 <p
><b
>SQLITE_OMIT_BLOB_LITERAL
</b
><br
>
119 When this
option is defined
, it is not possible to specify a blob in
120 an SQL statement using the X'ABCD' syntax.
</p
>
122 #<p>WARNING: The VACUUM command depends on this syntax for vacuuming databases
123 #that contain blobs, so disabling this functionality may render a database
126 #<p><i>TODO: Need a link here - is that syntax documented anywhere?</i><p>
129 <p
><b
>SQLITE_OMIT_COMPLETE
</b
><br
>
130 This
option causes the
<a href
="capi3ref.html#sqlite3_complete">
131 sqlite3_complete
</a
> API to be omitted.
134 <p
><b
>SQLITE_OMIT_COMPOUND_SELECT
</b
><br
>
135 This
option is used to omit the compound SELECT functionality.
136 <a href
="lang_select.html">SELECT statements
</a
> that use the
137 UNION
, UNION ALL
, INTERSECT or EXCEPT compound SELECT operators will
141 <p
><b
>SQLITE_OMIT_CONFLICT_CLAUSE
</b
><br
>
142 In the future
, this
option will be used to omit the
143 <a href
="lang_conflict.html">ON CONFLICT
</a
> clause from the library.
146 <p
><b
>SQLITE_OMIT_DATETIME_FUNCS
</b
><br
>
147 If this
option is defined
, SQLite's built-in date and
time manipulation
148 functions are omitted. Specifically
, the SQL functions julianday
(), date
(),
149 time(), datetime
() and strftime
() are not available. The
default column
150 values CURRENT_TIME
, CURRENT_DATE and CURRENT_DATETIME are still available.
153 <p
><b
>SQLITE_OMIT_EXPLAIN
</b
><br
>
154 Defining this
option causes the EXPLAIN command to be omitted from the
155 library. Attempting to execute an EXPLAIN statement will cause a parse
159 <p
><b
>SQLITE_OMIT_FLOATING_POINT
</b
><br
>
160 This
option is used to omit floating-point number support from the SQLite
161 library. When specified
, specifying a floating point number as a literal
162 (i.e.
"1.01") results in a parse
error.
164 <p
>In the future
, this
option may also disable other floating point
165 functionality
, for example the sqlite3_result_double
(),
166 sqlite3_bind_double
(), sqlite3_value_double
() and sqlite3_column_double
()
170 <p
><b
>SQLITE_OMIT_FOREIGN_KEY
</b
><br
>
171 If this
option is defined
, FOREIGN KEY clauses in column declarations are
175 <p
><b
>SQLITE_OMIT_INTEGRITY_CHECK
</b
><br
>
176 This
option may be used to omit the
177 <a href
="pragma.html#pragma_integrity_check">"PRAGMA integrity_check"</a
>
178 command from the compiled library.
181 <p
><b
>SQLITE_OMIT_MEMORYDB
</b
><br
>
182 When this is defined
, the library does not respect the special database
183 name
":memory:" (normally used to create an in-memory database
). If
184 ":memory:" is passed to sqlite3_open
(), a
file with this name will be
188 <p
><b
>SQLITE_OMIT_PAGER_PRAGMAS
</b
><br
>
189 Defining this
option omits pragmas related to the pager subsystem from
190 the build. Currently
, the
191 <a href
="pragma.html#pragma_default_cache_size">default_cache_size
</a
> and
192 <a href
="pragma.html#pragma_cache_size">cache_size
</a
> pragmas are omitted.
195 <p
><b
>SQLITE_OMIT_PRAGMA
</b
><br
>
196 This
option is used to omit the
<a href
="pragma.html">PRAGMA command
</a
>
197 from the library. Note that it is useful to define the macros that omit
198 specific pragmas in addition to this
, as they may also remove supporting code
199 in other sub-systems. This macro removes the PRAGMA command only.
202 <p
><b
>SQLITE_OMIT_PROGRESS_CALLBACK
</b
><br
>
203 This
option may be defined to omit the capability to issue
"progress"
204 callbacks during long-running SQL statements. The
205 <a href
="capi3ref.html#sqlite3_progress_handler">sqlite3_progress_handler
()</a
>
206 API function is not present in the library.
208 <p
><b
>SQLITE_OMIT_REINDEX
</b
><br
>
209 When this
option is defined
, the
<a href
="lang_reindex.html">REINDEX
</a
>
210 command is not included in the library. Executing a REINDEX statement causes
214 <p
><b
>SQLITE_OMIT_SCHEMA_PRAGMAS
</b
><br
>
215 Defining this
option omits pragmas
for querying the database schema from
216 the build. Currently
, the
217 <a href
="pragma.html#pragma_table_info">table_info
</a
>,
218 <a href
="pragma.html#pragma_index_info">index_info
</a
>,
219 <a href
="pragma.html#pragma_index_list">index_list
</a
> and
220 <a href
="pragma.html#pragma_database_list">database_list
</a
>
224 <p
><b
>SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
</b
><br
>
225 Defining this
option omits pragmas
for querying and modifying the
226 database schema version and user version from the build. Specifically
, the
227 <a href
="pragma.html#pragma_schema_version">schema_version
</a
> and
228 <a href
="pragma.html#pragma_user_version">user_version
</a
>
231 <p
><b
>SQLITE_OMIT_SUBQUERY
</b
><br
>
232 <p
>If defined
, support
for sub-selects and the IN
() operator are omitted.
235 <p
><b
>SQLITE_OMIT_TCL_VARIABLE
</b
><br
>
236 <p
>If this macro is defined
, then the special
"$<variable-name>" syntax
237 used to automatically
bind SQL variables to TCL variables is omitted.
240 <p
><b
>SQLITE_OMIT_TRIGGER
</b
><br
>
241 Defining this
option omits support
for VIEW objects. Neither the
242 <a href
="lang_createtrigger.html">CREATE TRIGGER
</a
> or
243 <a href
="lang_droptrigger.html">DROP TRIGGER
</a
>
244 commands are available in this case
, attempting to execute either will result
248 WARNING
: If this macro is defined
, it will not be possible to
open a database
249 for which the schema contains TRIGGER objects.
252 <p
><b
>SQLITE_OMIT_UTF16
</b
><br
>
253 This macro is used to omit support
for UTF16
text encoding. When this is
254 defined all API functions that
return or accept UTF16 encoded
text are
255 unavailable. These functions can be identified by the fact that they end
256 with '
16'
, for example sqlite3_prepare16
(), sqlite3_column_text16
() and
257 sqlite3_bind_text16
().
260 <p
><b
>SQLITE_OMIT_VACUUM
</b
><br
>
261 When this
option is defined
, the
<a href
="lang_vacuum.html">VACUUM
</a
>
262 command is not included in the library. Executing a VACUUM statement causes
266 <p
><b
>SQLITE_OMIT_VIEW
</b
><br
>
267 Defining this
option omits support
for VIEW objects. Neither the
268 <a href
="lang_createview.html">CREATE VIEW
</a
> or
269 <a href
="lang_dropview.html">DROP VIEW
</a
>
270 commands are available in this case
, attempting to execute either will result
274 WARNING
: If this macro is defined
, it will not be possible to
open a database
275 for which the schema contains VIEW objects.