Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.
Add support for a SHARD KEY in the table definition. This is passed down into the storage engine as a hint. The storage engine is free to ignore the hint.
Add a COVERING clause to CREATE INDEX. The value of the key/value entry for each index row is the union of the indexed columns and the covering columns. Short-hand notation "COVERING ALL" generates a covering index.
Send PRAGMA commands into the storage engine as is done with SQLite3.
Forward port all query optimizer enhancements implemented in SQLite3 over the previous year into SQLite4.
Review all other changes made to SQLite over the previous year and forward port all that seem appropriate.
Use decimal arithmetic everywhere within the code. Avoid the use of IEEE 754 binary floating point, except for APIs that have "double" parameters or return values.
Carefully review the entire API and look for other ways to make it simpler and more robust.
Add an extra "unsigned int flags" parameter to sqlite4_close(). Currently unused. Reserved for future features.
Change the callback of sqlite4_exec() to pass down an array of sqlite4_value pointers rather than an array of strings.
Change memory allocation routines to be methods of sqlite4_mm instead of methods of sqlite4_env.
Provide a new routine: sqlite4_msize().
In sqlite4_prepare(), instead of returning a pointer to the first character past the end of the parse, return the number of bytes of SQL text consumed by the parser.
Remove the sqlite4_memory_used and sqlite4_memory_highwater interfaces. The functionality is subsumed by sqlite4_mm_stat().
Get rid of sqlite4_create_function_v2(). Let there be just a single interface for creating functions.
Rename some poorly named interfaces:
- sqlite4_user_data -> sqlite4_context_appdata
- sqlite4_get_auxdata -> sqlite4_auxdata_fetch
- sqlite4_set_auxdata -> sqlite4_auxdata_store
- sqlite4_get_autocommit -> sqlite4_db_transaction_status
- sqlite4_sql -> sqlite4_stmt_sql
- For routines like sqlite4_column_text, sqlite4_value_text(), sqlite4_column_blob(), sqlite4_value_blob(), and so forth, add an extra OUT parameter which returns the number of bytes in the string or blob.
Change the type of text values in places like "sqlite4_column_text()" to "char*" instead of "unsigned char*".
sqlite3_set_authorizer() needs to be two routines: sqlite4_authorizer_push() and sqlite4_authorizer_pop() and there needs to be a destructor.
Add a new extended error code for every error where doing so makes any sense at all.