Improvements to the SQLITE_INT_TO_PTR macro to reduce the number of
warnings. For some platforms it might be necessary to compile with
the -DHAVE_STDINT_H flag. Ticket #3860. (CVS 6657)
(check-in: 1b0ee9d1 user: drh tags: trunk)

Change the sqlite3_backup_finish() interface so that calling it with
a NULL pointer is a harmless no-op. One other change to backup.c to facilitate
full coverage testing. (CVS 6638)
(check-in: 06bc8917 user: drh tags: trunk)

Do not run async4.test as part of the "journaltest" permutation. It specifically tests that the asynchronous IO backend can be configured to violate the assumptions made by journaltest. (CVS 6633)
(check-in: b19bf39b user: danielk1977 tags: trunk)

Move the sqlite3MinimumFileFormat() routine from build.c over to alter.c
since alter.c is the only code that uses it. Additional changes and
cleanup to build.c to facility coverage testing. (CVS 6630)
(check-in: 6fe3750a user: drh tags: trunk)

If a virtual table constructor returns SQLITE_NOMEM, set the mallocFailed
flag in the corresponding database connection to insure that the error
is propagated back to the top layer. (CVS 6627)
(check-in: 5635666f user: drh tags: trunk)

Rework the logic that generates a schema for tables created using
"CREATE TABLE ... AS SELECT ...". Instead of trying to copy the raw
datatype string from the right-hand side, just make the type one
of TEXT, INT, REAL, NUM, or nothing. This is much simpler than
trying to parse and quote datatype strings. Other minor
implifications to build.c are bundled with this change. (CVS 6626)
(check-in: 33cf8359 user: drh tags: trunk)

Change sqlite_blob_open() so that it zeros the output pBlob pointer when
it fails. The other sqlite3_blob interfaces accept a NULL pointer as
input. (CVS 6622)
(check-in: 999d507b user: drh tags: trunk)

Remove the aFKey hash table, which was not being used. Simplify the
FKey object. Simplify the hash.c module since the copyKey parameter
formerly used only by aFKey is now no longer required. (CVS 6594)
(check-in: 80c43a35 user: drh tags: trunk)

When a cursor points at the last entry of an intkey btree after an insert, leave it there (instead of moving it to the tree root node). This speeds up statements of the form "INSERT INTO ... SELECT ..." that use auto-generated rowids. (CVS 6592)
(check-in: 9950c0a7 user: danielk1977 tags: trunk)

Record within the Token structure itself whether or not the token has
been dequoted. This steals one bit from the length of a token and
thus limits the size of tokens to 1GiB. (CVS 6589)
(check-in: 12bcb03d user: drh tags: trunk)

Fix a case in where.c where a crash can follow a malloc failure. Also modify test code in test8.c to check a return code that was being dropped (causing a test in vtab_err.test to fail). (CVS 6567)
(check-in: 9664e2b6 user: danielk1977 tags: trunk)

Simplifications to the symbol table implementation in hash.c. For very small
symbol tables (less than 10 entries) a simple linked list is used instead
of a hash table. Number of hash table buckets is limited to prevent large
allocations. (CVS 6559)
(check-in: 5c737835 user: drh tags: trunk)

Bring the documenation and implementation of sqlite3_collation_needed() into
agreement. Use a more efficient implementation of sqlite3ErrStr().
sqlite3_result_error_code() now calls sqlite3ErrStr() if no prior
error string was set. (CVS 6550)
(check-in: cb9af829 user: drh tags: trunk)

Add another test case for the "x IS NULL" uniqueness problem of ticket #3824.
No changes to code. This just double-checks that everything is working now. (CVS 6548)
(check-in: 3ceae357 user: drh tags: trunk)

Get rid of the special RowSet processing in where.c and move that into
clients. Added the WHERE_DUPLICATES_OK option to eliminate an unnecessary
RowSet during DELETE with a WHERE clause containing ORs. (CVS 6546)
(check-in: 98606bee user: drh tags: trunk)

Make sure that the optimizer realizes that an "x IS NULL" contraint does not
necessarily give a single-row result even on a UNIQUE index. Ticket #3824. (CVS 6545)
(check-in: 207335fd user: drh tags: trunk)

Change the OP_Rowid opcode so that a deferred OP_Seek is pending, it simply
pulls the rowid from the deferred seek target and does not actually move
the cursor or do a seek. Other where.c cleanups. (CVS 6536)
(check-in: 1c508a99 user: drh tags: trunk)

Extend the Rowset object to contain all the capabilities of Rowhash in
addition to its legacy capabilities. Use Rowset to replace Rowhash.
In addition to requiring less code, This removes the 2^32 result row
limitation, uses less memory, and gives better bounds on worst-case
performance. The Rowhash implementation has yet to be removed. (CVS 6534)
(check-in: b101cf70 user: drh tags: trunk)

Change the journal_mode pragma so that it always returns the current
journal mode, even on a failed attempt to change the journal mode.
Allow the journal mode to be changed as long as there is not a pending
transaction. Ticket #3811. (CVS 6526)
(check-in: 419e320a user: drh tags: trunk)

Add new tests to show that journal_mode=OFF works with locking_mode=EXCLUSIVE
as long as the journal_mode is set prior to the first transaction.
Ticket #3811. (CVS 6525)
(check-in: e62ac26f user: drh tags: trunk)

Clarify the documentation to make it clear that sqlite3_interrupt() does not
effect new SQL statements that are started after the running statement
count reaches zero. Ticket #3815. (CVS 6524)
(check-in: 3182e8bf user: drh tags: trunk)

Make sure the 'unixepoch' converter in the date and time functions rounds
to the nearest millisecond rather than truncating downward to the next
smaller millisecond. Ticket #3808. (CVS 6512)
(check-in: e6e036b3 user: drh tags: trunk)

In a 3-fold compound SELECT make sure early code generation of the SELECTs
to the right do not dereference non-existant columns in SELECTs on the left. (CVS 6511)
(check-in: 414f3408 user: drh tags: trunk)

Mark an branch in alter.c as always false. Only run the assert() on
the sqlite3_aggregate_count() function in func.c if the
SQLITE_OMIT_DEPRECATED compile-time option is off. (CVS 6508)
(check-in: c0bba77a user: drh tags: trunk)

Increase the hard upper bound on the number of pcache pages in test_pcache
when the test harness is compiled for in-memory temp tables. Some of the
test cases need to extra memory to avoid unplanned out of memory errors. (CVS 6494)
(check-in: 7f2d6a0b user: drh tags: trunk)

Do not run io.test as part of the inmemory_journal permutation. io.test uses the tcl API to test for journal files in the file-system (which of course never exist when running with in-memory journals). (CVS 6487)
(check-in: 493f03bd user: danielk1977 tags: trunk)

Re-enable the alt_pcache tests in permutations.test so that they run
automatically during a full regression. Fix async.test so that it
works with the permutation.test pcacheNN test modules. (CVS 6486)
(check-in: 310192cc user: drh tags: trunk)

Enhance sqlite3_shutdown() so that it automatically invokes
sqlite3_reset_auto_extension(). This is a harmless no-op if applications
are already calling sqlite3_reset_auto_extension() prior to sqlite3_shutdown().
And it prevents possible memory corruption if they do not. So it works
either way. Most of the changes are to the test cases. (CVS 6475)
(check-in: 0c41f7cf user: drh tags: trunk)

Always enable WHERE-tracing on a test build.
Oops - accidentally included a debugging change to pragma.c in
this check-in. The real fix for the pragma problem is in the
following checking. (CVS 6458)
(check-in: 567cf90b user: drh tags: trunk)