Defer computing the MemPage.nFree value of an in-memory btree page
until it is actually needed, since for many pages it is never needed.
This checkin works sufficiently to prove the concept, but still has issues
with exception handling.
(check-in: 1d43ee40 user: drh tags: deferred-free-space)

Change the sqlite3VdbeMemGrow() routine so that it no longer guarantees a
minimum size of 32 bytes. That minimum is no longer required, and without
the extra check for the minimum size, the routine runs faster.
(check-in: 5c499da8 user: drh tags: trunk)

Give the sqlite3 object a pointer to the current Parse so that if an OOM
occurs, it can automatically set the Parse.rc value to SQLITE_NOMEM. This
avoids a frequent extra test of db.mallocFailed in the innermost parser loop.
(check-in: 5c663804 user: drh tags: trunk)

Do not do the optimization that attempts to pull expression values from
an index on that expression when processing a multi-index OR
(see check-in [a47efb7c8520a0111]) because the expression transformations
that are applied become invalid when the processing moves off of the current
index and on to the next index. Fix for ticket [4e8e4857d32d401f].
(check-in: 440a7cda user: drh tags: trunk)

When extending the size of SrcList objects, do not attempt to use
extra space on the end of the allocation, as that provides scarcely any
performance benefit but does greatly complicate cross-platform testing.
(check-in: 3087a0c3 user: drh tags: trunk)

Back out check-in [008112bcef561a8], reenabling deprecated PRAGMAs when the
SQLITE_OMIT_DEPRECATED compile-time option is used, because way too many
TH3 tests depend on those deprecated PRAGMAs.
(check-in: 9dbf512d user: drh tags: trunk)

Slight adjustment to the printf formatter large memory allocation detector
so that it does not overestimate the amount of space needed for
oversize %d conversions.
(check-in: 1aee70d6 user: drh tags: trunk)

Prevent the printf formatter from doing large memory allocations - larger
than either the size of the static buffer for interfaces like
sqlite3_snprintf(), or larger than SQLITE_LIMIT_LENGTH for interfaces that
are associated with a database connection. This helps to prevent DOS
attacks on products that let hostile sources inject arbitrary SQL. It also
helps fuzzers run faster and more effectively.
(check-in: 179e5d46 user: drh tags: trunk)

Improve the strict enforcement of cell sizes in balancing from
check-in [12713f320b2c1def] so that it also works with table-btrees
in addition to index-btrees.
(check-in: ef27e7a0 user: drh tags: trunk)

Add the SQLITE_CONFIG_MEMDB_MAXSIZE configuration option for configuring
the default maximum size of an in-memory database created using
sqlite3_deserialize(). This is necessary to make the interface reasonably
testable.
(check-in: cb72ee04 user: drh tags: trunk)

If the amalgamation file "sqlite3.c" is generated using the
SQLITE_ENABLE_UPDATE_DELETE_LIMIT option, but then subsequently (mis-)compiled
without that option, and then a particular syntax error could cause
a memory leak, but for this fix.
(check-in: 1bb17c86 user: drh tags: trunk)