]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix for ticket #26: Document the fact that CREATE TABLE might not be
authordrh <drh@noemail.net>
Thu, 25 Apr 2002 00:21:50 +0000 (00:21 +0000)
committerdrh <drh@noemail.net>
Thu, 25 Apr 2002 00:21:50 +0000 (00:21 +0000)
immediately visible to other processes that are holding the database open. (CVS 544)

FossilOrigin-Name: 18b31b7ab90ab330e271e0ed5d316f63846845be

manifest
manifest.uuid
www/faq.tcl

index 063284a5f504d1a06557c96b461aec4f3c1397ed..a47c4175799678503a89980ad15e8089d15c530a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sfor\sticket\s#22:\sIn\sthe\scode\sgenerator\sfor\scompound\sSELECT\sstatements,\stake\ncare\snot\sto\sgenerate\scolumn\sname\sheaders\sif\sthe\soutput\sis\san\sintermediate\stable.\nOtherwise\sthe\scolumn\sheaders\sare\snot\sgenerated\scorrectly\sif\sa\scompound\sSELECT\nstatement\sappears\sas\san\sexpression\sin\spart\sof\sthe\sWHERE\sclause.\s(CVS\s543)
-D 2002-04-23T17:10:18
+C Fix\sfor\sticket\s#26:\sDocument\sthe\sfact\sthat\sCREATE\sTABLE\smight\snot\sbe\nimmediately\svisible\sto\sother\sprocesses\sthat\sare\sholding\sthe\sdatabase\sopen.\s(CVS\s544)
+D 2002-04-25T00:21:50
 F Makefile.in 50f1b3351df109b5774771350d8c1b8d3640130d
 F Makefile.template 89e373b2dad0321df00400fa968dc14b61a03296
 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
@@ -121,7 +121,7 @@ F www/conflict.tcl 81dd21f9a679e60aae049e9dd8ab53d59570cda2
 F www/crosscompile.tcl 3622ebbe518927a3854a12de51344673eb2dd060
 F www/download.tcl 29aa6679ca29621d10613f60ebbbda18f4b91c49
 F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
-F www/faq.tcl fb1e92e2f604546694f83a36d969492f52fb685d
+F www/faq.tcl 45bdb18b75ac3aa1befec42985fb892413aac0bb
 F www/formatchng.tcl 2ce21ff30663fad6618198fe747ce675df577590
 F www/index.tcl d0c52fbf031d0a3ee6d9d77aa669d5a4b24b6130
 F www/lang.tcl 2d4654255ad1ec7f58d02dc41b59528c0ee6ea44
@@ -131,7 +131,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f
 F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P 0691720a4b94141635734ab0a8c4072cab189a33
-R 5e23c695d2d82aae9921a85b5156d273
+P a06d9acdd5af0dc69b3a4d024de082631254aead
+R cfeb54c57cf6f9ec54bd35534c55c306
 U drh
-Z 57e5aab64c05733c095af92c508e335d
+Z d14450a4a0ba6fe1648be69426d0ab18
index 5c4ba8a45d0e63914fc504b631a0c4c953f1a144..ffa096e9906fa8580b419e5719edda54f17b8681 100644 (file)
@@ -1 +1 @@
-a06d9acdd5af0dc69b3a4d024de082631254aead
\ No newline at end of file
+18b31b7ab90ab330e271e0ed5d316f63846845be
\ No newline at end of file
index 9626ab8b677f8d90e98a1066aaba9304cb94f229..98024bfe98f30486db6422ff310e90f13101de64 100644 (file)
@@ -1,7 +1,7 @@
 #
 # 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 $}
+set rcsid {$Id: faq.tcl,v 1.10 2002/04/25 00:21:50 drh Exp $}
 
 puts {<html>
 <head>
@@ -67,6 +67,20 @@ INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
   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!
 } {
@@ -189,6 +203,12 @@ faq {
   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 {
@@ -205,6 +225,12 @@ faq {
   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 {
@@ -255,7 +281,7 @@ ORDER BY name;
 }
 
 faq {
-  Are there any known size limits to SQLite databases.
+  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
@@ -278,6 +304,36 @@ faq {
   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.
 } {