Change prefix search from O(N*M) to O(NlogM). The previous code
linearly merged the doclists, so as the accumulated list got large,
things got slow (the M term, a fucntion of the number of documents in
the index). This change does pairwise merges until a single doclist
remains. A test search of 't*' against a database of RFC text
improves from 1m16s to 4.75s. (CVS 4599)
check-in: feef1b15 user: shess tags: trunk

In shared-cache mode, make sure the busy hander invoked is the
busy handler associated with the database connection that caused
the lock contention in the first place. (CVS 4598)
check-in: c9eb6591 user: drh tags: trunk

When parsing CREATE INDEX statements from the sqlite_master table, do not search the temp database schema for the corresponding table. Only consider the database for which the schema is being parsed. Ticket #2817. (CVS 4587)
check-in: e6f02aa5 user: danielk1977 tags: trunk

When using an index to scan a database table, read column data from the index in preference to the table. This increases the likelihood that the table will not be required at all. (CVS 4580)
check-in: 061608c7 user: danielk1977 tags: trunk

Add the {quote: StrAccum} object
for accumulating strings. Revamp xprintf to use
the new object. Rewrite the group_concat() function to use the new object.
Productize and test the group_concat() function. (CVS 4578)
check-in: 221aee72 user: drh tags: trunk

Change the BTree so that it uses the Pagers temporary page space when
reorganizing the rows on a page, rather than mallocing for space of
its own. In this way, we avoid having to deal with a malloc failure
deep down inside the page reorganizer. Ticket #2806 (CVS 4577)
check-in: 98960132 user: drh tags: trunk

Clarify the conditions under which homegrown recursive mutexes work
(they require a coherent cache) and only enable them if there is an
explicit #define so as to avoid accidental use on platforms that do
not meet the constraints. Ticket #2805. (CVS 4575)
check-in: 80299eeb user: drh tags: trunk

Use the hexio test utility rather than TCL's binary I/O to avoid
32/64-bit problems in io.test. Ticket #2803. (This is a change
to the test harness only - not to SQLite.) (CVS 4571)
check-in: 07f7dde8 user: drh tags: trunk

Make sure that INSERT INTO ... SELECT ... always uses an ephemeral
intermediate table if the SELECT clause refers to the destination table,
even if the SELECT clause is compound or uses the destination table
in a subquery. This fixes a long-standing bug that can cause an
infinite loop for some SQL statements. (CVS 4552)
check-in: 492b39b6 user: drh tags: trunk

Where possible, transform the DISTINCT qualifier to a GROUP BY clause. GROUP BY clauses may be optimized by indices, DISTINCT qualifiers cannot. (CVS 4538)
check-in: e5633123 user: danielk1977 tags: trunk

Add some assert() statements to the asychronous backend demo to enforce the strategy used to avoid deadlock. Also a minor change to avoid a potential deadlock. (CVS 4520)
check-in: 6340ca5e user: danielk1977 tags: trunk