Deactivate the DISTINCT in a SELECT on the right-hand side of an IN operator,
since it should not make any difference in the output but dues consume extra
memory and CPU time.
check-in: f4cb5365 user: drh tags: trunk

Add the "eForce" parameter to the sqlite3_multiplex_shutdown() entry point
in test_multiplex.c. Shutdown is forced if true. Shutdown is not done if
there are pending database connections and eForce is false, but an error log
entry is made instead.
check-in: c7303d01 user: drh tags: trunk

Ensure that the correct number of columns in a UNIQUE index are checked for
uniqueness, regardless of whether or not the original table has a ROWID or
if the columns are NOT NULL, etc. Ticket [9a6daf340df99ba93c].
check-in: 6b785e92 user: drh tags: trunk

Improvements to comments in the multi-threaded sorter. Also include a
function name change for clarity. And add a test to help show that the
MergeEngine object is only used by a single thread.
check-in: 9af50a87 user: drh tags: threads

Fix a bug in the whereRangeSkipScanEst() procedure (added by
check-in [d09ca6d5efad3e4cfa]) where it fails to consider the possibility
of a ROWID column when computing the affinity of a table column.
check-in: 6aea2258 user: drh tags: trunk

In the command-line shell, in CSV output mode, terminate rows with CRNL but
do not expand NL characters in data into CRNL. Provide the extra -newline
command-line option and the extra argument to .separator to designate an
alternative newline character sequence for CSV output.
check-in: 16c8ce10 user: drh tags: trunk

Ugh. Consecutive UNIQUE index entries are only distinct if the index is
on NOT NULL columns. So the previous version was not quite right. This
check-in fixes the problem.
check-in: 30033f96 user: drh tags: faster-analyze

When running ANALYZE, it is not necessary to check the right-most key column
for changes since that column will always change if none of the previous
columns have.
check-in: 48f40861 user: drh tags: trunk

Add the OP_ReopenIdx opcode that works like OP_OpenRead except that it becomes
a no-op if the cursor is already open on the same index. Update the
OR-optimization logic to make use of OP_ReopenIdx in order to avoid
unnecessary cursor open requests sent to the B-Tree layer.
check-in: 77f412ca user: drh tags: trunk

The optimization of check-in [b67a6e33f2] does not work (it generates
incorrect VDBE code) if an OR term is AND-ed with a constant expression.
So back that optimization out and add a test case to make sure it does not
get added back in.
check-in: eed754fe user: drh tags: trunk