-C Restrain\sthe\sflattener\sin\sthe\spresence\sof\souter\sjoins.\s\sTicket\s#306.\s(CVS\s958)
-D 2003-05-06T20:35:16
+C Cleaned\sup\skeywords\ssection.\s(CVS\s959)
+D 2003-05-07T03:59:10
F Makefile.in 004acec253ecdde985c8ecd5b7c9accdb210378f
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F www/fileformat.tcl d9b586416c0d099b82e02e469d532c9372f98f3f
F www/formatchng.tcl cbaf0f410096c71f86a7537cf9249fa04b9a659c
F www/index.tcl b155eba45136d19e7aa6ba979d4093180c335cf7
-F www/lang.tcl 56f4c1996795204317c850ecf039c851692625d4
+F www/lang.tcl 46b42bd1b22c6e18c17ebfe3893da57790761b79
F www/mingw.tcl d96b451568c5d28545fefe0c80bee3431c73f69c
F www/nulls.tcl 29497dac2bc5b437aa7e2e94577dad4d8933ed26
F www/omitted.tcl 118062f40a203fcb88b8d68ef1d7c0073ac191ec
F www/sqlite.tcl ffde644361e1d8e2a44a235ff23ad3b43d640df2
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P fda637f453d35b74f676997fcf056a948ccd771b
-R ce92f17887cce1b923da966e242b319f
-U drh
-Z ab57ff50799dad75d8d41943b87540c0
+P 6d4b6597e560578253960d9876dc8c8657f41fef
+R 7baf27040092074ad3a30cf620346b84
+U jplyon
+Z cc6c263b53146ffd7c6d10d64ce2f2b8
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: lang.tcl,v 1.53 2003/05/04 07:02:55 jplyon Exp $}
+set rcsid {$Id: lang.tcl,v 1.54 2003/05/07 03:59:10 jplyon Exp $}
puts {<html>
<head>
<p>The following keywords are used by SQLite. Most are either reserved
words in SQL-92 or were listed as potential reserved words. Those which
aren't are shown in italics. Not all of these words are actually used
-by SQLite. SQLite doesn't currently enforce reserved words, so most of
-these can actually be used for the names of SQLite objects such as
-tables, columns, and views, but they must be generally be enclosed by
-brackes or quotes to avoid confusing the parser.</p>
-
-<p><i>_ROWID_</i> <i>ABORT</i> AFTER ALL AND AS ASC <i>ATTACH</i>
-BEFORE BEGIN BETWEEN BY CASCADE CASE CHECK <i>CLUSTER</i> COLLATE
-COMMIT <i>CONFLICT</i> CONSTRAINT <i>COPY</i> CREATE CROSS
-<i>DATABASE</i> DEFAULT DEFERRED DEFERRABLE DELETE <i>DELIMITERS</i>
-DESC <i>DETACH</i> DISTINCT DROP EACH ELSE END EXCEPT <i>EXPLAIN</i>
-<i>FAIL</i> FOR FOREIGN FROM FULL <i>GLOB</i> GROUP HAVING IGNORE
-IMMEDIATE IN <i>INDEX</i> INITIALLY INNER INSERT <i>INSTEAD</i>
-INTERSECT INTO IS <i>ISNULL</i> JOIN KEY LEFT LIKE LIMIT MATCH NATURAL
-NOT <i>NOTNULL</i> NULL OF <i>OFFSET</i> ON OR ORDER OUTER <i>PRAGMA</i>
-PRIMARY <i>RAISE</i> REFERENCES <i>REPLACE</i> RESTRICT RIGHT ROLLBACK
-<i>ROW</i> <i>ROWID</i> SELECT SET <i>STATEMENT</i> TABLE <i>TEMP</i>
-TEMPORARY THEN TRANSACTION TRIGGER UNION UNIQUE UPDATE USING <i>VACUUM</i>
-VALUES VIEW WHEN WHERE</p>
+by SQLite. Keywords are not reserved in SQLite. Any Keyword can be used
+as an identifier for SQLite objects (columns, databases, indexes, tables,
+triggers, views, ...) but must generally be enclosed by brackets or
+quotes to avoid confusing the parser. Keyword matching in SQLite is
+case-insensitive.</p>
+
+<p>Keywords can be used as identifiers in three ways:</p>
+
+<table>
+<tr> <td width=12%> 'keyword'
+ <td>Interpreted as a literal string if it occurs in a legal string
+ context, otherwise as an identifier.
+<tr> <td> "keyword"
+ <td>Interpreted as an identifier if it matches a known identifier
+ and occurs in a legal identifier context, otherwise as a string.
+<tr> <td> [keyword]
+ <td> Always interpreted as an identifer. (This notation is used
+ by MS Access and SQL Server.)
+</table>
+
+<h2>Fallback Keywords</h2>
+
+<p>These keywords can be used as identifiers for SQLite objects without
+delimiters.</p>
+
+<p> <i>ABORT</i> AFTER ASC <i>ATTACH</i> BEFORE BEGIN DEFERRED CASCADE
+<i>CLUSTER</i> <i>CONFLICT</i> <i>COPY</i> CROSS <i>DATABASE</i>
+<i>DELIMITERS</i> DESC <i>DETACH</i> EACH END <i>EXPLAIN</i> <i>FAIL</i>
+FOR FULL IGNORE IMMEDIATE INITIALLY INNER <i>INSTEAD</i> KEY LEFT MATCH
+NATURAL OF <i>OFFSET</i> OUTER <i>PRAGMA</i> <i>RAISE</i> <i>REPLACE</i>
+RESTRICT RIGHT <i>ROW</i> <i>STATEMENT</i> <i>TEMP</i> TEMPORARY TRIGGER
+<i>VACUUM</i> VIEW </p>
+
+<h2>Normal keywords</h2>
+
+<p>These keywords can be used as identifiers for SQLite objects, but
+must be enclosed in brackets or quotes for SQLite to recognize them as
+an identifier.</p>
+
+<p> ALL AND AS BETWEEN BY CASE CHECK COLLATE COMMIT CONSTRAINT CREATE
+DEFAULT DEFERRABLE DELETE DISTINCT DROP ELSE EXCEPT FOREIGN FROM
+<i>GLOB</i> GROUP HAVING IN <i>INDEX</i> INSERT INTERSECT INTO IS
+<i>ISNULL</i> JOIN LIKE LIMIT NOT <i>NOTNULL</i> NULL ON OR ORDER
+PRIMARY REFERENCES ROLLBACK SELECT SET TABLE THEN TRANSACTION UNION
+UNIQUE UPDATE USING VALUES WHEN WHERE </p>
+
+<h2>Special words</h2>
+
+<p>The following are not keywords in SQLite, but are used as names of
+system objects. They can be used as an identifier for a different
+type of object.</p>
+
+<p> <i>_ROWID_</i> <i>MAIN</i> OID <i>ROWID</i> <i>SQLITE_MASTER</i>
+<i>SQLITE_TEMP_MASTER</i>
+</p>
}