Fix a handful of problems discovered in prior releases:
Enhance the OP_OpenDup opcode of the bytecode engine so that it works even if the cursor being duplicated itself came from OP_OpenDup.
When materializing correlated common table expressions, do so separately for each use case, as that is required for correctness.
Improvements to error messages generated by faulty common table expressions.
Fix to the SELECT statement syntax diagram so that the FROM clause syntax is shown correctly.
Improvements the xBestIndex method in the implementation of the wholenumber virtual table extension so that it does a better job of convincing the query planner to avoid trying to materialize a table with an infinite number of rows.
Patch release to fix problems that were discovered shortly after the previous release:
Fix a problem with growing databases in the Append VFS extension.
Ensure that date/time functions with no arguments (which generate responses that depend on the current time) are treated as non-deterministic functions.
Limit the new UNION ALL optimization so that it does not try to make too many new subqueries.
Fix a potential use-after-free bug when processing a a subquery with both a correlated WHERE clause and a “HAVING 0” clause and where the parent query is an aggregate.
New TDISQLite3UniDirQuery.IntegerPrimaryKeyField option to work around potential data loss due to the 32-bit limitation of Delphi's ftAutoInc DataType.
Query planner enhancements.
Multiple recursive SELECTS in recursive common table expressions.
Better error messages from CHECK constraint failures.