Build Lunapaint from Contrib.
[AROS-Contrib.git] / sqlite3 / www / compile.tcl
blobbdf7d22f7b84f929894b7a102897df71a86be53a
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 $ }
5 source common.tcl
6 header {Compilation Options For SQLite}
8 puts {
9 <h1>Compilation Options For SQLite</h1>
11 <p>
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.
18 </p>
19 <p>
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.
25 </p>
26 <a name="defaults"></a>
27 <h2>Options To Set Default Parameter Values</h2>
29 <p><b>SQLITE_DEFAULT_AUTOVACUUM=<i>&lt;1 or 0&gt;</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.
35 </p>
37 <p><b>SQLITE_DEFAULT_CACHE_SIZE=<i>&lt;pages&gt;</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.
41 </p>
43 <p><b>SQLITE_DEFAULT_PAGE_SIZE=<i>&lt;bytes&gt;</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.
48 </p>
50 <p><b>SQLITE_DEFAULT_TEMP_CACHE_SIZE=<i>&lt;pages&gt;</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.
55 </p>
57 <p><b>SQLITE_MAX_PAGE_SIZE=<i>&lt;bytes&gt;</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
60 is 8192.
61 </p>
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
71 using GCC).</p>
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
78 </p>
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.
85 </p>
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.
91 </p>
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.
97 </p>
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.
107 </p>
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.
115 </p>
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
124 #unvacuumable.
125 #</p>
126 #<p><i>TODO: Need a link here - is that syntax documented anywhere?</i><p>
127 puts {
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.
132 </p>
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
138 cause a parse error.
139 </p>
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.
144 </p>
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.
151 </p>
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
156 error.
157 </p>
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.
163 </p>
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()
167 API functions.
168 </p>
170 <p><b>SQLITE_OMIT_FOREIGN_KEY</b><br>
171 If this option is defined, FOREIGN KEY clauses in column declarations are
172 ignored.
173 </p>
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.
179 </p>
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
185 opened or created.
186 </p>
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.
193 </p>
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.
200 </p>
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
211 a parse error.
212 </p>
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>
221 pragmas are omitted.
222 </p>
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>
229 pragmas are omitted.
231 <p><b>SQLITE_OMIT_SUBQUERY</b><br>
232 <p>If defined, support for sub-selects and the IN() operator are omitted.
233 </p>
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.
238 </p>
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
245 in a parse error.
246 </p>
248 WARNING: If this macro is defined, it will not be possible to open a database
249 for which the schema contains TRIGGER objects.
250 </p>
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().
258 </p>
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
263 a parse error.
264 </p>
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
271 in a parse error.
272 </p>
274 WARNING: If this macro is defined, it will not be possible to open a database
275 for which the schema contains VIEW objects.
276 </p>
278 footer $rcsid