Attempt to use sqlite_stat4 data to estimate the number of rows visited by a range query that uses a skip-scan. This code is largely untested.
Fix compilation issue when STAT4 is not enabled.
Fix a couple of problems in estimating the number of rows visited by a range query that uses a skip-scan.
Merge fixes from trunk with this branch.
Change the VDBE to export the sqlite3MemCompare() routine and thus free
where.c from the dependency on vdbeInt.h.
Fix a problem with using stat4 samples of type text when estimating the rows visited by a range-query/skip-scan loop.
Add header comments on new routines.  Rework the sqlite3Stat4Column() routine
so that is (in theory) able to deal with corrupt samples.
Add further tests to skipscan5.test.
Add an OOM fault injection test for the new code on this branch.
Add makefile targets for various diagnostic tools, such as showstat4.
Fix harmless compiler warnings in diagnostic tools.
Generate complete samples for sqlite_stat4 on WITHOUT ROWID tables.
Ticket [b2fa5424e6fcb15b5]
Omit non-primary-key columns from the STAT4 samples for WITHOUT ROWID tables.
Indexes, both rowid and without-rowid, still hold an exact copy
of the index entry.
Fix where.c so that the primary key values appended to every index entry on a WITHOUT ROWID table may be used when useful.
Fix the STAT4 information for WITHOUT ROWID tables.
Fix a problem in where.c with using the stat4 sample data of an index on a WITHOUT ROWID table.
Fix for ticket [b2fa5424e6fcb15]: Better define the format of the sqlite_stat4
file for WITHOUT ROWID tables and make sure the ANALYZE command generates a
file in the appropriate format.  Use the sqlite_stat4 data to enable the use
of WHERE terms that cover all indexed columns plus some prefix of columns
in the primary key.
Attempt to use STAT4 information to estimate the selectivity of WHERE clause
terms when using the skip-scan optimization.
Bump the version number to 3.8.6.