aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl
diff options
context:
space:
mode:
authordan miller2007-10-20 02:49:29 +0000
committerdan miller2007-10-20 02:49:29 +0000
commite36d23a85ebff914d74bb541558c2b6082b78edb (patch)
tree54b58fdf162e78af64055282a6035c8d2443389d /libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl
parent* Fixed an issue whereby avatar chat distances were being calculated against ... (diff)
downloadopensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.zip
opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.tar.gz
opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.tar.bz2
opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.tar.xz
sqlite source (unix build) added to libraries
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl')
-rw-r--r--libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl1866
1 files changed, 1866 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl b/libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl
new file mode 100644
index 0000000..df697ad
--- /dev/null
+++ b/libraries/sqlite/unix/sqlite-3.5.1/www/changes.tcl
@@ -0,0 +1,1866 @@
1#
2# Run this script to generated a changes.html output file
3#
4source common.tcl
5header {SQLite changes}
6puts {
7<p>
8This page provides a high-level summary of changes to SQLite.
9For more detail, refer the the checkin logs generated by
10CVS at
11<a href="http://www.sqlite.org/cvstrac/timeline">
12http://www.sqlite.org/cvstrac/timeline</a>.
13</p>
14
15<DL>
16}
17
18
19proc chng {date desc} {
20 if {[regexp {\(([0-9.]+)\)} $date all vers]} {
21 set label [string map {. _} $vers]
22 puts "<A NAME=\"version_$label\">"
23 }
24 puts "<DT><B>$date</B></DT>"
25 regsub -all {[Tt]icket #(\d+)} $desc \
26 {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} desc
27 puts "<DD><P><UL>$desc</UL></P>"
28 puts "</DD>"
29}
30
31chng {2007 Oct 04 (3.5.1)} {
32<li><i><b>Nota Bene:</b> We are not using terms "alpha" or "beta" on this
33 release because the code is stable and because if we use those terms,
34 nobody will upgrade. However, we still reserve the right to make
35 incompatible changes to the new VFS interface in future releases.</i></li>
36
37<li>Fix a bug in the handling of SQLITE_FULL errors that could lead
38 to database corruption. Ticket #2686.
39<li>The test_async.c drive now does full file locking and works correctly
40 when used simultaneously by multiple processes on the same database.
41<li>The CLI ignores whitespace (including comments) at the end of lines
42<li>Make sure the query optimizer checks dependences on all terms of
43 a compound SELECT statement. Ticket #2640.
44<li>Add demonstration code showing how to build a VFS for a raw
45 mass storage without a filesystem.
46<li>Added an output buffer size parameter to the xGetTempname() method
47 of the VFS layer.
48<li>Sticky SQLITE_FULL or SQLITE_IOERR errors in the pager are reset
49 when a new transaction is started.
50}
51
52
53chng {2007 Sep 04 (3.5.0) alpha} {
54<li>Redesign the OS interface layer. See
55 <a href="34to35.html">34to35.html</a> for details.
56 <font color="red">*** Potentially incompatible change ***</font>
57<li>The <a href="capi3ref.html#sqlite3_release_memory">
58 sqlite3_release_memory()</a>,
59 <a href="capi3ref.html#sqlite3_soft_heap_limit">
60 sqlite3_soft_heap_limit()</a>,
61 and <a href="capi3ref.html#sqlite3_enable_shared_cache">
62 sqlite3_enable_shared_cache()</a> interfaces now work cross all
63 threads in the process, not just the single thread in which they
64 are invoked.
65 <font color="red">*** Potentially incompatible change ***</font>
66<li>Added the
67 <a href="capi3ref.html#sqlite3_open_v2">sqlite3_open_v2()</a>
68 interface.
69<li>Reimplemented the memory allocation subsystem and made it
70 replacable at compile-time.
71<li>Created a new mutex subsystem and made it replacable at
72 compile-time.
73<li>The same database connection may now be used simultaneously by
74 separate threads.
75}
76
77
78chng {2007 August 13 (3.4.2)} {
79<li>Fix a database corruption bug that might occur if a ROLLBACK command
80is executed in <a href="pragma.html#pragma_auto_vacuum">auto-vacuum mode</a>
81and a very small <a href="capi3ref.html#sqlite3_soft_heap_limit">
82soft_heap_limit</a> is set.
83<a href="http://www.sqlite.org/cvstrac/tktview?tn=2565">Ticket #2565</a>.
84
85<li>Add the ability to run a full regression test with a small
86<a href="capi3ref.html#sqlite3_soft_heap_limit">soft_heap_limit</a>.
87
88<li>Fix other minor problems with using small soft heap limits.
89
90<li>Work-around for
91<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32575">GCC bug 32575</a>.
92
93<li>Improved error detection of misused aggregate functions.
94
95<li>Improvements to the amalgamation generator script so that all symbols
96are prefixed with either SQLITE_PRIVATE or SQLITE_API.
97}
98
99chng {2007 July 20 (3.4.1)} {
100<li>Fix a bug in <a href="lang_vacuum.html">VACUUM</a> that can lead to
101 <a href="http://www.sqlite.org/cvstrac/wiki?p=DatabaseCorruption">
102 database corruption</a> if two
103 processes are connected to the database at the same time and one
104 VACUUMs then the other then modifies the database.</li>
105<li>The expression "+column" is now considered the same as "column"
106 when computing the collating sequence to use on the expression.</li>
107<li>In the <a href="tclsqlite.html">TCL language interface</a>,
108 "@variable" instead of "$variable" always binds as a blob.</li>
109<li>Added <a href="pragma.html#pragma_freelist_count">PRAGMA freelist_count</a>
110 for determining the current size of the freelist.</li>
111<li>The <a href="pragma.html#pragma_auto_vacuum">
112 PRAGMA auto_vacuum=incremental</a> setting is now persistent.</li>
113<li>Add FD_CLOEXEC to all open files under unix.</li>
114<li>Fix a bug in the <a href="optoverview.html#minmax">
115 min()/max() optimization</a> when applied to
116 descending indices.</li>
117<li>Make sure the TCL language interface works correctly with 64-bit
118 integers on 64-bit machines.</li>
119<li>Allow the value -9223372036854775808 as an integer literal in SQL
120 statements.</li>
121<li>Add the capability of "hidden" columns in virtual tables.</li>
122<li>Use the macro SQLITE_PRIVATE (defaulting to "static") on all
123 internal functions in the amalgamation.</li>
124<li>Add pluggable tokenizers and <a href="http://www.icu-project.org/">ICU</a>
125 tokenization support to FTS2</li>
126<li>Other minor bug fixes and documentation enhancements</li>
127}
128
129chng {2007 June 18 (3.4.0)} {
130<li>Fix a bug that can lead to database corruption if an SQLITE_BUSY error
131 occurs in the middle of an explicit transaction and that transaction
132 is later committed.
133 <a href="http://www.sqlite.org/cvstrac/tktview?tn=2409">Ticket #2409.</a>
134 See the
135 <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
136 CorruptionFollowingBusyError</a> wiki page for details.</i>
137<li>Fix a bug that can lead to database corruption if autovacuum mode is
138 on and a malloc() failure follows a CREATE TABLE or CREATE INDEX statement
139 which itself follows a cache overflow inside a transaction. See
140 <a href="http://www.sqlite.org/cvstrac/tktview?tn=2418">ticket #2418</a>.
141 </li>
142<li>Added explicit <a href="limits.html">upper bounds</a> on the sizes and
143 quantities of things SQLite can process. This change might cause
144 compatibility problems for
145 applications that use SQLite in the extreme, which is why the current
146 release is 3.4.0 instead of 3.3.18.</li>
147<li>Added support for <a href="capi3ref.html#sqlite3_blob_open">
148 Incremental BLOB I/O</a>.</li>
149<li>Added the <a href="capi3ref.html#sqlite3_bind_zeroblob">zeroblob API</a>
150 and the <a href="lang_expr.html#zeroblob">zeroblob()</a> SQL function.</li>
151<li>Added support for <a href="pragma.html#pragma_incremental_vacuum">
152 Incremental Vacuum</a>.</li>
153<li>Added the SQLITE_MIXED_ENDIAN_64BIT_FLOAT compile-time option to suppport
154 ARM7 processors with goofy endianness.</li>
155<li>Removed all instances of sprintf() and strcpy() from the core library.</li>
156<li>Added support for <a href="http://www.icu-project.org/">
157 International Components for Unicode (ICU)</a> to the full-text search
158 extensions.
159</ul><p>
160<ul type="circle">
161<li>In the windows OS driver, reacquire a SHARED lock if an attempt to
162 acquire an EXCLUSIVE lock fails. Ticket #2354</li>
163<li>Fix the REPLACE() function so that it returns NULL if the second argument
164 is an empty string. Ticket #2324.</li>
165<li>Document the hazards of type coversions in
166 <a href="capi3ref.html#sqlite3_column_blob">sqlite3_column_blob()</a>
167 and related APIs. Fix unnecessary type conversions. Ticket #2321.</li>
168<li>Internationalization of the TRIM() function. Ticket #2323</li>
169<li>Use memmove() instead of memcpy() when moving between memory regions
170 that might overlap. Ticket #2334</li>
171<li>Fix an optimizer bug involving subqueries in a compound SELECT that has
172 both an ORDER BY and a LIMIT clause. Ticket #2339.</li>
173<li>Make sure the <a href="capi3ref.html#sqlite3_snprintf">sqlite3_snprintf()
174 </a> interface does not zero-terminate the buffer if the buffer size is
175 less than 1. Ticket #2341</li>
176<li>Fix the built-in printf logic so that it prints "NaN" not "Inf" for
177 floating-point NaNs. Ticket #2345</li>
178<li>When converting BLOB to TEXT, use the text encoding of the main database.
179 Ticket #2349</li>
180<li>Keep the full precision of integers (if possible) when casting to
181 NUMERIC. Ticket #2364</li>
182<li>Fix a bug in the handling of UTF16 codepoint 0xE000</li>
183<li>Consider explicit collate clauses when matching WHERE constraints
184 to indices in the query optimizer. Ticket #2391</li>
185<li>Fix the query optimizer to correctly handle constant expressions in
186 the ON clause of a LEFT JOIN. Ticket #2403</li>
187<li>Fix the query optimizer to handle rowid comparisions to NULL
188 correctly. Ticket #2404</li>
189<li>Fix many potental segfaults that could be caused by malicious SQL
190 statements.</li>
191}
192
193chng {2007 April 25 (3.3.17)} {
194<li>When the "write_version" value of the database header is larger than
195 what the library understands, make the database read-only instead of
196 unreadable.</li>
197<li>Other minor bug fixes</li>
198}
199
200chng {2007 April 18 (3.3.16)} {
201<li>Fix a bug that caused VACUUM to fail if NULLs appeared in a
202 UNIQUE column.</li>
203<li>Reinstate performance improvements that were added in 3.3.14
204 but regressed in 3.3.15.</li>
205<li>Fix problems with the handling of ORDER BY expressions on
206 compound SELECT statements in subqueries.</li>
207<li>Fix a potential segfault when destroying locks on WinCE in
208 a multi-threaded environment.</li>
209<li>Documentation updates.</li>
210}
211
212chng {2007 April 9 (3.3.15)} {
213<li>Fix a bug introduced in 3.3.14 that caused a rollback of
214 CREATE TEMP TABLE to leave the database connection wedged.</li>
215<li>Fix a bug that caused an extra NULL row to be returned when
216 a descending query was interrupted by a change to the database.</li>
217<li>The FOR EACH STATEMENT clause on a trigger now causes a syntax
218 error. It used to be silently ignored.</li>
219<li>Fix an obscure and relatively harmless problem that might have caused
220 a resource leak following an I/O error.</li>
221<li>Many improvements to the test suite. Test coverage now exceeded 98%</li>
222}
223
224chng {2007 April 2 (3.3.14)} {
225<li>Fix a <a href="http://www.sqlite.org/cvstrac/tktview?tn=2273">bug</a>
226 in 3.3.13 that could cause a segfault when the IN operator
227 is used one one term of a two-column index and the right-hand side of
228 the IN operator contains a NULL.</li>
229<li>Added a new OS interface method for determining the sector size
230 of underlying media: sqlite3OsSectorSize().</li>
231<li>A new algorithm for statements of the form
232 INSERT INTO <i>table1</i> SELECT * FROM <i>table2</i>
233 is faster and reduces fragmentation. VACUUM uses statements of
234 this form and thus runs faster and defragments better.</li>
235<li>Performance enhancements through reductions in disk I/O:
236<ul>
237<li>Do not read the last page of an overflow chain when
238 deleting the row - just add that page to the freelist.</li>
239<li>Do not store pages being deleted in the
240 rollback journal.</li>
241<li>Do not read in the (meaningless) content of
242 pages extracted from the freelist.</li>
243<li>Do not flush the page cache (and thus avoiding
244 a cache refill) unless another process changes the underlying
245 database file.</li>
246<li>Truncate rather than delete the rollback journal when committing
247 a transaction in exclusive access mode, or when committing the TEMP
248 database.</li>
249</ul></li>
250<li>Added support for exclusive access mode using
251 <a href="pragma.html#pragma_locking_mode">
252 "PRAGMA locking_mode=EXCLUSIVE"</a></li>
253<li>Use heap space instead of stack space for large buffers in the
254 pager - useful on embedded platforms with stack-space
255 limitations.</li>
256<li>Add a makefile target "sqlite3.c" that builds an amalgamation containing
257 the core SQLite library C code in a single file.</li>
258<li>Get the library working correctly when compiled
259 with GCC option "-fstrict-aliasing".</li>
260<li>Removed the vestigal SQLITE_PROTOCOL error.</li>
261<li>Improvements to test coverage, other minor bugs fixed,
262 memory leaks plugged,
263 code refactored and/or recommented in places for easier reading.</li>
264}
265
266chng {2007 February 13 (3.3.13)} {
267<li>Add a "fragmentation" measurement in the output of sqlite3_analyzer.</li>
268<li>Add the COLLATE operator used to explicitly set the collating sequence
269used by an expression. This feature is considered experimental pending
270additional testing.</li>
271<li>Allow up to 64 tables in a join - the old limit was 32.</li>
272<li>Added two new experimental functions:
273<a href="lang_expr.html#randomblobFunc">randomBlob()</a> and
274<a href="lang_expr.html#hexFunc">hex()</a>.
275Their intended use is to facilitate generating
276<a href="http://en.wikipedia.org/wiki/UUID">UUIDs</a>.
277</li>
278<li>Fix a problem where
279<a href="pragma.html#pragma_count_changes">PRAGMA count_changes</a> was
280causing incorrect results for updates on tables with triggers</li>
281<li>Fix a bug in the ORDER BY clause optimizer for joins where the
282left-most table in the join is constrained by a UNIQUE index.</li>
283<li>Fixed a bug in the "copy" method of the TCL interface.</li>
284<li>Bug fixes in fts1 and fts2 modules.</li>
285}
286
287chng {2007 January 27 (3.3.12)} {
288<li>Fix another bug in the IS NULL optimization that was added in
289version 3.3.9.</li>
290<li>Fix a assertion fault that occurred on deeply nested views.</li>
291<li>Limit the amount of output that
292<a href="pragma.html#pragma_integrity_check">PRAGMA integrity_check</a>
293generates.</li>
294<li>Minor syntactic changes to support a wider variety of compilers.</li>
295}
296
297chng {2007 January 22 (3.3.11)} {
298<li>Fix another bug in the implementation of the new
299<a href="capi3ref.html#sqlite3_prepare_v2">sqlite3_prepare_v2()</a> API.
300We'll get it right eventually...</li>
301<li>Fix a bug in the IS NULL optimization that was added in version 3.3.9 -
302the bug was causing incorrect results on certain LEFT JOINs that included
303in the WHERE clause an IS NULL constraint for the right table of the
304LEFT JOIN.</li>
305<li>Make AreFileApisANSI() a no-op macro in winCE since winCE does not
306support this function.</li>
307}
308
309chng {2007 January 9 (3.3.10)} {
310<li>Fix bugs in the implementation of the new
311<a href="capi3ref.html#sqlite3_prepare_v2">sqlite3_prepare_v2()</a> API
312that can lead to segfaults.</li>
313<li>Fix 1-second round-off errors in the
314<a href="http://www.sqlite.org/cvstrac/wiki?p=DateAndTimeFunctions">
315strftime()</a> function</li>
316<li>Enhance the windows OS layer to provide detailed error codes</li>
317<li>Work around a win2k problem so that SQLite can use single-character
318database file names</li>
319<li>The
320<a href="pragma.html#pragma_user_version">user_version</a> and
321<a href="pragma.html#pragma_schema_version">schema_version</a> pragmas
322correctly set their column names in the result set</li>
323<li>Documentation updates</li>
324}
325
326chng {2007 January 4 (3.3.9)} {
327<li>Fix bugs in pager.c that could lead to database corruption if two
328processes both try to recover a hot journal at the same instant</li>
329<li>Added the <a href="capi3ref.html#sqlite3_prepare_v2">sqlite3_prepare_v2()</a>
330API.</li>
331<li>Fixed the ".dump" command in the command-line shell to show
332indices, triggers and views again.</li>
333<li>Change the table_info pragma so that it returns NULL for the default
334value if there is no default value</li>
335<li>Support for non-ASCII characters in win95 filenames</li>
336<li>Query optimizer enhancements:
337<ul>
338<li>Optimizer does a better job of using indices to satisfy ORDER BY
339clauses that sort on the integer primary key</li>
340<li>Use an index to satisfy an IS NULL operator in the WHERE clause</li>
341<li>Fix a bug that was causing the optimizer to miss an OR optimization
342opportunity</li>
343<li>The optimizer has more freedom to reorder tables in the FROM clause
344even in there are LEFT joins.</li>
345</ul>
346<li>Extension loading supported added to winCE</li>
347<li>Allow constraint names on the DEFAULT clause in a table definition</li>
348<li>Added the ".bail" command to the command-line shell</li>
349<li>Make CSV (comma separate value) output from the command-line shell
350more closely aligned to accepted practice</li>
351<li>Experimental FTS2 module added</li>
352<li>Use sqlite3_mprintf() instead of strdup() to avoid libc dependencies</li>
353<li>VACUUM uses a temporary file in the official TEMP folder, not in the
354same directory as the original database</li>
355<li>The prefix on temporary filenames on windows is changed from "sqlite"
356to "etilqs".</li>
357}
358
359chng {2006 October 9 (3.3.8)} {
360<li>Support for full text search using the
361<a href="http://www.sqlite.org/cvstrac/wiki?p=FullTextIndex">FTS1 module</a>
362(beta)</li>
363<li>Added OS-X locking patches (beta - disabled by default)</li>
364<li>Introduce extended error codes and add error codes for various
365kinds of I/O errors.</li>
366<li>Added support for IF EXISTS on CREATE/DROP TRIGGER/VIEW</li>
367<li>Fix the regression test suite so that it works with Tcl8.5</li>
368<li>Enhance sqlite3_set_authorizer() to provide notification of calls to
369 SQL functions.</li>
370<li>Added experimental API: sqlite3_auto_extension()</li>
371<li>Various minor bug fixes</li>
372}
373
374chng {2006 August 12 (3.3.7)} {
375<li>Added support for
376<a href="http://www.sqlite.org/cvstrac/wiki?p=VirtualTables">virtual tables</a>
377(beta)</li>
378<li>Added support for
379<a href="http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions">
380dynamically loaded extensions</a> (beta)</li>
381<li>The
382<a href="capi3ref.html#sqlite3_interrupt">sqlite3_interrupt()</a>
383routine can be called for a different thread</li>
384<li>Added the <a href="lang_expr.html#match">MATCH</a> operator.</li>
385<li>The default file format is now 1.
386}
387
388chng {2006 June 6 (3.3.6)} {
389<li>Plays better with virus scanners on windows</li>
390<li>Faster :memory: databases</li>
391<li>Fix an obscure segfault in UTF-8 to UTF-16 conversions</li>
392<li>Added driver for OS/2</li>
393<li>Correct column meta-information returned for aggregate queries</li>
394<li>Enhanced output from EXPLAIN QUERY PLAN</li>
395<li>LIMIT 0 now works on subqueries</li>
396<li>Bug fixes and performance enhancements in the query optimizer</li>
397<li>Correctly handle NULL filenames in ATTACH and DETACH</li>
398<li>Inproved syntax error messages in the parser</li>
399<li>Fix type coercion rules for the IN operator</li>
400}
401
402chng {2006 April 5 (3.3.5)} {
403<li>CHECK constraints use conflict resolution algorithms correctly.</li>
404<li>The SUM() function throws an error on integer overflow.</li>
405<li>Choose the column names in a compound query from the left-most SELECT
406 instead of the right-most.</li>
407<li>The sqlite3_create_collation() function
408 honors the SQLITE_UTF16_ALIGNED flag.</li>
409<li>SQLITE_SECURE_DELETE compile-time option causes deletes to overwrite
410 old data with zeros.</li>
411<li>Detect integer overflow in abs().</li>
412<li>The random() function provides 64 bits of randomness instead of
413 only 32 bits.</li>
414<li>Parser detects and reports automaton stack overflow.</li>
415<li>Change the round() function to return REAL instead of TEXT.</li>
416<li>Allow WHERE clause terms on the left table of a LEFT OUTER JOIN to
417 contain aggregate subqueries.</li>
418<li>Skip over leading spaces in text to numeric conversions.</li>
419<li>Various minor bug and documentation typo fixes and
420 performance enhancements.</li>
421}
422
423chng {2006 February 11 (3.3.4)} {
424<li>Fix a blunder in the Unix mutex implementation that can lead to
425deadlock on multithreaded systems.</li>
426<li>Fix an alignment problem on 64-bit machines</li>
427<li>Added the fullfsync pragma.</li>
428<li>Fix an optimizer bug that could have caused some unusual LEFT OUTER JOINs
429to give incorrect results.</li>
430<li>The SUM function detects integer overflow and converts to accumulating
431an approximate result using floating point numbers</li>
432<li>Host parameter names can begin with '@' for compatibility with SQL Server.
433</li>
434<li>Other miscellaneous bug fixes</li>
435}
436
437chng {2006 January 31 (3.3.3)} {
438<li>Removed support for an ON CONFLICT clause on CREATE INDEX - it never
439worked correctly so this should not present any backward compatibility
440problems.</li>
441<li>Authorizer callback now notified of ALTER TABLE ADD COLUMN commands</li>
442<li>After any changes to the TEMP database schema, all prepared statements
443are invalidated and must be recreated using a new call to
444sqlite3_prepare()</li>
445<li>Other minor bug fixes in preparation for the first stable release
446of version 3.3</li>
447}
448
449chng {2006 January 24 (3.3.2 beta)} {
450<li>Bug fixes and speed improvements. Improved test coverage.</li>
451<li>Changes to the OS-layer interface: mutexes must now be recursive.</li>
452<li>Discontinue the use of thread-specific data for out-of-memory
453exception handling</li>
454}
455
456chng {2006 January 16 (3.3.1 alpha)} {
457<li>Countless bug fixes</li>
458<li>Speed improvements</li>
459<li>Database connections can now be used by multiple threads, not just
460the thread in which they were created.</li>
461}
462
463chng {2006 January 10 (3.3.0 alpha)} {
464<li>CHECK constraints</li>
465<li>IF EXISTS and IF NOT EXISTS clauses on CREATE/DROP TABLE/INDEX.</li>
466<li>DESC indices</li>
467<li>More efficient encoding of boolean values resulting in smaller database
468files</li>
469<li>More aggressive SQLITE_OMIT_FLOATING_POINT</li>
470<li>Separate INTEGER and REAL affinity</li>
471<li>Added a virtual function layer for the OS interface</li>
472<li>"exists" method added to the TCL interface</li>
473<li>Improved response to out-of-memory errors</li>
474<li>Database cache can be optionally shared between connections
475in the same thread</li>
476<li>Optional READ UNCOMMITTED isolation (instead of the default
477isolation level of SERIALIZABLE) and table level locking when
478database connections share a common cache.</li>
479}
480
481chng {2005 December 19 (3.2.8)} {
482<li>Fix an obscure bug that can cause database corruption under the
483following unusual circumstances: A large INSERT or UPDATE statement which
484is part of an even larger transaction fails due to a uniqueness contraint
485but the containing transaction commits.</li>
486}
487
488chng {2005 December 19 (2.8.17)} {
489<li>Fix an obscure bug that can cause database corruption under the
490following unusual circumstances: A large INSERT or UPDATE statement which
491is part of an even larger transaction fails due to a uniqueness contraint
492but the containing transaction commits.</li>
493}
494
495chng {2005 September 24 (3.2.7)} {
496<li>GROUP BY now considers NULLs to be equal again, as it should
497</li>
498<li>Now compiles on Solaris and OpenBSD and other Unix variants
499that lack the fdatasync() function</li>
500<li>Now compiles on MSVC++6 again</li>
501<li>Fix uninitialized variables causing malfunctions for various obscure
502queries</li>
503<li>Correctly compute a LEFT OUTER JOINs that is constrained on the
504left table only</li>
505}
506
507chng {2005 September 17 (3.2.6)} {
508<li>Fix a bug that can cause database corruption if a VACUUM (or
509 autovacuum) fails and is rolled back on a database that is
510 larger than 1GiB</li>
511<li>LIKE optiization now works for columns with COLLATE NOCASE</li>
512<li>ORDER BY and GROUP BY now use bounded memory</li>
513<li>Added support for COUNT(DISTINCT expr)</li>
514<li>Change the way SUM() handles NULL values in order to comply with
515 the SQL standard</li>
516<li>Use fdatasync() instead of fsync() where possible in order to speed
517 up commits slightly</li>
518<li>Use of the CROSS keyword in a join turns off the table reordering
519 optimization</li>
520<li>Added the experimental and undocumented EXPLAIN QUERY PLAN capability</li>
521<li>Use the unicode API in windows</li>
522}
523
524chng {2005 August 27 (3.2.5)} {
525<li>Fix a bug effecting DELETE and UPDATE statements that changed
526more than 40960 rows.</li>
527<li>Change the makefile so that it no longer requires GNUmake extensions</li>
528<li>Fix the --enable-threadsafe option on the configure script</li>
529<li>Fix a code generator bug that occurs when the left-hand side of an IN
530operator is constant and the right-hand side is a SELECT statement</li>
531<li>The PRAGMA synchronous=off statement now disables syncing of the
532master journal file in addition to the normal rollback journals</li>
533}
534
535chng {2005 August 24 (3.2.4)} {
536<li>Fix a bug introduced in the previous release
537that can cause a segfault while generating code
538for complex WHERE clauses.</li>
539<li>Allow floating point literals to begin or end with a decimal point.</li>
540}
541
542chng {2005 August 21 (3.2.3)} {
543<li>Added support for the CAST operator</li>
544<li>Tcl interface allows BLOB values to be transferred to user-defined
545functions</li>
546<li>Added the "transaction" method to the Tcl interface</li>
547<li>Allow the DEFAULT value of a column to call functions that have constant
548operands</li>
549<li>Added the ANALYZE command for gathering statistics on indices and
550using those statistics when picking an index in the optimizer</li>
551<li>Remove the limit (formerly 100) on the number of terms in the
552WHERE clause</li>
553<li>The right-hand side of the IN operator can now be a list of expressions
554instead of just a list of constants</li>
555<li>Rework the optimizer so that it is able to make better use of indices</li>
556<li>The order of tables in a join is adjusted automatically to make
557better use of indices</li>
558<li>The IN operator is now a candidate for optimization even if the left-hand
559side is not the left-most term of the index. Multiple IN operators can be
560used with the same index.</li>
561<li>WHERE clause expressions using BETWEEN and OR are now candidates
562for optimization</li>
563<li>Added the "case_sensitive_like" pragma and the SQLITE_CASE_SENSITIVE_LIKE
564compile-time option to set its default value to "on".</li>
565<li>Use indices to help with GLOB expressions and LIKE expressions too
566when the case_sensitive_like pragma is enabled</li>
567<li>Added support for grave-accent quoting for compatibility with MySQL</li>
568<li>Improved test coverage</li>
569<li>Dozens of minor bug fixes</li>
570}
571
572chng {2005 June 13 (3.2.2)} {
573<li>Added the sqlite3_db_handle() API</li>
574<li>Added the sqlite3_get_autocommit() API</li>
575<li>Added a REGEXP operator to the parser. There is no function to back
576up this operator in the standard build but users can add their own using
577sqlite3_create_function()</li>
578<li>Speed improvements and library footprint reductions.</li>
579<li>Fix byte alignment problems on 64-bit architectures.</li>
580<li>Many, many minor bug fixes and documentation updates.</li>
581}
582
583chng {2005 March 29 (3.2.1)} {
584<li>Fix a memory allocation error in the new ADD COLUMN comment.</li>
585<li>Documentation updates</li>
586}
587
588chng {2005 March 21 (3.2.0)} {
589<li>Added support for ALTER TABLE ADD COLUMN.</li>
590<li>Added support for the "T" separator in ISO-8601 date/time strings.</li>
591<li>Improved support for Cygwin.</li>
592<li>Numerous bug fixes and documentation updates.</li>
593}
594
595chng {2005 March 16 (3.1.6)} {
596<li>Fix a bug that could cause database corruption when inserting
597 record into tables with around 125 columns.</li>
598<li>sqlite3_step() is now much more likely to invoke the busy handler
599 and less likely to return SQLITE_BUSY.</li>
600<li>Fix memory leaks that used to occur after a malloc() failure.</li>
601}
602
603chng {2005 March 11 (3.1.5)} {
604<li>The ioctl on OS-X to control syncing to disk is F_FULLFSYNC,
605 not F_FULLSYNC. The previous release had it wrong.</li>
606}
607
608chng {2005 March 10 (3.1.4)} {
609<li>Fix a bug in autovacuum that could cause database corruption if
610a CREATE UNIQUE INDEX fails because of a constraint violation.
611This problem only occurs if the new autovacuum feature introduced in
612version 3.1 is turned on.</li>
613<li>The F_FULLSYNC ioctl (currently only supported on OS-X) is disabled
614if the synchronous pragma is set to something other than "full".</li>
615<li>Add additional forward compatibility to the future version 3.2 database
616file format.</li>
617<li>Fix a bug in WHERE clauses of the form (rowid<'2')</li>
618<li>New SQLITE_OMIT_... compile-time options added</li>
619<li>Updates to the man page</li>
620<li>Remove the use of strcasecmp() from the shell</li>
621<li>Windows DLL exports symbols Tclsqlite_Init and Sqlite_Init</li>
622}
623
624chng {2005 February 19 (3.1.3)} {
625<li>Fix a problem with VACUUM on databases from which tables containing
626AUTOINCREMENT have been dropped.</li>
627<li>Add forward compatibility to the future version 3.2 database file
628format.</li>
629<li>Documentation updates</li>
630}
631
632chng {2005 February 15 (3.1.2)} {
633<li>Fix a bug that can lead to database corruption if there are two
634open connections to the same database and one connection does a VACUUM
635and the second makes some change to the database.</li>
636<li>Allow "?" parameters in the LIMIT clause.</li>
637<li>Fix VACUUM so that it works with AUTOINCREMENT.</li>
638<li>Fix a race condition in AUTOVACUUM that can lead to corrupt databases</li>
639<li>Add a numeric version number to the sqlite3.h include file.</li>
640<li>Other minor bug fixes and performance enhancements.</li>
641}
642
643chng {2005 February 15 (2.8.16)} {
644<li>Fix a bug that can lead to database corruption if there are two
645open connections to the same database and one connection does a VACUUM
646and the second makes some change to the database.</li>
647<li>Correctly handle quoted names in CREATE INDEX statements.</li>
648<li>Fix a naming conflict between sqlite.h and sqlite3.h.</li>
649<li>Avoid excess heap usage when copying expressions.</li>
650<li>Other minor bug fixes.</li>
651}
652
653chng {2005 February 1 (3.1.1 BETA)} {
654<li>Automatic caching of prepared statements in the TCL interface</li>
655<li>ATTACH and DETACH as well as some other operations cause existing
656 prepared statements to expire.</li>
657<li>Numerious minor bug fixes</li>
658}
659
660chng {2005 January 21 (3.1.0 ALPHA)} {
661<li>Autovacuum support added</li>
662<li>CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP added</li>
663<li>Support for the EXISTS clause added.</li>
664<li>Support for correlated subqueries added.</li>
665<li>Added the ESCAPE clause on the LIKE operator.</li>
666<li>Support for ALTER TABLE ... RENAME TABLE ... added</li>
667<li>AUTOINCREMENT keyword supported on INTEGER PRIMARY KEY</li>
668<li>Many SQLITE_OMIT_ macros inserts to omit features at compile-time
669 and reduce the library footprint.</li>
670<li>The REINDEX command was added.</li>
671<li>The engine no longer consults the main table if it can get
672 all the information it needs from an index.</li>
673<li>Many nuisance bugs fixed.</li>
674}
675
676chng {2004 October 11 (3.0.8)} {
677<li>Add support for DEFERRED, IMMEDIATE, and EXCLUSIVE transactions.</li>
678<li>Allow new user-defined functions to be created when there are
679already one or more precompiled SQL statements.<li>
680<li>Fix portability problems for Mingw/MSYS.</li>
681<li>Fix a byte alignment problem on 64-bit Sparc machines.</li>
682<li>Fix the ".import" command of the shell so that it ignores \r
683characters at the end of lines.</li>
684<li>The "csv" mode option in the shell puts strings inside double-quotes.</li>
685<li>Fix typos in documentation.</li>
686<li>Convert array constants in the code to have type "const".</li>
687<li>Numerous code optimizations, specially optimizations designed to
688make the code footprint smaller.</li>
689}
690
691chng {2004 September 18 (3.0.7)} {
692<li>The BTree module allocates large buffers using malloc() instead of
693 off of the stack, in order to play better on machines with limited
694 stack space.</li>
695<li>Fixed naming conflicts so that versions 2.8 and 3.0 can be
696 linked and used together in the same ANSI-C source file.</li>
697<li>New interface: sqlite3_bind_parameter_index()</li>
698<li>Add support for wildcard parameters of the form: "?nnn"</li>
699<li>Fix problems found on 64-bit systems.</li>
700<li>Removed encode.c file (containing unused routines) from the
701 version 3.0 source tree.</li>
702<li>The sqlite3_trace() callbacks occur before each statement
703 is executed, not when the statement is compiled.</li>
704<li>Makefile updates and miscellaneous bug fixes.</li>
705}
706
707chng {2004 September 02 (3.0.6 beta)} {
708<li>Better detection and handling of corrupt database files.</li>
709<li>The sqlite3_step() interface returns SQLITE_BUSY if it is unable
710 to commit a change because of a lock</li>
711<li>Combine the implementations of LIKE and GLOB into a single
712 pattern-matching subroutine.</li>
713<li>Miscellaneous code size optimizations and bug fixes</li>
714}
715
716chng {2004 August 29 (3.0.5 beta)} {
717<li>Support for ":AAA" style bind parameter names.</li>
718<li>Added the new sqlite3_bind_parameter_name() interface.</li>
719<li>Support for TCL variable names embedded in SQL statements in the
720 TCL bindings.</li>
721<li>The TCL bindings transfer data without necessarily doing a conversion
722 to a string.</li>
723<li>The database for TEMP tables is not created until it is needed.</li>
724<li>Add the ability to specify an alternative temporary file directory
725 using the "sqlite_temp_directory" global variable.</li>
726<li>A compile-time option (SQLITE_BUSY_RESERVED_LOCK) causes the busy
727 handler to be called when there is contention for a RESERVED lock.</li>
728<li>Various bug fixes and optimizations</li>
729}
730
731chng {2004 August 8 (3.0.4 beta)} {
732<li>CREATE TABLE and DROP TABLE now work correctly as prepared statements.</li>
733<li>Fix a bug in VACUUM and UNIQUE indices.</li>
734<li>Add the ".import" command to the command-line shell.</li>
735<li>Fix a bug that could cause index corruption when an attempt to
736 delete rows of a table is blocked by a pending query.</li>
737<li>Library size optimizations.</li>
738<li>Other minor bug fixes.</li>
739}
740
741chng {2004 July 22 (2.8.15)} {
742<li>This is a maintenance release only. Various minor bugs have been
743fixed and some portability enhancements are added.</li>
744}
745
746chng {2004 July 22 (3.0.3 beta)} {
747<li>The second beta release for SQLite 3.0.</li>
748<li>Add support for "PRAGMA page_size" to adjust the page size of
749the database.</li>
750<li>Various bug fixes and documentation updates.</li>
751}
752
753chng {2004 June 30 (3.0.2 beta)} {
754<li>The first beta release for SQLite 3.0.</li>
755}
756
757chng {2004 June 22 (3.0.1 alpha)} {
758<li><font color="red"><b>
759 *** Alpha Release - Research And Testing Use Only ***</b></font>
760<li>Lots of bug fixes.</li>
761}
762
763chng {2004 June 18 (3.0.0 alpha)} {
764<li><font color="red"><b>
765 *** Alpha Release - Research And Testing Use Only ***</b></font>
766<li>Support for internationalization including UTF-8, UTF-16, and
767 user defined collating sequences.</li>
768<li>New file format that is 25% to 35% smaller for typical use.</li>
769<li>Improved concurrency.</li>
770<li>Atomic commits for ATTACHed databases.</li>
771<li>Remove cruft from the APIs.</li>
772<li>BLOB support.</li>
773<li>64-bit rowids.</li>
774<li><a href="version3.html">More information</a>.
775}
776
777chng {2004 June 9 (2.8.14)} {
778<li>Fix the min() and max() optimizer so that it works when the FROM
779 clause consists of a subquery.</li>
780<li>Ignore extra whitespace at the end of of "." commands in the shell.</li>
781<li>Bundle sqlite_encode_binary() and sqlite_decode_binary() with the
782 library.</li>
783<li>The TEMP_STORE and DEFAULT_TEMP_STORE pragmas now work.</li>
784<li>Code changes to compile cleanly using OpenWatcom.</li>
785<li>Fix VDBE stack overflow problems with INSTEAD OF triggers and
786 NULLs in IN operators.</li>
787<li>Add the global variable sqlite_temp_directory which if set defines the
788 directory in which temporary files are stored.</li>
789<li>sqlite_interrupt() plays well with VACUUM.</li>
790<li>Other minor bug fixes.</li>
791}
792
793chng {2004 March 8 (2.8.13)} {
794<li>Refactor parts of the code in order to make the code footprint
795 smaller. The code is now also a little bit faster.</li>
796<li>sqlite_exec() is now implemented as a wrapper around sqlite_compile()
797 and sqlite_step().</li>
798<li>The built-in min() and max() functions now honor the difference between
799 NUMERIC and TEXT datatypes. Formerly, min() and max() always assumed
800 their arguments were of type NUMERIC.</li>
801<li>New HH:MM:SS modifier to the built-in date/time functions.</li>
802<li>Experimental sqlite_last_statement_changes() API added. Fixed the
803 the last_insert_rowid() function so that it works correctly with
804 triggers.</li>
805<li>Add functions prototypes for the database encryption API.</li>
806<li>Fix several nuisance bugs.</li>
807}
808
809chng {2004 February 8 (2.8.12)} {
810<li>Fix a bug that will might corrupt the rollback journal if a power failure
811 or external program halt occurs in the middle of a COMMIT. The corrupt
812 journal can lead to database corruption when it is rolled back.</li>
813<li>Reduce the size and increase the speed of various modules, especially
814 the virtual machine.</li>
815<li>Allow "&lt;expr&gt; IN &lt;table&gt;" as a shorthand for
816 "&lt;expr&gt; IN (SELECT * FROM &lt;table&gt;".</li>
817<li>Optimizations to the sqlite_mprintf() routine.</li>
818<li>Make sure the MIN() and MAX() optimizations work within subqueries.</li>
819}
820
821chng {2004 January 14 (2.8.11)} {
822<li>Fix a bug in how the IN operator handles NULLs in subqueries. The bug
823 was introduced by the previous release.</li>
824}
825
826chng {2004 January 13 (2.8.10)} {
827<li>Fix a potential database corruption problem on Unix caused by the fact
828 that all posix advisory locks are cleared whenever you close() a file.
829 The work around it to embargo all close() calls while locks are
830 outstanding.</li>
831<li>Performance enhancements on some corner cases of COUNT(*).</li>
832<li>Make sure the in-memory backend response sanely if malloc() fails.</li>
833<li>Allow sqlite_exec() to be called from within user-defined SQL
834 functions.</li>
835<li>Improved accuracy of floating-point conversions using "long double".</li>
836<li>Bug fixes in the experimental date/time functions.</li>
837}
838
839chng {2004 January 5 (2.8.9)} {
840<li>Fix a 32-bit integer overflow problem that could result in corrupt
841 indices in a database if large negative numbers (less than -2147483648)
842 were inserted into a indexed numeric column.</li>
843<li>Fix a locking problem on multi-threaded Linux implementations.</li>
844<li>Always use "." instead of "," as the decimal point even if the locale
845 requests ",".</li>
846<li>Added UTC to localtime conversions to the experimental date/time
847 functions.</li>
848<li>Bug fixes to date/time functions.</li>
849}
850
851chng {2003 December 17 (2.8.8)} {
852<li>Fix a critical bug introduced into 2.8.0 which could cause
853 database corruption.</li>
854<li>Fix a problem with 3-way joins that do not use indices</li>
855<li>The VACUUM command now works with the non-callback API</li>
856<li>Improvements to the "PRAGMA integrity_check" command</li>
857}
858
859chng {2003 December 4 (2.8.7)} {
860<li>Added experimental sqlite_bind() and sqlite_reset() APIs.</li>
861<li>If the name of the database is an empty string, open a new database
862 in a temporary file that is automatically deleted when the database
863 is closed.</li>
864<li>Performance enhancements in the lemon-generated parser</li>
865<li>Experimental date/time functions revised.</li>
866<li>Disallow temporary indices on permanent tables.</li>
867<li>Documentation updates and typo fixes</li>
868<li>Added experimental sqlite_progress_handler() callback API</li>
869<li>Removed support for the Oracle8 outer join syntax.</li>
870<li>Allow GLOB and LIKE operators to work as functions.</li>
871<li>Other minor documentation and makefile changes and bug fixes.</li>
872}
873
874chng {2003 August 21 (2.8.6)} {
875<li>Moved the CVS repository to www.sqlite.org</li>
876<li>Update the NULL-handling documentation.</li>
877<li>Experimental date/time functions added.</li>
878<li>Bug fix: correctly evaluate a view of a view without segfaulting.</li>
879<li>Bug fix: prevent database corruption if you dropped a
880 trigger that had the same name as a table.</li>
881<li>Bug fix: allow a VACUUM (without segfaulting) on an empty
882 database after setting the EMPTY_RESULT_CALLBACKS pragma.</li>
883<li>Bug fix: if an integer value will not fit in a 32-bit int, store it in
884 a double instead.</li>
885<li>Bug fix: Make sure the journal file directory entry is committed to disk
886 before writing the database file.</li>
887}
888
889chng {2003 July 22 (2.8.5)} {
890<li>Make LIMIT work on a compound SELECT statement.</li>
891<li>LIMIT 0 now shows no rows. Use LIMIT -1 to see all rows.</li>
892<li>Correctly handle comparisons between an INTEGER PRIMARY KEY and
893 a floating point number.</li>
894<li>Fix several important bugs in the new ATTACH and DETACH commands.</li>
895<li>Updated the <a href="nulls.html">NULL-handling document</a>.</li>
896<li>Allow NULL arguments in sqlite_compile() and sqlite_step().</li>
897<li>Many minor bug fixes</li>
898}
899
900chng {2003 June 29 (2.8.4)} {
901<li>Enhanced the "PRAGMA integrity_check" command to verify indices.</li>
902<li>Added authorization hooks for the new ATTACH and DETACH commands.</li>
903<li>Many documentation updates</li>
904<li>Many minor bug fixes</li>
905}
906
907chng {2003 June 4 (2.8.3)} {
908<li>Fix a problem that will corrupt the indices on a table if you
909 do an INSERT OR REPLACE or an UPDATE OR REPLACE on a table that
910 contains an INTEGER PRIMARY KEY plus one or more indices.</li>
911<li>Fix a bug in windows locking code so that locks work correctly
912 when simultaneously accessed by Win95 and WinNT systems.</li>
913<li>Add the ability for INSERT and UPDATE statements to refer to the
914 "rowid" (or "_rowid_" or "oid") columns.</li>
915<li>Other important bug fixes</li>
916}
917
918chng {2003 May 17 (2.8.2)} {
919<li>Fix a problem that will corrupt the database file if you drop a
920 table from the main database that has a TEMP index.</li>
921}
922
923chng {2003 May 16 (2.8.1)} {
924<li>Reactivated the VACUUM command that reclaims unused disk space in
925 a database file.</li>
926<li>Added the ATTACH and DETACH commands to allow interacting with multiple
927 database files at the same time.</li>
928<li>Added support for TEMP triggers and indices.</li>
929<li>Added support for in-memory databases.</li>
930<li>Removed the experimental sqlite_open_aux_file(). Its function is
931 subsumed in the new ATTACH command.</li>
932<li>The precedence order for ON CONFLICT clauses was changed so that
933 ON CONFLICT clauses on BEGIN statements have a higher precedence than
934 ON CONFLICT clauses on constraints.
935<li>Many, many bug fixes and compatibility enhancements.</li>
936}
937
938chng {2003 Feb 16 (2.8.0)} {
939<li>Modified the journal file format to make it more resistant to corruption
940 that can occur after an OS crash or power failure.</li>
941<li>Added a new C/C++ API that does not use callback for returning data.</li>
942}
943
944chng {2003 Jan 25 (2.7.6)} {
945<li>Performance improvements. The library is now much faster.</li>
946<li>Added the <b>sqlite_set_authorizer()</b> API. Formal documentation has
947 not been written - see the source code comments for instructions on
948 how to use this function.</li>
949<li>Fix a bug in the GLOB operator that was preventing it from working
950 with upper-case letters.</li>
951<li>Various minor bug fixes.</li>
952}
953
954chng {2002 Dec 27 (2.7.5)} {
955<li>Fix an uninitialized variable in pager.c which could (with a probability
956 of about 1 in 4 billion) result in a corrupted database.</li>
957}
958
959chng {2002 Dec 17 (2.7.4)} {
960<li>Database files can now grow to be up to 2^41 bytes. The old limit
961 was 2^31 bytes.</li>
962<li>The optimizer will now scan tables in the reverse if doing so will
963 satisfy an ORDER BY ... DESC clause.</li>
964<li>The full pathname of the database file is now remembered even if
965 a relative path is passed into sqlite_open(). This allows
966 the library to continue operating correctly after a chdir().</li>
967<li>Speed improvements in the VDBE.</li>
968<li>Lots of little bug fixes.</li>
969}
970
971chng {2002 Oct 30 (2.7.3)} {
972<li>Various compiler compatibility fixes.</li>
973<li>Fix a bug in the "expr IN ()" operator.</li>
974<li>Accept column names in parentheses.</li>
975<li>Fix a problem with string memory management in the VDBE</li>
976<li>Fix a bug in the "table_info" pragma"</li>
977<li>Export the sqlite_function_type() API function in the Windows DLL</li>
978<li>Fix locking behavior under windows</li>
979<li>Fix a bug in LEFT OUTER JOIN</li>
980}
981
982chng {2002 Sep 25 (2.7.2)} {
983<li>Prevent journal file overflows on huge transactions.</li>
984<li>Fix a memory leak that occurred when sqlite_open() failed.</li>
985<li>Honor the ORDER BY and LIMIT clause of a SELECT even if the
986 result set is used for an INSERT.</li>
987<li>Do not put write locks on the file used to hold TEMP tables.</li>
988<li>Added documentation on SELECT DISTINCT and on how SQLite handles NULLs.</li>
989<li>Fix a problem that was causing poor performance when many thousands
990 of SQL statements were executed by a single sqlite_exec() call.</li>
991}
992
993chng {2002 Aug 31 (2.7.1)} {
994<li>Fix a bug in the ORDER BY logic that was introduced in version 2.7.0</li>
995<li>C-style comments are now accepted by the tokenizer.</li>
996<li>INSERT runs a little faster when the source is a SELECT statement.</li>
997}
998
999chng {2002 Aug 25 (2.7.0)} {
1000<li>Make a distinction between numeric and text values when sorting.
1001 Text values sort according to memcmp(). Numeric values sort in
1002 numeric order.</li>
1003<li>Allow multiple simultaneous readers under windows by simulating
1004 the reader/writers locks that are missing from Win95/98/ME.</li>
1005<li>An error is now returned when trying to start a transaction if
1006 another transaction is already active.</li>
1007}
1008
1009chng {2002 Aug 12 (2.6.3)} {
1010<li>Add the ability to read both little-endian and big-endian databases.
1011 So database created under SunOS or MacOSX can be read and written
1012 under Linux or Windows and vice versa.</li>
1013<li>Convert to the new website: http://www.sqlite.org/</li>
1014<li>Allow transactions to span Linux Threads</li>
1015<li>Bug fix in the processing of the ORDER BY clause for GROUP BY queries</li>
1016}
1017
1018chng {2002 Jly 30 (2.6.2)} {
1019<li>Text files read by the COPY command can now have line terminators
1020 of LF, CRLF, or CR.</li>
1021<li>SQLITE_BUSY is handled correctly if encountered during database
1022 initialization.</li>
1023<li>Fix to UPDATE triggers on TEMP tables.</li>
1024<li>Documentation updates.</li>
1025}
1026
1027chng {2002 Jly 19 (2.6.1)} {
1028<li>Include a static string in the library that responds to the RCS
1029 "ident" command and which contains the library version number.</li>
1030<li>Fix an assertion failure that occurred when deleting all rows of
1031 a table with the "count_changes" pragma turned on.</li>
1032<li>Better error reporting when problems occur during the automatic
1033 2.5.6 to 2.6.0 database format upgrade.</li>
1034}
1035
1036chng {2002 Jly 17 (2.6.0)} {
1037<li>Change the format of indices to correct a design flaw the originated
1038 with version 2.1.0. <font color="red">*** This is an incompatible
1039 file format change ***</font> When version 2.6.0 or later of the
1040 library attempts to open a database file created by version 2.5.6 or
1041 earlier, it will automatically and irreversibly convert the file format.
1042 <b>Make backup copies of older database files before opening them with
1043 version 2.6.0 of the library.</b>
1044 </li>
1045}
1046
1047chng {2002 Jly 7 (2.5.6)} {
1048<li>Fix more problems with rollback. Enhance the test suite to exercise
1049 the rollback logic extensively in order to prevent any future problems.
1050 </li>
1051}
1052
1053chng {2002 Jly 6 (2.5.5)} {
1054<li>Fix a bug which could cause database corruption during a rollback.
1055 This bugs was introduced in version 2.4.0 by the freelist
1056 optimization of checking [410].</li>
1057<li>Fix a bug in aggregate functions for VIEWs.</li>
1058<li>Other minor changes and enhancements.</li>
1059}
1060
1061chng {2002 Jly 1 (2.5.4)} {
1062<li>Make the "AS" keyword optional again.</li>
1063<li>The datatype of columns now appear in the 4th argument to the
1064 callback.</li>
1065<li>Added the <b>sqlite_open_aux_file()</b> API, though it is still
1066 mostly undocumented and untested.</li>
1067<li>Added additional test cases and fixed a few bugs that those
1068 test cases found.</li>
1069}
1070
1071chng {2002 Jun 24 (2.5.3)} {
1072<li>Bug fix: Database corruption can occur due to the optimization
1073 that was introduced in version 2.4.0 (check-in [410]). The problem
1074 should now be fixed. The use of versions 2.4.0 through 2.5.2 is
1075 not recommended.</li>
1076}
1077
1078chng {2002 Jun 24 (2.5.2)} {
1079<li>Added the new <b>SQLITE_TEMP_MASTER</b> table which records the schema
1080 for temporary tables in the same way that <b>SQLITE_MASTER</b> does for
1081 persistent tables.</li>
1082<li>Added an optimization to UNION ALL</li>
1083<li>Fixed a bug in the processing of LEFT OUTER JOIN</li>
1084<li>The LIMIT clause now works on subselects</li>
1085<li>ORDER BY works on subselects</li>
1086<li>There is a new TypeOf() function used to determine if an expression
1087 is numeric or text.</li>
1088<li>Autoincrement now works for INSERT from a SELECT.</li>
1089}
1090
1091chng {2002 Jun 19 (2.5.1)} {
1092<li>The query optimizer now attempts to implement the ORDER BY clause
1093 using an index. Sorting is still used if not suitable index is
1094 available.</li>
1095}
1096
1097chng {2002 Jun 17 (2.5.0)} {
1098<li>Added support for row triggers.</li>
1099<li>Added SQL-92 compliant handling of NULLs.</li>
1100<li>Add support for the full SQL-92 join syntax and LEFT OUTER JOINs.</li>
1101<li>Double-quoted strings interpreted as column names not text literals.</li>
1102<li>Parse (but do not implement) foreign keys.</li>
1103<li>Performance improvements in the parser, pager, and WHERE clause code
1104 generator.</li>
1105<li>Make the LIMIT clause work on subqueries. (ORDER BY still does not
1106 work, though.)</li>
1107<li>Added the "%Q" expansion to sqlite_*_printf().</li>
1108<li>Bug fixes too numerous to mention (see the change log).</li>
1109}
1110
1111chng {2002 May 09 (2.4.12)} {
1112<li>Added logic to detect when the library API routines are called out
1113 of sequence.</li>
1114}
1115
1116chng {2002 May 08 (2.4.11)} {
1117<li>Bug fix: Column names in the result set were not being generated
1118 correctly for some (rather complex) VIEWs. This could cause a
1119 segfault under certain circumstances.</li>
1120}
1121
1122chng {2002 May 02 (2.4.10)} {
1123<li>Bug fix: Generate correct column headers when a compound SELECT is used
1124 as a subquery.</li>
1125<li>Added the sqlite_encode_binary() and sqlite_decode_binary() functions to
1126 the source tree. But they are not yet linked into the library.</li>
1127<li>Documentation updates.</li>
1128<li>Export the sqlite_changes() function from windows DLLs.</li>
1129<li>Bug fix: Do not attempt the subquery flattening optimization on queries
1130 that lack a FROM clause. To do so causes a segfault.</li>
1131}
1132
1133chng {2002 Apr 21 (2.4.9)} {
1134<li>Fix a bug that was causing the precompiled binary of SQLITE.EXE to
1135 report "out of memory" under Windows 98.</li>
1136}
1137
1138chng {2002 Apr 20 (2.4.8)} {
1139<li>Make sure VIEWs are created after their corresponding TABLEs in the
1140 output of the <b>.dump</b> command in the shell.</li>
1141<li>Speed improvements: Do not do synchronous updates on TEMP tables.</li>
1142<li>Many improvements and enhancements to the shell.</li>
1143<li>Make the GLOB and LIKE operators functions that can be overridden
1144 by a programmer. This allows, for example, the LIKE operator to
1145 be changed to be case sensitive.</li>
1146}
1147
1148chng {2002 Apr 06 (2.4.7)} {
1149<li>Add the ability to put TABLE.* in the column list of a
1150 SELECT statement.</li>
1151<li>Permit SELECT statements without a FROM clause.</li>
1152<li>Added the <b>last_insert_rowid()</b> SQL function.</li>
1153<li>Do not count rows where the IGNORE conflict resolution occurs in
1154 the row count.</li>
1155<li>Make sure functions expressions in the VALUES clause of an INSERT
1156 are correct.</li>
1157<li>Added the <b>sqlite_changes()</b> API function to return the number
1158 of row that changed in the most recent operation.</li>
1159}
1160
1161chng {2002 Apr 02 (2.4.6)} {
1162<li>Bug fix: Correctly handle terms in the WHERE clause of a join that
1163 do not contain a comparison operator.</li>
1164}
1165
1166chng {2002 Apr 01 (2.4.5)} {
1167<li>Bug fix: Correctly handle functions that appear in the WHERE clause
1168 of a join.</li>
1169<li>When the PRAGMA vdbe_trace=ON is set, correctly print the P3 operand
1170 value when it is a pointer to a structure rather than a pointer to
1171 a string.</li>
1172<li>When inserting an explicit NULL into an INTEGER PRIMARY KEY, convert
1173 the NULL value into a unique key automatically.</li>
1174}
1175
1176chng {2002 Mar 24 (2.4.4)} {
1177<li>Allow "VIEW" to be a column name</li>
1178<li>Added support for CASE expressions (patch from Dan Kennedy)</li>
1179<li>Added RPMS to the delivery (patches from Doug Henry)</li>
1180<li>Fix typos in the documentation</li>
1181<li>Cut over configuration management to a new CVS repository with
1182 its own CVSTrac bug tracking system.</li>
1183}
1184
1185chng {2002 Mar 22 (2.4.3)} {
1186<li>Fix a bug in SELECT that occurs when a compound SELECT is used as a
1187 subquery in the FROM of a SELECT.</li>
1188<li>The <b>sqlite_get_table()</b> function now returns an error if you
1189 give it two or more SELECTs that return different numbers of columns.</li>
1190}
1191
1192chng {2002 Mar 14 (2.4.2)} {
1193<li>Bug fix: Fix an assertion failure that occurred when ROWID was a column
1194 in a SELECT statement on a view.</li>
1195<li>Bug fix: Fix an uninitialized variable in the VDBE that would could an
1196 assert failure.</li>
1197<li>Make the os.h header file more robust in detecting when the compile is
1198 for windows and when it is for unix.</li>
1199}
1200
1201chng {2002 Mar 13 (2.4.1)} {
1202<li>Using an unnamed subquery in a FROM clause would cause a segfault.</li>
1203<li>The parser now insists on seeing a semicolon or the end of input before
1204 executing a statement. This avoids an accidental disaster if the
1205 WHERE keyword is misspelled in an UPDATE or DELETE statement.</li>
1206}
1207
1208
1209chng {2002 Mar 10 (2.4.0)} {
1210<li>Change the name of the sanity_check PRAGMA to <b>integrity_check</b>
1211 and make it available in all compiles.</li>
1212<li>SELECT min() or max() of an indexed column with no WHERE or GROUP BY
1213 clause is handled as a special case which avoids a complete table scan.</li>
1214<li>Automatically generated ROWIDs are now sequential.</li>
1215<li>Do not allow dot-commands of the command-line shell to occur in the
1216 middle of a real SQL command.</li>
1217<li>Modifications to the "lemon" parser generator so that the parser tables
1218 are 4 times smaller.</li>
1219<li>Added support for user-defined functions implemented in C.</li>
1220<li>Added support for new functions: <b>coalesce()</b>, <b>lower()</b>,
1221 <b>upper()</b>, and <b>random()</b>
1222<li>Added support for VIEWs.</li>
1223<li>Added the subquery flattening optimizer.</li>
1224<li>Modified the B-Tree and Pager modules so that disk pages that do not
1225 contain real data (free pages) are not journaled and are not
1226 written from memory back to the disk when they change. This does not
1227 impact database integrity, since the
1228 pages contain no real data, but it does make large INSERT operations
1229 about 2.5 times faster and large DELETEs about 5 times faster.</li>
1230<li>Made the CACHE_SIZE pragma persistent</li>
1231<li>Added the SYNCHRONOUS pragma</li>
1232<li>Fixed a bug that was causing updates to fail inside of transactions when
1233 the database contained a temporary table.</li>
1234}
1235
1236chng {2002 Feb 18 (2.3.3)} {
1237<li>Allow identifiers to be quoted in square brackets, for compatibility
1238 with MS-Access.</li>
1239<li>Added support for sub-queries in the FROM clause of a SELECT.</li>
1240<li>More efficient implementation of sqliteFileExists() under Windows.
1241 (by Joel Luscy)</li>
1242<li>The VALUES clause of an INSERT can now contain expressions, including
1243 scalar SELECT clauses.</li>
1244<li>Added support for CREATE TABLE AS SELECT</li>
1245<li>Bug fix: Creating and dropping a table all within a single
1246 transaction was not working.</li>
1247}
1248
1249chng {2002 Feb 14 (2.3.2)} {
1250<li>Bug fix: There was an incorrect assert() in pager.c. The real code was
1251 all correct (as far as is known) so everything should work OK if you
1252 compile with -DNDEBUG=1. When asserts are not disabled, there
1253 could be a fault.</li>
1254}
1255
1256chng {2002 Feb 13 (2.3.1)} {
1257<li>Bug fix: An assertion was failing if "PRAGMA full_column_names=ON;" was
1258 set and you did a query that used a rowid, like this:
1259 "SELECT rowid, * FROM ...".</li>
1260}
1261
1262chng {2002 Jan 30 (2.3.0)} {
1263<li>Fix a serious bug in the INSERT command which was causing data to go
1264 into the wrong columns if the data source was a SELECT and the INSERT
1265 clauses specified its columns in some order other than the default.</li>
1266<li>Added the ability to resolve constraint conflicts is ways other than
1267 an abort and rollback. See the documentation on the "ON CONFLICT"
1268 clause for details.</li>
1269<li>Temporary files are now automatically deleted by the operating system
1270 when closed. There are no more dangling temporary files on a program
1271 crash. (If the OS crashes, fsck will delete the file after reboot
1272 under Unix. I do not know what happens under Windows.)</li>
1273<li>NOT NULL constraints are honored.</li>
1274<li>The COPY command puts NULLs in columns whose data is '\N'.</li>
1275<li>In the COPY command, backslash can now be used to escape a newline.</li>
1276<li>Added the SANITY_CHECK pragma.</li>
1277}
1278
1279chng {2002 Jan 28 (2.2.5)} {
1280<li>Important bug fix: the IN operator was not working if either the
1281 left-hand or right-hand side was derived from an INTEGER PRIMARY KEY.</li>
1282<li>Do not escape the backslash '\' character in the output of the
1283 <b>sqlite</b> command-line access program.</li>
1284}
1285
1286chng {2002 Jan 22 (2.2.4)} {
1287<li>The label to the right of an AS in the column list of a SELECT can now
1288 be used as part of an expression in the WHERE, ORDER BY, GROUP BY, and/or
1289 HAVING clauses.</li>
1290<li>Fix a bug in the <b>-separator</b> command-line option to the <b>sqlite</b>
1291 command.</li>
1292<li>Fix a problem with the sort order when comparing upper-case strings against
1293 characters greater than 'Z' but less than 'a'.</li>
1294<li>Report an error if an ORDER BY or GROUP BY expression is constant.</li>
1295}
1296
1297chng {2002 Jan 16 (2.2.3)} {
1298<li>Fix warning messages in VC++ 7.0. (Patches from nicolas352001)</li>
1299<li>Make the library thread-safe. (The code is there and appears to work
1300 but has not been stressed.)</li>
1301<li>Added the new <b>sqlite_last_insert_rowid()</b> API function.</li>
1302}
1303
1304chng {2002 Jan 13 (2.2.2)} {
1305<li>Bug fix: An assertion was failing when a temporary table with an index
1306 had the same name as a permanent table created by a separate process.</li>
1307<li>Bug fix: Updates to tables containing an INTEGER PRIMARY KEY and an
1308 index could fail.</li>
1309}
1310
1311chng {2002 Jan 9 (2.2.1)} {
1312<li>Bug fix: An attempt to delete a single row of a table with a WHERE
1313 clause of "ROWID=x" when no such rowid exists was causing an error.</li>
1314<li>Bug fix: Passing in a NULL as the 3rd parameter to <b>sqlite_open()</b>
1315 would sometimes cause a coredump.</li>
1316<li>Bug fix: DROP TABLE followed by a CREATE TABLE with the same name all
1317 within a single transaction was causing a coredump.</li>
1318<li>Makefile updates from A. Rottmann</li>
1319}
1320
1321chng {2001 Dec 22 (2.2.0)} {
1322<li>Columns of type INTEGER PRIMARY KEY are actually used as the primary
1323 key in underlying B-Tree representation of the table.</li>
1324<li>Several obscure, unrelated bugs were found and fixed while
1325 implemented the integer primary key change of the previous bullet.</li>
1326<li>Added the ability to specify "*" as part of a larger column list in
1327 the result section of a SELECT statement. For example:
1328 <nobr>"<b>SELECT rowid, * FROM table1;</b>"</nobr>.</li>
1329<li>Updates to comments and documentation.</li>
1330}
1331
1332chng {2001 Dec 14 (2.1.7)} {
1333<li>Fix a bug in <b>CREATE TEMPORARY TABLE</b> which was causing the
1334 table to be initially allocated in the main database file instead
1335 of in the separate temporary file. This bug could cause the library
1336 to suffer an assertion failure and it could cause "page leaks" in the
1337 main database file.
1338<li>Fix a bug in the b-tree subsystem that could sometimes cause the first
1339 row of a table to be repeated during a database scan.</li>
1340}
1341
1342chng {2001 Dec 14 (2.1.6)} {
1343<li>Fix the locking mechanism yet again to prevent
1344 <b>sqlite_exec()</b> from returning SQLITE_PROTOCOL
1345 unnecessarily. This time the bug was a race condition in
1346 the locking code. This change effects both POSIX and Windows users.</li>
1347}
1348
1349chng {2001 Dec 6 (2.1.5)} {
1350<li>Fix for another problem (unrelated to the one fixed in 2.1.4)
1351 that sometimes causes <b>sqlite_exec()</b> to return SQLITE_PROTOCOL
1352 unnecessarily. This time the bug was
1353 in the POSIX locking code and should not effect windows users.</li>
1354}
1355
1356chng {2001 Dec 4 (2.1.4)} {
1357<li>Sometimes <b>sqlite_exec()</b> would return SQLITE_PROTOCOL when it
1358 should have returned SQLITE_BUSY.</li>
1359<li>The fix to the previous bug uncovered a deadlock which was also
1360 fixed.</li>
1361<li>Add the ability to put a single .command in the second argument
1362 of the sqlite shell</li>
1363<li>Updates to the FAQ</li>
1364}
1365
1366chng {2001 Nov 23 (2.1.3)} {
1367<li>Fix the behavior of comparison operators
1368 (ex: "<b>&lt</b>", "<b>==</b>", etc.)
1369 so that they are consistent with the order of entries in an index.</li>
1370<li>Correct handling of integers in SQL expressions that are larger than
1371 what can be represented by the machine integer.</li>
1372}
1373
1374chng {2001 Nov 22 (2.1.2)} {
1375<li>Changes to support 64-bit architectures.</li>
1376<li>Fix a bug in the locking protocol.</li>
1377<li>Fix a bug that could (rarely) cause the database to become
1378 unreadable after a DROP TABLE due to corruption to the SQLITE_MASTER
1379 table.</li>
1380<li>Change the code so that version 2.1.1 databases that were rendered
1381 unreadable by the above bug can be read by this version of
1382 the library even though the SQLITE_MASTER table is (slightly)
1383 corrupted.</li>
1384}
1385
1386chng {2001 Nov 13 (2.1.1)} {
1387<li>Bug fix: Sometimes arbitrary strings were passed to the callback
1388 function when the actual value of a column was NULL.</li>
1389}
1390
1391chng {2001 Nov 12 (2.1.0)} {
1392<li>Change the format of data records so that records up to 16MB in size
1393 can be stored.</li>
1394<li>Change the format of indices to allow for better query optimization.</li>
1395<li>Implement the "LIMIT ... OFFSET ..." clause on SELECT statements.</li>
1396}
1397
1398chng {2001 Nov 3 (2.0.8)} {
1399<li>Made selected parameters in API functions <b>const</b>. This should
1400 be fully backwards compatible.</li>
1401<li>Documentation updates</li>
1402<li>Simplify the design of the VDBE by restricting the number of sorters
1403 and lists to 1.
1404 In practice, no more than one sorter and one list was ever used anyhow.
1405 </li>
1406}
1407
1408chng {2001 Oct 21 (2.0.7)} {
1409<li>Any UTF-8 character or ISO8859 character can be used as part of
1410 an identifier.</li>
1411<li>Patches from Christian Werner to improve ODBC compatibility and to
1412 fix a bug in the round() function.</li>
1413<li>Plug some memory leaks that use to occur if malloc() failed.
1414 We have been and continue to be memory leak free as long as
1415 malloc() works.</li>
1416<li>Changes to some test scripts so that they work on Windows in
1417 addition to Unix.</li>
1418}
1419
1420chng {2001 Oct 19 (2.0.6)} {
1421<li>Added the EMPTY_RESULT_CALLBACKS pragma</li>
1422<li>Support for UTF-8 and ISO8859 characters in column and table names.</li>
1423<li>Bug fix: Compute correct table names with the FULL_COLUMN_NAMES pragma
1424 is turned on.</li>
1425}
1426
1427chng {2001 Oct 14 (2.0.5)} {
1428<li>Added the COUNT_CHANGES pragma.</li>
1429<li>Changes to the FULL_COLUMN_NAMES pragma to help out the ODBC driver.</li>
1430<li>Bug fix: "SELECT count(*)" was returning NULL for empty tables.
1431 Now it returns 0.</li>
1432}
1433
1434chng {2001 Oct 13 (2.0.4)} {
1435<li>Bug fix: an obscure and relatively harmless bug was causing one of
1436 the tests to fail when gcc optimizations are turned on. This release
1437 fixes the problem.</li>
1438}
1439
1440chng {2001 Oct 13 (2.0.3)} {
1441<li>Bug fix: the <b>sqlite_busy_timeout()</b> function was delaying 1000
1442 times too long before failing.</li>
1443<li>Bug fix: an assertion was failing if the disk holding the database
1444 file became full or stopped accepting writes for some other reason.
1445 New tests were added to detect similar problems in the future.</li>
1446<li>Added new operators: <b>&amp;</b> (bitwise-and)
1447 <b>|</b> (bitwise-or), <b>~</b> (ones-complement),
1448 <b>&lt;&lt;</b> (shift left), <b>&gt;&gt;</b> (shift right).</li>
1449<li>Added new functions: <b>round()</b> and <b>abs()</b>.</li>
1450}
1451
1452chng {2001 Oct 9 (2.0.2)} {
1453<li>Fix two bugs in the locking protocol. (One was masking the other.)</li>
1454<li>Removed some unused "#include <unistd.h>" that were causing problems
1455 for VC++.</li>
1456<li>Fixed <b>sqlite.h</b> so that it is usable from C++</li>
1457<li>Added the FULL_COLUMN_NAMES pragma. When set to "ON", the names of
1458 columns are reported back as TABLE.COLUMN instead of just COLUMN.</li>
1459<li>Added the TABLE_INFO() and INDEX_INFO() pragmas to help support the
1460 ODBC interface.</li>
1461<li>Added support for TEMPORARY tables and indices.</li>
1462}
1463
1464chng {2001 Oct 2 (2.0.1)} {
1465<li>Remove some C++ style comments from btree.c so that it will compile
1466 using compilers other than gcc.</li>
1467<li>The ".dump" output from the shell does not work if there are embedded
1468 newlines anywhere in the data. This is an old bug that was carried
1469 forward from version 1.0. To fix it, the ".dump" output no longer
1470 uses the COPY command. It instead generates INSERT statements.</li>
1471<li>Extend the expression syntax to support "expr NOT NULL" (with a
1472 space between the "NOT" and the "NULL") in addition to "expr NOTNULL"
1473 (with no space).</li>
1474}
1475
1476chng {2001 Sep 28 (2.0.0)} {
1477<li>Automatically build binaries for Linux and Windows and put them on
1478 the website.</li>
1479}
1480
1481chng {2001 Sep 28 (2.0-alpha-4)} {
1482<li>Incorporate makefile patches form A. Rottmann to use LIBTOOL</li>
1483}
1484
1485chng {2001 Sep 27 (2.0-alpha-3)} {
1486<li>SQLite now honors the UNIQUE keyword in CREATE UNIQUE INDEX. Primary
1487 keys are required to be unique.</li>
1488<li>File format changed back to what it was for alpha-1</li>
1489<li>Fixes to the rollback and locking behavior</li>
1490}
1491
1492chng {2001 Sep 20 (2.0-alpha-2)} {
1493<li>Initial release of version 2.0. The idea of renaming the library
1494 to "SQLus" was abandoned in favor of keeping the "SQLite" name and
1495 bumping the major version number.</li>
1496<li>The pager and btree subsystems added back. They are now the only
1497 available backend.</li>
1498<li>The Dbbe abstraction and the GDBM and memory drivers were removed.</li>
1499<li>Copyright on all code was disclaimed. The library is now in the
1500 public domain.</li>
1501}
1502
1503chng {2001 Jul 23 (1.0.32)} {
1504<li>Pager and btree subsystems removed. These will be used in a follow-on
1505 SQL server library named "SQLus".</li>
1506<li>Add the ability to use quoted strings as table and column names in
1507 expressions.</li>
1508}
1509
1510chng {2001 Apr 14 (1.0.31)} {
1511<li>Pager subsystem added but not yet used.</li>
1512<li>More robust handling of out-of-memory errors.</li>
1513<li>New tests added to the test suite.</li>
1514}
1515
1516chng {2001 Apr 6 (1.0.30)} {
1517<li>Remove the <b>sqlite_encoding</b> TCL variable that was introduced
1518 in the previous version.</li>
1519<li>Add options <b>-encoding</b> and <b>-tcl-uses-utf</b> to the
1520 <b>sqlite</b> TCL command.</li>
1521<li>Add tests to make sure that tclsqlite was compiled using Tcl header
1522 files and libraries that match.</li>
1523}
1524
1525chng {2001 Apr 5 (1.0.29)} {
1526<li>The library now assumes data is stored as UTF-8 if the --enable-utf8
1527 option is given to configure. The default behavior is to assume
1528 iso8859-x, as it has always done. This only makes a difference for
1529 LIKE and GLOB operators and the LENGTH and SUBSTR functions.</li>
1530<li>If the library is not configured for UTF-8 and the Tcl library
1531 is one of the newer ones that uses UTF-8 internally,
1532 then a conversion from UTF-8 to iso8859 and
1533 back again is done inside the TCL interface.</li>
1534}
1535
1536chng {2001 Apr 4 (1.0.28)} {
1537<li>Added limited support for transactions. At this point, transactions
1538 will do table locking on the GDBM backend. There is no support (yet)
1539 for rollback or atomic commit.</li>
1540<li>Added special column names ROWID, OID, and _ROWID_ that refer to the
1541 unique random integer key associated with every row of every table.</li>
1542<li>Additional tests added to the regression suite to cover the new ROWID
1543 feature and the TCL interface bugs mentioned below.</li>
1544<li>Changes to the "lemon" parser generator to help it work better when
1545 compiled using MSVC.</li>
1546<li>Bug fixes in the TCL interface identified by Oleg Oleinick.</li>
1547}
1548
1549chng {2001 Mar 20 (1.0.27)} {
1550<li>When doing DELETE and UPDATE, the library used to write the record
1551 numbers of records to be deleted or updated into a temporary file.
1552 This is changed so that the record numbers are held in memory.</li>
1553<li>The DELETE command without a WHILE clause just removes the database
1554 files from the disk, rather than going through and deleting record
1555 by record.</li>
1556}
1557
1558chng {2001 Mar 20 (1.0.26)} {
1559<li>A serious bug fixed on Windows. Windows users should upgrade.
1560 No impact to Unix.</li>
1561}
1562
1563chng {2001 Mar 15 (1.0.25)} {
1564<li>Modify the test scripts to identify tests that depend on system
1565 load and processor speed and
1566 to warn the user that a failure of one of those (rare) tests does
1567 not necessarily mean the library is malfunctioning. No changes to
1568 code.
1569 </li>
1570}
1571
1572chng {2001 Mar 14 (1.0.24)} {
1573<li>Fix a bug which was causing
1574 the UPDATE command to fail on systems where "malloc(0)" returns
1575 NULL. The problem does not appear Windows, Linux, or HPUX but does
1576 cause the library to fail on QNX.
1577 </li>
1578}
1579
1580chng {2001 Feb 19 (1.0.23)} {
1581<li>An unrelated (and minor) bug from Mark Muranwski fixed. The algorithm
1582 for figuring out where to put temporary files for a "memory:" database
1583 was not working quite right.
1584 </li>
1585}
1586
1587chng {2001 Feb 19 (1.0.22)} {
1588<li>The previous fix was not quite right. This one seems to work better.
1589 </li>
1590}
1591
1592chng {2001 Feb 19 (1.0.21)} {
1593<li>The UPDATE statement was not working when the WHERE clause contained
1594 some terms that could be satisfied using indices and other terms that
1595 could not. Fixed.</li>
1596}
1597
1598chng {2001 Feb 11 (1.0.20)} {
1599<li>Merge development changes into the main trunk. Future work toward
1600 using a BTree file structure will use a separate CVS source tree. This
1601 CVS tree will continue to support the GDBM version of SQLite only.</li>
1602}
1603
1604chng {2001 Feb 6 (1.0.19)} {
1605<li>Fix a strange (but valid) C declaration that was causing problems
1606 for QNX. No logical changes.</li>
1607}
1608
1609chng {2001 Jan 4 (1.0.18)} {
1610<li>Print the offending SQL statement when an error occurs.</li>
1611<li>Do not require commas between constraints in CREATE TABLE statements.</li>
1612<li>Added the "-echo" option to the shell.</li>
1613<li>Changes to comments.</li>
1614}
1615
1616chng {2000 Dec 10 (1.0.17)} {
1617<li>Rewrote <b>sqlite_complete()</b> to make it faster.</li>
1618<li>Minor tweaks to other code to make it run a little faster.</li>
1619<li>Added new tests for <b>sqlite_complete()</b> and for memory leaks.</li>
1620}
1621
1622chng {2000 Dec 4 (1.0.16)} {
1623<li>Documentation updates. Mostly fixing of typos and spelling errors.</li>
1624}
1625
1626chng {2000 Oct 23 (1.0.15)} {
1627<li>Documentation updates</li>
1628<li>Some sanity checking code was removed from the inner loop of vdbe.c
1629 to help the library to run a little faster. The code is only
1630 removed if you compile with -DNDEBUG.</li>
1631}
1632
1633chng {2000 Oct 19 (1.0.14)} {
1634<li>Added a "memory:" backend driver that stores its database in an
1635 in-memory hash table.</li>
1636}
1637
1638chng {2000 Oct 18 (1.0.13)} {
1639<li>Break out the GDBM driver into a separate file in anticipation
1640 to added new drivers.</li>
1641<li>Allow the name of a database to be prefixed by the driver type.
1642 For now, the only driver type is "gdbm:".</li>
1643}
1644
1645chng {2000 Oct 16 (1.0.12)} {
1646<li>Fixed an off-by-one error that was causing a coredump in
1647 the '%q' format directive of the new
1648 <b>sqlite_..._printf()</b> routines.</li>
1649<li>Added the <b>sqlite_interrupt()</b> interface.</li>
1650<li>In the shell, <b>sqlite_interrupt()</b> is invoked when the
1651 user presses Control-C</li>
1652<li>Fixed some instances where <b>sqlite_exec()</b> was
1653 returning the wrong error code.</li>
1654}
1655
1656chng {2000 Oct 11 (1.0.10)} {
1657<li>Added notes on how to compile for Windows95/98.</li>
1658<li>Removed a few variables that were not being used. Etc.</li>
1659}
1660
1661chng {2000 Oct 8 (1.0.9)} {
1662<li>Added the <b>sqlite_..._printf()</b> interface routines.</li>
1663<li>Modified the <b>sqlite</b> shell program to use the new interface
1664 routines.</li>
1665<li>Modified the <b>sqlite</b> shell program to print the schema for
1666 the built-in SQLITE_MASTER table, if explicitly requested.</li>
1667}
1668
1669chng {2000 Sep 30 (1.0.8)} {
1670<li>Begin writing documentation on the TCL interface.</li>
1671}
1672
1673chng {2000 Sep 29 (Not Released)} {
1674<li>Added the <b>sqlite_get_table()</b> API</li>
1675<li>Updated the documentation for due to the above change.</li>
1676<li>Modified the <b>sqlite</b> shell to make use of the new
1677 sqlite_get_table() API in order to print a list of tables
1678 in multiple columns, similar to the way "ls" prints filenames.</li>
1679<li>Modified the <b>sqlite</b> shell to print a semicolon at the
1680 end of each CREATE statement in the output of the ".schema" command.</li>
1681}
1682
1683chng {2000 Sep 21 (Not Released)} {
1684<li>Change the tclsqlite "eval" method to return a list of results if
1685 no callback script is specified.</li>
1686<li>Change tclsqlite.c to use the Tcl_Obj interface</li>
1687<li>Add tclsqlite.c to the libsqlite.a library</li>
1688}
1689
1690chng {2000 Sep 13 (Version 1.0.5)} {
1691<li>Changed the print format for floating point values from "%g" to "%.15g".
1692 </li>
1693<li>Changed the comparison function so that numbers in exponential notation
1694 (ex: 1.234e+05) sort in numerical order.</li>
1695}
1696
1697chng {2000 Aug 28 (Version 1.0.4)} {
1698<li>Added functions <b>length()</b> and <b>substr()</b>.</li>
1699<li>Fix a bug in the <b>sqlite</b> shell program that was causing
1700 a coredump when the output mode was "column" and the first row
1701 of data contained a NULL.</li>
1702}
1703
1704chng {2000 Aug 22 (Version 1.0.3)} {
1705<li>In the sqlite shell, print the "Database opened READ ONLY" message
1706 to stderr instead of stdout.</li>
1707<li>In the sqlite shell, now print the version number on initial startup.</li>
1708<li>Add the <b>sqlite_version[]</b> string constant to the library</li>
1709<li>Makefile updates</li>
1710<li>Bug fix: incorrect VDBE code was being generated for the following
1711 circumstance: a query on an indexed table containing a WHERE clause with
1712 an IN operator that had a subquery on its right-hand side.</li>
1713}
1714
1715chng {2000 Aug 18 (Version 1.0.1)} {
1716<li>Fix a bug in the configure script.</li>
1717<li>Minor revisions to the website.</li>
1718}
1719
1720chng {2000 Aug 17 (Version 1.0)} {
1721<li>Change the <b>sqlite</b> program so that it can read
1722 databases for which it lacks write permission. (It used to
1723 refuse all access if it could not write.)</li>
1724}
1725
1726chng {2000 Aug 9} {
1727<li>Treat carriage returns as white space.</li>
1728}
1729
1730chng {2000 Aug 8} {
1731<li>Added pattern matching to the ".table" command in the "sqlite"
1732command shell.</li>
1733}
1734
1735chng {2000 Aug 4} {
1736<li>Documentation updates</li>
1737<li>Added "busy" and "timeout" methods to the Tcl interface</li>
1738}
1739
1740chng {2000 Aug 3} {
1741<li>File format version number was being stored in sqlite_master.tcl
1742 multiple times. This was harmless, but unnecessary. It is now fixed.</li>
1743}
1744
1745chng {2000 Aug 2} {
1746<li>The file format for indices was changed slightly in order to work
1747 around an inefficiency that can sometimes come up with GDBM when
1748 there are large indices having many entries with the same key.
1749 <font color="red">** Incompatible Change **</font></li>
1750}
1751
1752chng {2000 Aug 1} {
1753<li>The parser's stack was overflowing on a very long UPDATE statement.
1754 This is now fixed.</li>
1755}
1756
1757chng {2000 July 31} {
1758<li>Finish the <a href="vdbe.html">VDBE tutorial</a>.</li>
1759<li>Added documentation on compiling to WindowsNT.</li>
1760<li>Fix a configuration program for WindowsNT.</li>
1761<li>Fix a configuration problem for HPUX.</li>
1762}
1763
1764chng {2000 July 29} {
1765<li>Better labels on column names of the result.</li>
1766}
1767
1768chng {2000 July 28} {
1769<li>Added the <b>sqlite_busy_handler()</b>
1770 and <b>sqlite_busy_timeout()</b> interface.</li>
1771}
1772
1773chng {2000 June 23} {
1774<li>Begin writing the <a href="vdbe.html">VDBE tutorial</a>.</li>
1775}
1776
1777chng {2000 June 21} {
1778<li>Clean up comments and variable names. Changes to documentation.
1779 No functional changes to the code.</li>
1780}
1781
1782chng {2000 June 19} {
1783<li>Column names in UPDATE statements were case sensitive.
1784 This mistake has now been fixed.</li>
1785}
1786
1787chng {2000 June 16} {
1788<li>Added the concatenate string operator (||)</li>
1789}
1790
1791chng {2000 June 12} {
1792<li>Added the fcnt() function to the SQL interpreter. The fcnt() function
1793 returns the number of database "Fetch" operations that have occurred.
1794 This function is designed for use in test scripts to verify that
1795 queries are efficient and appropriately optimized. Fcnt() has no other
1796 useful purpose, as far as I know.</li>
1797<li>Added a bunch more tests that take advantage of the new fcnt() function.
1798 The new tests did not uncover any new problems.</li>
1799}
1800
1801chng {2000 June 8} {
1802<li>Added lots of new test cases</li>
1803<li>Fix a few bugs discovered while adding test cases</li>
1804<li>Begin adding lots of new documentation</li>
1805}
1806
1807chng {2000 June 6} {
1808<li>Added compound select operators: <B>UNION</b>, <b>UNION ALL</B>,
1809<b>INTERSECT</b>, and <b>EXCEPT</b></li>
1810<li>Added support for using <b>(SELECT ...)</b> within expressions</li>
1811<li>Added support for <b>IN</b> and <b>BETWEEN</b> operators</li>
1812<li>Added support for <b>GROUP BY</b> and <b>HAVING</b></li>
1813<li>NULL values are now reported to the callback as a NULL pointer
1814 rather than an empty string.</li>
1815}
1816
1817chng {2000 June 3} {
1818<li>Added support for default values on columns of a table.</li>
1819<li>Improved test coverage. Fixed a few obscure bugs found by the
1820improved tests.</li>
1821}
1822
1823chng {2000 June 2} {
1824<li>All database files to be modified by an UPDATE, INSERT or DELETE are
1825now locked before any changes are made to any files.
1826This makes it safe (I think) to access
1827the same database simultaneously from multiple processes.</li>
1828<li>The code appears stable so we are now calling it "beta".</li>
1829}
1830
1831chng {2000 June 1} {
1832<li>Better support for file locking so that two or more processes
1833(or threads)
1834can access the same database simultaneously. More work needed in
1835this area, though.</li>
1836}
1837
1838chng {2000 May 31} {
1839<li>Added support for aggregate functions (Ex: <b>COUNT(*)</b>, <b>MIN(...)</b>)
1840to the SELECT statement.</li>
1841<li>Added support for <B>SELECT DISTINCT ...</B></li>
1842}
1843
1844chng {2000 May 30} {
1845<li>Added the <b>LIKE</b> operator.</li>
1846<li>Added a <b>GLOB</b> operator: similar to <B>LIKE</B>
1847but it uses Unix shell globbing wildcards instead of the '%'
1848and '_' wildcards of SQL.</li>
1849<li>Added the <B>COPY</b> command patterned after
1850<a href="http://www.postgresql.org/">PostgreSQL</a> so that SQLite
1851can now read the output of the <b>pg_dump</b> database dump utility
1852of PostgreSQL.</li>
1853<li>Added a <B>VACUUM</B> command that that calls the
1854<b>gdbm_reorganize()</b> function on the underlying database
1855files.</li>
1856<li>And many, many bug fixes...</li>
1857}
1858
1859chng {2000 May 29} {
1860<li>Initial Public Release of Alpha code</li>
1861}
1862
1863puts {
1864</DL>
1865}
1866footer {$Id:}