100 check-ins occurring around c75555a354e3fd01.

Have ota use imposter tables to write to indexes instead of the sqlite3_index_writer() interface. The error handling in this version is broken in a few small ways.
(check-in: cdaeab46 user: dan tags: ota-update)

Change SQLITE_TESTCTRL_INITMODE to SQLITE_TESTCTRL_IMPOSTER. Revise the order
of parameters. Give it the ability to reset the schema parse table so that
imposter tables can be erased.
(check-in: 42d56017 user: drh tags: trunk)

Ensure that "PRAGMA wal_checkpoint = TRUNCATE|FULL|RESTART" block on other connections and truncate the wal file as required even if the entire wal file has already been checkpointed. Cherry-pick from trunk.
(check-in: 18610617 user: drh tags: branch-3.8.8)

Ensure that "PRAGMA wal_checkpoint = TRUNCATE|FULL|RESTART" block on other connections and truncate the wal file as required even if the entire wal file has already been checkpointed.
(check-in: 53429689 user: dan tags: trunk)

Improvements to the DELETE code generator for the one-pass case. Avoid
some OP_Goto instructions. Read content from the index cursor if the
index cursor is valid and was used to locate the row that is to be deleted.
(Closed-Leaf
check-in: 58cc257a user: drh tags: one-writable-btree)

When a "full", "restart" or "truncate" checkpoint is attempted, return SQLITE_BUSY if a reader prevents the checkpointer from copying any frames at all into the database file.
(check-in: f2700040 user: dan tags: ota-update)

Fix a (almost always harmless) read past the end of a memory allocation
that comes about because the Expr.pTab field is checked on an
EXPR_REDUCEDSIZE Expr object before checking the Expr.op field to
know that the Expr.pTab field is meaningless.
(check-in: e098de69 user: drh tags: trunk)

In the command-line shell, make sure stderr is unbuffered so that it
automatically flushes. This has always been the case already for unix and
on Windows when the output is a console, but apparently was not the case
on Windows when the output was a pipe.
(check-in: 2a9ea9b4 user: drh tags: trunk)

Make sure errors in the FROM clause of a SELECT cause analysis to abort
and unwind the stack before those errors have a chance to mischief
in the "*" column-name wildcard expander. Fix for ticket [32b63d542433ca67].
(check-in: 9e6eae66 user: drh tags: trunk)

Ensure that the KeyInfo.nXField value for ephemeral tables used to implement
ORDER BY or GROUP BY clauses is set correctly, so that the
sqlite3VdbeFindCompare() routine can choose the correct comparison function.
Add assert() statements to the high-speed comparison functions to detect
cases where they are inappropriately chosen.
Fix for ticket [f97c4637102a3ae72b7911].
(check-in: 59e592f6 user: drh tags: branch-3.8.8)

Ensure that the KeyInfo.nXField value for ephemeral tables used to implement
ORDER BY or GROUP BY clauses is set correctly, so that the
sqlite3VdbeFindCompare() routine can choose the correct comparison function.
Add assert() statements to the high-speed comparison functions to detect
cases where they are inappropriately chosen.
Fix for ticket [f97c4637102a3ae72b7911].
(check-in: f7201bb0 user: drh tags: trunk)

There are asserts in place now that will prevent a recurrence of
ticket [f97c4637102a3ae7]. Nevertheless, it is good to add some
test cases as well.
(Closed-Leaf
check-in: e02959b9 user: drh tags: tkt-f97c4637)

Make sure that the KeyInfo.nXField value of ephermeral tables used for
ORDER BY and GROUP BY is set correctly, so that the correct comparison
function can be choosen by sqlite3VdbeFindCompare().
(check-in: c16bae5e user: drh tags: tkt-f97c4637)

An alternative way of implementing the assert() that verifies the relative
values of KeyInfo.nField+KeyInfo.nXField and the number of columns in a record.
This version of the assert() only fires when the high-speed comparison
routines are used - which is to say it only fires when the constraint
actually matters.
(check-in: bf744b49 user: drh tags: tkt-f97c4637)

Add an assert() to verify that the nField+nXField values of a KeyInfo object
are never less then the number of columns in a row for a non-corrupt database.
This assert() currently fails, which is the root of the problem with
ticket [f97c4637102a3ae72b].
(check-in: 083f523d user: drh tags: tkt-f97c4637)

Makefile enhancements: (1) Rename autoconf/tea/configure.in to
autoconf/tea/configure.ac so that it works with the latest versions of
autoconf. (2) Add the "amalgamation-tarball" targets to Makefile.in and
main.mk (renamed from "dist" in the latter case). (3) Update the
README.first file in autoconf/ (4) The TOP macro
in Makefile.in is now an absolute rather than a relative path.
(check-in: 3bafeec9 user: drh tags: trunk)

Simplify some code in rtree, to avoid confusing the optimizer in GCC on
some macs:
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00).
Prior to these changes, compiling with -O3 would cause incorrect code to
be generated. The change to the nodeGetCell() routine is key. The other
changes are merely cosmetic details discovered while bug hunting.
(check-in: 882181ff user: drh tags: trunk)