Changes to the way the planner calculates the costs of various table and index scans. Some test cases still failing.
Store values loaded from the stat1 table as logarithmic values in memory.
If the user provides likelihood() data for a WHERE clause term used as part of an index key, have the planner use it when calculating the expected number of rows visited by the loop.
Fix an sqlite3_stmt_status() problem caused by recent changs on this branch.
Fix an error in estimating of the number of rows visited by a range scan.
Modify internal function whereLoopAdjustCost() so that it does not prefer a skip-scan over a regular index scan even if the regular scan uses a subset of the WHERE terms used by the skip-scan.
Update test script analyze3.test to account for the fact that SQLite now prefers a full-table scan over a non-covering index scan that visits a large percentage of the table rows.
Add an extra column to a table in analyze9.test to give the planner a little more reason to select an index.
Update unordered.test to take into account for the fact that SQLite now prefers a full-table scan over a non-covering index scan that visits a large percentage of the table rows.
The trunk assumes that an open range constraint on an indexed term (col>?) term matches 1/4 of the indexed rows, and that a closed constraint (col BETWEEN ? AND ?) matches 1/64. Change this branch to do the same.
Do not reduce the number of rows scanned at all for "IS NOT NULL" constraints. Fix a bug in calculating the number of rows visited by scans of partial indicies.
Fix a test case so that it updates sqlite_stat1 consistently.
Ignore likelihood() values on indexed IPK lookups.
Merge trunk changes into this branch.
Test that the default values used when sqlite_stat1 data is not available are calculated correctly. Fixes for the same.
Fix long-standing typos in comments.
Improved rendering of LogEst values corresponding to real values near 0.0
in the tool/logest.c utility program.
Fix a couple of out-of-date comments in where.c.
Update a couple of test cases to account for the fact that this branch prefers an index scan and partial sort over a full-table scan and full external sort.
Add text to the header comment of whereLoopAddBtree() describing how the costs of various b-tree loops are estimated.