Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for ticket #26: Document the fact that CREATE TABLE might not be immediately visible to other processes that are holding the database open. (CVS 544) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
18b31b7ab90ab330e271e0ed5d316f63 |
User & Date: | drh 2002-04-25 00:21:50 |
Context
2002-04-25
| ||
11:45 | Added the "encode.c" source file that contains two utility subroutines that can be used to encode binary data for use in INSERT and UPDATE statements. This is just an initial checking. The code has not yet been integrated into the library. (CVS 545) check-in: 57f7c597 user: drh tags: trunk | |
00:21 | Fix for ticket #26: Document the fact that CREATE TABLE might not be immediately visible to other processes that are holding the database open. (CVS 544) check-in: 18b31b7a user: drh tags: trunk | |
2002-04-23
| ||
17:10 | Fix for ticket #22: In the code generator for compound SELECT statements, take care not to generate column name headers if the output is an intermediate table. Otherwise the column headers are not generated correctly if a compound SELECT statement appears as an expression in part of the WHERE clause. (CVS 543) check-in: a06d9acd user: drh tags: trunk | |
Changes
Changes to www/faq.tcl.
1 2 3 4 5 6 7 8 9 10 11 .. 62 63 64 65 66 67 68 69 70 71 72 73 74 75 ... 185 186 187 188 189 190 191 192 193 194 195 196 197 198 ... 201 202 203 204 205 206 207 208 209 210 211 212 213 214 ... 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 ... 273 274 275 276 277 278 279 280 281 282 283 284 285 286 |
# # Run this script to generated a faq.html output file # set rcsid {$Id: faq.tcl,v 1.9 2002/03/23 00:31:29 drh Exp $} puts {<html> <head> <title>SQLite Frequently Asked Questions</title> </head> <body bgcolor="white"> <h1 align="center">Frequently Asked Questions</h1> ................................................................................ earlier.</p> <p>Beginning with version 2.2.3, there is a new API function named <b>sqlite_last_insert_rowid()</b> which will return the integer key for the most recent insert operation. See the API documentation for details.</p> } faq { SQLite lets me insert a string into a database column of type integer! } { <p>This is a feature, not a bug. SQLite is typeless. Any data can be inserted into any column. You can put arbitrary length strings into integer columns, floating point numbers in boolean columns, or dates ................................................................................ server instead of SQLite.</p> <p>When SQLite tries to access a file that is locked by another process, the default behavior is to return SQLITE_BUSY. You can adjust this behavior from C code using the <b>sqlite_busy_handler()</b> or <b>sqlite_busy_timeout()</b> API functions. See the API documentation for details.</p> } faq { Is SQLite threadsafe? } { <p>Yes. Sometimes. In order to be thread-safe, SQLite must be compiled with the THREADSAFE preprocessor macro set to 1. In the default ................................................................................ recompile.</p> <p>"Threadsafe" in the previous paragraph means that two or more threads can run SQLite at the same time on different "<b>sqlite</b>" structures returned from separate calls to <b>sqlite_open()</b>. It is never safe to use the same <b>sqlite</b> structure pointer simultaneously in two or more threads.</p> } faq { How do I list all tables/indices contained in an SQLite database } { <p>If you are running the <b>sqlite</b> command-line access program you can type "<b>.tables</b>" to get a list of all tables. Or you ................................................................................ CREATE TABLE, CREATE INDEX, DROP TABLE, and DROP INDEX commands.</p> <p>Temporary tables do not appear in the SQLITE_MASTER table. At this time there is no way to get a listing of temporary tables and indices.</p> } faq { Are there any known size limits to SQLite databases. } { <p>Internally, SQLite can handle databases up to 2^40 bytes (1 terabyte) in size. But the backend interface to POSIX and Win32 limits files to 2^31 (2 gigabytes).</p> <p>SQLite arbitrarily limits the amount of data in one row to 1 megabyte. There is a single #define in the source code that can be changed to raise ................................................................................ limit due to the file size constraint.</p> <p>The name and "CREATE TABLE" statement for a table must fit entirely within a 1-megabyte row of the SQLITE_MASTER table. Other than this, there are no constraints on the length of the name of a table, or on the number of columns, etc. Indices are similarly unconstrained.</p> } faq { How do I add or delete columns from an existing table in SQLite. } { <p>SQLite does not support the "ALTER TABLE" SQL command. If you what to change the structure of a table, you have to recreate the table. You can save existing data to a temporary table, drop the |
| > > > > > > > > > > > > > > > > > > > > > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 .. 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 ... 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 ... 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 ... 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 ... 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 |
# # Run this script to generated a faq.html output file # set rcsid {$Id: faq.tcl,v 1.10 2002/04/25 00:21:50 drh Exp $} puts {<html> <head> <title>SQLite Frequently Asked Questions</title> </head> <body bgcolor="white"> <h1 align="center">Frequently Asked Questions</h1> ................................................................................ earlier.</p> <p>Beginning with version 2.2.3, there is a new API function named <b>sqlite_last_insert_rowid()</b> which will return the integer key for the most recent insert operation. See the API documentation for details.</p> } faq { What datatypes does SQLite support? } { <p>SQLite is typeless. All data is stored as null-terminated strings. The datatype information that follows the column name in CREATE TABLE statements is ignored (mostly). You can put any type of data you want into any column, without regard to the declared datatype of that column. </p> <p>An exception to this rule is a column of type INTEGER PRIMARY KEY. Such columns must hold an integer. An attempt to put a non-integer value into an INTEGER PRIMARY KEY column will generate an error.</p> } faq { SQLite lets me insert a string into a database column of type integer! } { <p>This is a feature, not a bug. SQLite is typeless. Any data can be inserted into any column. You can put arbitrary length strings into integer columns, floating point numbers in boolean columns, or dates ................................................................................ server instead of SQLite.</p> <p>When SQLite tries to access a file that is locked by another process, the default behavior is to return SQLITE_BUSY. You can adjust this behavior from C code using the <b>sqlite_busy_handler()</b> or <b>sqlite_busy_timeout()</b> API functions. See the API documentation for details.</p> <p>If two or more processes have the same database open and one process creates a new table or index, the other processes might not be able to see the new table right away. You might have to get the other processes to close and reopen their connection to the database before they will be able to see the new table.</p> } faq { Is SQLite threadsafe? } { <p>Yes. Sometimes. In order to be thread-safe, SQLite must be compiled with the THREADSAFE preprocessor macro set to 1. In the default ................................................................................ recompile.</p> <p>"Threadsafe" in the previous paragraph means that two or more threads can run SQLite at the same time on different "<b>sqlite</b>" structures returned from separate calls to <b>sqlite_open()</b>. It is never safe to use the same <b>sqlite</b> structure pointer simultaneously in two or more threads.</p> <p>Note that if two or more threads have the same database open and one thread creates a new table or index, the other threads might not be able to see the new table right away. You might have to get the other threads to close and reopen their connection to the database before they will be able to see the new table.</p> } faq { How do I list all tables/indices contained in an SQLite database } { <p>If you are running the <b>sqlite</b> command-line access program you can type "<b>.tables</b>" to get a list of all tables. Or you ................................................................................ CREATE TABLE, CREATE INDEX, DROP TABLE, and DROP INDEX commands.</p> <p>Temporary tables do not appear in the SQLITE_MASTER table. At this time there is no way to get a listing of temporary tables and indices.</p> } faq { Are there any known size limits to SQLite databases? } { <p>Internally, SQLite can handle databases up to 2^40 bytes (1 terabyte) in size. But the backend interface to POSIX and Win32 limits files to 2^31 (2 gigabytes).</p> <p>SQLite arbitrarily limits the amount of data in one row to 1 megabyte. There is a single #define in the source code that can be changed to raise ................................................................................ limit due to the file size constraint.</p> <p>The name and "CREATE TABLE" statement for a table must fit entirely within a 1-megabyte row of the SQLITE_MASTER table. Other than this, there are no constraints on the length of the name of a table, or on the number of columns, etc. Indices are similarly unconstrained.</p> } faq { What is the maximum size of a VARCHAR in SQLite? } { <p>Remember, SQLite is typeless. A VARCHAR column can hold as much data as any other column. The total amount of data in a single row of the database is limited to 1 megabyte. You can increase this limit to 16 megabytes, if you need to, by adjusting a single #define in the source tree and recompiling.</p> <p>For maximum speed and space efficiency, you should try to keep the amount of data in a single row below about 230 bytes.</p> } faq { Does SQLite support a BLOB type? } { <p>You can declare a table column to be of type "BLOB" but it will still only store null-terminated strings. This is because the only way to insert information into an SQLite database is using an INSERT SQL statement, and you can not include binary data in the middle of the ASCII text string of an INSERT statement.</p> <p>SQLite is 8-bit clean with regard to the data is stores as long as the data does not contain any NUL characters. If you want to store binary data, consider encoding your data in such a way that it contains no NUL characters and inserting it that way. You might use URL-style encoding: encode NUL as "%00" and "%" as "%25". Or you might consider encoding your binary data using base-64.</p> } faq { How do I add or delete columns from an existing table in SQLite. } { <p>SQLite does not support the "ALTER TABLE" SQL command. If you what to change the structure of a table, you have to recreate the table. You can save existing data to a temporary table, drop the |