Experimental implementation of NULLS FIRST/LAST. This branch still has problems - the most significant of which is that ORDER BY clauses with a non-default NULLS FIRST/LAST qualifier can never use an index.
check-in: 07babb0f user: dan tags: nulls-last

In shared-schema mode, handle the case where a connection has created a virtual-table object, but is later assigned a different shared-schema object for which the virtual-table schema has not yet been initialized.
check-in: e30c7414 user: dan tags: reuse-schema

Remove support for SQLITE_ENABLE_STAT3. The sqlite_stat3 table is now ignored,
if it exists. Run ANALYZE using STAT4 to get the equivalent functionality,
which presumably everybody has been doing for a long time now.
check-in: f1cd234c user: drh tags: trunk

Fix spurious "no such table: x1" errors in shared-schema mode that could occur
when a query that is a join across two or more databases needs to call the xConnect() methods of a virtual table.
check-in: edf45cd7 user: dan tags: reuse-schema

Remove support for STAT3. The sqlite_stat3 tables are ignored, if they
exist. STAT4 continues to work as it always has, and as it is a superset of
STAT3 is the recommended replacement.
check-in: 1e17ea2f user: drh tags: omit-stat3

Fix a bug causing "no such table" and other similar sqlite3_prepare*() errors to return SQLITE_SCHEMA instead of SQLITE_ERROR in shared-schema mode when there is an attached database for which the schema has never been loaded.
check-in: 111e2c73 user: dan tags: reuse-schema

Ensure that columns of views and sub-queries that are expressions with
no affinity are comparied without any type conversions, as required in the
documentation. Tickets [61c853857f40da49] and [d52a29a9e6bc55c5].
check-in: 9c8c1092 user: drh tags: trunk

Use 0x40 (ASCII '@') instead of 0x00 to mean "no affinity" so that columns
with no affinity can appear in a zero-terminated string. Use the new
SQLITE_AFF_NONE macro for this new magic number.
check-in: e8234f69 user: drh tags: pending

Ensure that columns of views and sub-queries that are expressions with no affinity are not assigned BLOB affinity. This matches the documentation. Fix for [61c853857f40da49]. (On a branch because there are still subtle issues.)
check-in: e15a0977 user: dan tags: pending

The second option for [61c853857f40da49]: In this mode, columns of VIEWs
and subqueries that are formed by expressions have affinity BLOB rather than
affinity none, as has usually been the case for a while. But this mode fixes
a couple of corner cases involving query flattening and the push-down
optimization where that rule was violated.
Closed-Leaf
check-in: 470ac8d5 user: drh tags: tkt-61c853-B

One of two options on how to address ticket [61c853857f40da49]. In this
mode, we back out the documentation change of
[07b7749da88d54e5]
and change the core to work as it has been documented to work since 2017,
rather than how it has actually worked since 2009.
check-in: 09cd0c0c user: drh tags: tkt-61c853-A

Refactor field Expr.affinity into Expr.affExpr to avoid confusion with other
fields and variables named "affinity" and display affExpr it in
sqlite3TreeViewExpr() output.
check-in: a29f2a7d user: drh tags: trunk

Fix a problem with renaming a table when a view or trigger within the schema uses a FILTER with an aggregate function that is not currently registered with the database.
check-in: 2ac0e42f user: dan tags: trunk

Give the SQLITE_TESTCTRL_PRNG_SEED two arguments. The second argument if not
NULL is a pointer to a database connection which seeds the connection from
its schema cookie. In this way, fuzzers can control the PRNG seed.
Closed-Leaf
check-in: 49aa3448 user: drh tags: prng-seed-test-control

If a query like "SELECT min(a), b FROM t1" visits no rows where "a" is not null, extract a value for "b" from one of the rows where "a" is null. Fix for ticket [41866dc37].
check-in: faaaae49 user: dan tags: trunk

If a query like "SELECT min(a), b FROM t1" visits no rows where "a" is not null, extract a value for "b" from one of the rows where "a" is null. Possible fix for ticket [41866dc37].
Closed-Leaf
check-in: a7277ed0 user: dan tags: tkt-41866dc37

The sqlite3_set_authorizer() interface should only expire prepared statements
when it is setting a new authorizer, not when clearing the authorizer. And
statements that are running when sqlite3_set_authorizer() is invoked should be
allowed to continue running to completion.
check-in: 961e2f08 user: drh tags: trunk

Update "releasetest_data.tcl" so that it is a standalone script that generates sh or batch scripts to run each tcl test run at release time. Update wapptest.tcl to use it.
check-in: 559c2dd6 user: dan tags: trunk

Improved fix for ticket [ced41c7c7d6b4d36] that keeps skip-scan enabled,
but avoids identifying a skip-scan as order-distinct (because it is not)
and thus forces a separate b-tree to implement the DISTINCT clause of a
query. This undoes check-in [a871d69c6de65038] and substitutes a new fix.
check-in: 89bf0399 user: drh tags: trunk

When using an index for both DISTINCT and ORDER BY, do not confuse the number of columns required for distinctness with the number required to get the correct sort order. Fix for [6749cb3c].
check-in: 6ac0f822 user: dan tags: trunk

When using an index for both DISTINCT and ORDER BY, do not confuse the number of columns required for distinctness with the number required to get the correct sort order. Fix for [6749cb3c].
Closed-Leaf
check-in: b4716931 user: dan tags: tkt-6749cb3c

Fix the OP_Affinity operator so that when applying REAL affinity, it
only sets MEM_IntReal if the integer value will fit in 6 bytes or less.
Fix for ticket [ba2f4585cf495231]check-in: 2b221bb1 user: drh tags: trunk

Improve the ".recover" command in the shell tool so that it is not confused by auto-vacuum databases. And so that it can recover tables for which one or more of the column names are SQL keywords.
check-in: 87d76047 user: dan tags: trunk