Call fsync() right after ftruncate() when in journal_mode=TRUNCATE and
when synchronous=FULL in order to ensure that transactions are durable
across a power loss that happens moments after the commit.  Proposed
fix for [https://bugzilla.mozilla.org/show_bug.cgi?id=1072773].
This is a cherrypick of [3e922208b68563489].
In the OP_Column opcode, when extracting a field that is past the end of
a short record (because the row was originally inserted prior to ALTER TABLE
ADD COLUMN) then make sure the output register is fully NULL and does not
contain leftover flags (such as MEM_Ephem) from its previous use.
Fix for ticket [43107840f1c02].  This is a cherrypick of
check-in [24780f8ddc1683fc].
Disable the use of strchrnul() unless specifically enabled by compile-time
options.  Cherrypick of check-in [e580470db77d6da9]
Fix problems with running UPDATE and DELETE against a VIEW and referencing
the rowid in the WHERE clause.  This is a cherrypick of [95f8ebdbf87326f2]
and [8523670d50004f3].
Increase the version number to 3.8.7.1
Version 3.8.7.1
Add the experimental sqlite3_stmt_scanstatus() API.
Minor fixes and documentation improvements for sqlite3_stmt_scanstatus().
Add requirements marks and make minor tweaks to documentation.
If SQLITE_ENABLE_STMT_SCANSTATUS is defined, record the number of times each VDBE opcode is executed. Derive the values returned by sqlite3_stmt_scanstatus() from these records on demand.
Minor performance enhancements to SQLITE_ENABLE_STMT_SCANSTATUS code.
Remove unused variable from struct WhereInfo. Add some explanatory comments to new code.
When enlarging the size of a StrAccum object, use sqlite3DbMallocSize() to
record the entire size of the allocation, not just the requested size.
Use exponential buffer size growth in StrAccum, as long as the size does not
grow to large, to avoid excess memory allocation resize operations.  Also,
document the fact that setting scratch memory causes SQLite to try to avoid
large memory allocations.
Add further tests. Fixes so that compilation without ENABLE_STMT_SCANSTATUS works.
Refactor the interface to make it more easily extensible.
Fix a typo preventing this from building with SQLITE_ENABLE_STMT_SCANSTATUS defined.
Add the experimental sqlite3_stmt_scanstatus() API. For comparing the number of rows actually visited by a loop with the estimate used by the query planner.
Updates to the sqlite3_stmt_scanstatus() documentation.  No changes to code.
Add the SQLITE_CONFIG_PCACHE_HDRSZ option for sqlite3_config().