This page provides a high-level summary of changes to SQLite.
For more detail, refer the the checkin logs generated by
CVS at
http://www.sqlite.org/cvstrac/timeline.
Fix a bug in VACUUM that can lead to
database corruption if two
processes are connected to the database at the same time and one
VACUUMs then the other then modifies the database.
The expression "+column" is now considered the same as "column"
when computing the collating sequence to use on the expression.
In the TCL language interface,
"@variable" instead of "$variable" always binds as a blob.
Fix a bug that can lead to database corruption if autovacuum mode is
on and a malloc() failure follows a CREATE TABLE or CREATE INDEX statement
which itself follows a cache overflow inside a transaction. See
ticket #2418.
Added explicit upper bounds on the sizes and
quantities of things SQLite can process. This change might cause
compatibility problems for
applications that use SQLite in the extreme, which is why the current
release is 3.4.0 instead of 3.3.18.
Fix a bug
in 3.3.13 that could cause a segfault when the IN operator
is used one one term of a two-column index and the right-hand side of
the IN operator contains a NULL.
Added a new OS interface method for determining the sector size
of underlying media: sqlite3OsSectorSize().
A new algorithm for statements of the form
INSERT INTO table1 SELECT * FROM table2
is faster and reduces fragmentation. VACUUM uses statements of
this form and thus runs faster and defragments better.
Performance enhancements through reductions in disk I/O:
Do not read the last page of an overflow chain when
deleting the row - just add that page to the freelist.
Do not store pages being deleted in the
rollback journal.
Do not read in the (meaningless) content of
pages extracted from the freelist.
Do not flush the page cache (and thus avoiding
a cache refill) unless another process changes the underlying
database file.
Truncate rather than delete the rollback journal when committing
a transaction in exclusive access mode, or when committing the TEMP
database.
Fix a bug in the IS NULL optimization that was added in version 3.3.9 -
the bug was causing incorrect results on certain LEFT JOINs that included
in the WHERE clause an IS NULL constraint for the right table of the
LEFT JOIN.
Make AreFileApisANSI() a no-op macro in winCE since winCE does not
support this function.
Clean up comments and variable names. Changes to documentation.
No functional changes to the code.
2000 June 19
Column names in UPDATE statements were case sensitive.
This mistake has now been fixed.
2000 June 16
Added the concatenate string operator (||)
2000 June 12
Added the fcnt() function to the SQL interpreter. The fcnt() function
returns the number of database "Fetch" operations that have occurred.
This function is designed for use in test scripts to verify that
queries are efficient and appropriately optimized. Fcnt() has no other
useful purpose, as far as I know.
Added a bunch more tests that take advantage of the new fcnt() function.
The new tests did not uncover any new problems.
2000 June 8
Added lots of new test cases
Fix a few bugs discovered while adding test cases
Begin adding lots of new documentation
2000 June 6
Added compound select operators: UNION, UNION ALL,
INTERSECT, and EXCEPT
Added support for using (SELECT ...) within expressions
Added support for IN and BETWEEN operators
Added support for GROUP BY and HAVING
NULL values are now reported to the callback as a NULL pointer
rather than an empty string.
2000 June 3
Added support for default values on columns of a table.
Improved test coverage. Fixed a few obscure bugs found by the
improved tests.
2000 June 2
All database files to be modified by an UPDATE, INSERT or DELETE are
now locked before any changes are made to any files.
This makes it safe (I think) to access
the same database simultaneously from multiple processes.
The code appears stable so we are now calling it "beta".
2000 June 1
Better support for file locking so that two or more processes
(or threads)
can access the same database simultaneously. More work needed in
this area, though.
2000 May 31
Added support for aggregate functions (Ex: COUNT(*), MIN(...))
to the SELECT statement.
Added support for SELECT DISTINCT ...
2000 May 30
Added the LIKE operator.
Added a GLOB operator: similar to LIKE
but it uses Unix shell globbing wildcards instead of the '%'
and '_' wildcards of SQL.
Added the COPY command patterned after
PostgreSQL so that SQLite
can now read the output of the pg_dump database dump utility
of PostgreSQL.
Added a VACUUM command that that calls the
gdbm_reorganize() function on the underlying database
files.