Begin adding experimental sqlite_stat4 table. This commit is buggy.
Fix a couple of problems in code related to sqlite_stat4.
Use N separate cursors when scanning an index with N columns to collect sqlite_stat4 data. This fixes a problem with collecting incorrect nEq values from multi-column indexes.
Modify the vdbe code generated by ANALYZE to use fewer memory cells and cursor slots.
When possible, use the multi-column samples in sqlite_stat4 to estimate the number of index rows scanned by a query plan.
Fixes for builds without SQLITE_ENABLE_STAT4.
When estimating the number of rows scanned using data from the sqlite_stat4 table, avoid allocating UnpackedRecord and KeyInfo structures until they are definitely required.
Remove the unused sqlite3Utf8to16() utility function.
Fix the ".dump" command on the command-line shell so that it works for
"sqlite_stat4" in addition to "sqlite_stat1".
Change the way samples for the sqlite_stat4 table are collected.
Fix typos in a comment in analyze.c. No code changes.
Merge latest trunk changes with this branch.
Replace variable Index.avgEq (average number of rows in keys for which there is no sample in sqlite_stat4) with vector Index.aAvgEq.
Fix a bug in using stat4 data to estimate the number of rows selected by a range constraint.
Fix a segfault in "ALTER TABLE t1 ADD COLUMN b DEFAULT (-+1)". Also an assert() failure that could occur if SQLITE_ENABLE_STAT4 were not defined.
Use a binary search instead of a linear scan when comparing a sample key against data from the sqlite_stat4 table.
Fix problems in estimating the number of rows visited by a range query using sqlite_stat4 data when the column subject to the range query is not the leftmost of the index.
Update the header comment on analyze.c to describe the sqlite_stat4 table
format.
Fix a couple of typos in a comment in analyze.c. No code changes.
Add the rowid field to the end of sample records stored in the sqlite_stat4 table.