If a single page is written to the wal file more than once, instead of appending the second and subsequent copy to the wal file, overwrite the first.
Update: See the important bug fix at [f694e60a]!
(check-in: d493d4f1 user: dan tags: trunk)

All WAL frame overwrites even if there are active savepoints. This is safe
because a ROLLBACK TO will cause all reverted pages to be rewritten to the
WAL file prior to COMMIT.
(check-in: 99b31a6b user: drh tags: wal-overwrite-frames)

If it is known that checksums will be recalculated on transaction commit, skip calculating checksums when appending frames to the wal file. When recalculating checksums, recalculate them starting with the first overwritten frame - not the first frame in the transaction.
(check-in: 16b34f25 user: dan tags: wal-overwrite-frames)

Have the vdbe layer call sqlite3BtreeEnter() on all b-trees in use from within sqlite3VdbeExec() even in SQLITE_THREADSAFE=0 builds. This ensures that BtShared.db is set correctly.
(check-in: d0214602 user: dan tags: shared-cache-fix)

Add the "sqlite3 -sourceid" command in the TCL interface. Use that command and
others to output additional information about the test configuration at the
conclusion of a TCL test.
(check-in: 4f80440b user: drh tags: trunk)

Fix a corner case in the opcode-array reuse logic where the number of bytes of
reusable space might be computed to be a negative number, due to unusual
system alignment restrictions and rounding error.
(check-in: 1aa53014 user: drh tags: trunk)

Fix an OOM handling problem in fts5 detail=none and detail=col modes. Also a bug in the xInst() API when used with detail=col and column filtering expressions. Update the matchinfo() test function so that 'b' is fast with detail=col tables.
(check-in: ee38f9df user: dan tags: fts5-offsets)

A new approach to very large sqlite3_mprintf() strings: Back out the
[d655a665] check-in and instead make the size fields in StrAccum unsigned.
Strings generated by sqlite3_mprintf() can now be as large as 2^31-1 bytes.
(check-in: 7adb789f user: drh tags: trunk)

Changes to run many fts5 tests with detail=none and detail=col tables as well as the default detail=full. Also fixes for the bugs uncovered by running said tests.
(check-in: 6322a1d9 user: dan tags: fts5-offsets)

Changes to the way that the default BINARY collating sequence is recorded
result in a slightly smaller and slightly faster executable. More work could
be done to make this cleaner.
(check-in: 2081d757 user: drh tags: trunk)

Add the xPhraseFirstColumn() and xPhraseNextColumn() API functions to fts5. For iterating through the set of columns that contain intances of a phrase.
(check-in: 8c30605b user: dan tags: fts5-offsets)

Change the name of the offsets=0 option to "detail=column". Have the xInst, xPhraseFirst and other API functions work by parsing the original text for detail=column tables.
(check-in: 228b4d10 user: dan tags: fts5-offsets)

Enhance the 'utc' modifier on date/time functions so that if the LHS is
already known to be in UTC, the modifier becomes a no-op. This is not an
incompatibility because the behavior is documented as "undefined" in that
scenario.
(check-in: b910a3d5 user: drh tags: trunk)

Ensure that the Expr objects that describe indexed expressions are not modified
by code generation. Fix for an assert() problem found by Jon Metzman using AFL.
(check-in: 34073ce8 user: drh tags: trunk)