Not logged in

The initial check-in for each branch:

14:29 [b066d5a6] Closed-Leaf: Avoid using snprintf as a member variable of a struct in sqlite3ext.h. This causes problems on OSX. (user: dan, tags: sqlite3ext-fix)
15:06 [95b7687f] Move some test logic out of tclsqlite.c and into auxiliary test_*.c files. This is a work in progress. (user: drh, tags: tclsqlite-cleanup)
15:28 [d1ef9eab] Closed-Leaf: Add the experimental "sqlite_expert" extension. Used to find index definitions that might help with specified SQL queries. (Later:) Parked on a dead-end branch due to an assertion fault in TH3. We will merge again after the bug is fixed. (user: dan, tags: withdrawn)
13:48 [c2c1d656] Initial implementation of the "sqlite_dbpage" virtual table. Currently it is read-only and has a place-holder xBestIndex. (user: drh, tags: dbpage)
11:12 [0f160a8a] Create a branch for the 3.21.0 release. Development continues on trunk. (user: drh, tags: branch-3.21)
20:57 [e2fc5c81] Add experimental mode that uses two wal files. Activated using "PRAGMA journal_mode = wal2". (user: dan, tags: wal2)
03:24 [f10ece96] Closed-Leaf: Simplification to the logic that computes column type names. Update: Does not work in all configurations. (user: drh, tags: does-not-work)
20:06 [042d655d] Do not flatten subqueries that contain an ORDER BY or GROUP BY clause and can be implemented using a co-routine. (user: drh, tags: prefer-coroutine-sort-subquery)
07:46 [d71eeaab] Leaf: Experimental change so that snapshot transactions always lock the wal file - preventing writers or truncate-checkpointers from wrapping it. (user: dan, tags: snapshots-lock-wal)
14:03 [3fbfa9a8] Leaf: The sqlite3_snapshot_describe() interface useful for debugging snapshot logic. (user: drh, tags: sqlite3_snapshot_describe)
16:28 [d4a30b91] Add extension "mmapwarm.c". Provides function sqlite3_mmap_warm(), used to "warm up" the memory mapping used by SQLite in mmap mode to access db file content. (user: dan, tags: mmap-warm)
18:38 [ebada072] Leaf: Experimental sqlite3_stmt_retryable() interface. (user: drh, tags: sqlite3_stmt_retryable)
20:09 [afe45271] Leaf: Add the highly-experimental "PRAGMA noop_update=TRUE" command. (user: drh, tags: begin-concurrent-pnu)
18:49 [de2e3717] Leaf: Add the highly-experimental "PRAGMA noop_update=TRUE" command. (user: drh, tags: pragma-noop-update)
18:03 [ec37ad6d] Hack to have multiple connections to a single file share a single memory mapping of the databse file. (user: dan, tags: shared-mapping-hack)
20:38 [8fa923ca] Improved detection of malformed records by PRAGMA integrity_check. (user: drh, tags: improved-integrity-check)
19:41 [34c8e952] Enhance the vtab interface to handle IS, !=, IS NOT, IS NULL and IS NOT NULL constraints. (user: dan, tags: vtab-extra-ops)
08:03 [e63d1a7c] Leaf: Use a mutex-free PRNG for the random() and randomblob() SQL functions and for the randomness used during checkpoint operations. (user: drh, tags: mutex-free-randomness)
10:55 [c93298d5] Leaf: Instrumentation and changes in an effort to reduce thread contention. (user: drh, tags: reduced-thread-contention)
01:14 [bf65dae8] Closed-Leaf: Update the mechanism used to keep track of what kind of syncing to do for WAL transaction commits and checkpoint operations. Use the checkpoint-style of syncing to sync the header of a new or restarted WAL file. (user: drh, tags: wal-sync-refactor)
19:44 [ca5dcb4a] Leaf: mksourceid still does not work right. (user: drh, tags: mistake)
19:19 [d4c05e04] Add the "mksourceid" program to the build process. That program changes the SQLITE_SOURCE_ID if the source tree has been modified in any way. (user: drh, tags: mksourceid)
01:07 [346a710d] Fix a problem allowing a conflicting transaction to be committed in the case where more than one 32KB shared-memory page has been written to since the transaction was started. (user: drh, tags: begin-concurrent-branch-3.19)
15:19 [ab9ee4c1] Experimental changes that allow a WITHOUT ROWID virtual table to be writable as long as it has only a single-column PRIMARY KEY. (user: drh, tags: writable-vtab-without-rowid)
20:35 [a6256980] Leaf: Add experimental sqlite3_open_v2() flag SQLITE_OPEN_REUSE_SCHEMA. For sharing identical in-memory schema objects between connections. (user: dan, tags: reuse-schema)
18:13 [46c3085d] Avoid casting a value larger than 2^31 to a (size_t) on systems where it is a 32-bit type. (user: dan, tags: mmap-size-limit)
15:50 [d8637bad] Add SQLITE_API qualifiers to public API functions in header file sqlite3rbu.h. (user: dan, tags: sqlite3rbu.h-fix)
19:59 [03d94388] Enhance the code in unionvtab.c to also provide the "swarmvtab" virtual table module. There are still several problems on this branch. (user: dan, tags: union-vtab)
16:01 [09834279] Move the generation of output column names earlier, to right after name resolution and before query transformations such as flattening. This prevents the names from getting mangled by query transformations, and obviates hacks in the query flattener that attempt to work around the name mangling. The resulting code is smaller and faster and gives more consistent output. This is an alternative fix to ticket [de3403bf5ae5f72ed]. (user: drh, tags: early-column-names)
03:33 [439cc5c5] In the query flattener, only add AS clauses to output columns of the outer query that are copied directly from the inner query. Formerly, all columns of the outer query received an AS clause if they did not have one already. This is a proposed fix for ticket [de3403bf5ae5f72]. (user: drh, tags: flattener-column-names)
02:02 [def55027] Backport of all batch-atomic-write changes through check-in [67bad7fb9b] (user: drh, tags: batch-atomic-write-3.19)
14:04 [49cf31da] Closed-Leaf: A demonstration of how FTS3 cursor pointers can be passed from the MATCH operator to the snippet() function securely and opaquely without having to use the sqlite3_result_pointer() and sqlite3_value_pointer() interfaces. (user: drh, tags: pass-pointer-as-blob)
03:48 [3d9e841f] Add a destructor argument to sqlite3_bind_pointer() and sqlite3_result_pointer(). (user: drh, tags: pointer-with-destructor)
18:26 [ac1fd6be] Closed-Leaf: Allow ATTACH and DETACH to occur inside of a transaction. (user: drh, tags: attach-in-trans)
15:12 [f39cb76b] Release candidate 2 for 3.20.0. (user: drh, tags: branch-3.20)
07:45 [69906880] Leaf: Add new interfaces sqlite3_result_pointer(), and sqlite3_value_pointer() and use them to transfer the eponymous FTS3 column pointer to the snippet() and offsets() routines. This changes is a cherry-pick of [f0f49224] with version-specific edits. That check-in was inspired by check-in [72de49f2]. (user: drh, tags: branch-3.9.2)
19:49 [416973ed] Add support for F2FS atomic writes. Untested at this point. (user: dan, tags: batch-atomic-write)
16:55 [10556ee4] Leaf: Experimental API sqlite3_stmt_refresh() to force a prepared statement to recompile if it needs to due to a schema change or other factor. (user: drh, tags: sqlite3_stmt_refresh)
19:48 [0a5e1c04] Allow indexes to be created on date/time functions as long as the 'now' date and the 'localtime' and 'utc' modifiers are not used. (user: drh, tags: index-on-date-func)
17:12 [55791928] Closed-Leaf: Create "pure" versions of the date/time functions that omit the 'now' feature and are therefore deterministic and usable in an index. (user: drh, tags: pure-date-functions)
11:20 [929bc46b] Add VFS interfaces needed to make use of batch atomic write capabilities in the underlying filesystem. (user: drh, tags: batch-atomic-write)
19:07 [043d6ce8] For FROM-clause subqueries that cannot be flattened, try to push relevant WHERE clause terms of the outer query down into the subquery in order to help the subquery run faster and/or use less memory. Cherry-pick from [6df18e949d36]. Still need to backport bug fixes associated with that check-in. (user: drh, tags: push-down-backport)
09:30 [f4f7196b] Closed-Leaf: Use integer handles for fts3 cursors for a small performance improvement. (user: dan, tags: fts3-int-cursor, union-vtab)
00:40 [211cce04] Add an experimental "pointer type" parameter to sqlite3_bind_pointer(), sqlite3_result_pointer(), and sqlite3_value_pointer(). The pointer type is a string that must compare equal using strcmp() or else the pointer comes through as a NULL. (user: drh, tags: pointer-types)
20:48 [62a86aa6] Add the "unionvtab" virtual table extension in ext/misc/unionvtab.c. (user: dan, tags: union-vtab)
13:35 [035a86ec] First release candidate for version 3.20.0. (user: drh, tags: branch-3.20)
14:33 [1f9c1f35] When testing non-indexed WHERE constraints, test those that involve correlated sub-queries last of all. This increases the chances of not having to run the sub-query at all. (user: dan, tags: defer-where-subqueries)
18:27 [dbb59f61] Leaf: Disable compiler intrinsics when using the Intel C Compiler. (user: drh, tags: icc-fix)
15:43 [e5f01d7f] Add new pragmas: "function_list" and "module_list" (user: drh, tags: list-pragmas)
17:36 [04ef6783] Initial implementation of a highly experimental interface for listing all keywords and symbolic names for an SQLite database connection. (user: drh, tags: experimental-namelist)
23:09 [d9f4a831] Add APIs for binding pointers that can be used by app-defined functions. (user: drh, tags: bind-pointer)
20:13 [2b5df3e8] Closed-Leaf: Avoid reading or writing the 32 locking bytes at the end of the first meta-page of an LSM database. (user: dan, tags: lsm-metapage-fix)
21:47 [b959c629] Alternative implementation of exprCompareVariable(). (user: drh, tags: partial-index-variables)
17:29 [942c3ef8] Closed-Leaf: Instead of the new sqlite3_prepare_v3() interface, provide the SQLITE_DBCONFIG_PREPARE_FLAGS interface which sets the flags on the single next call to sqlite3_prepare_v2() or its cousins. (user: drh, tags: dbconfig-prepare-flags)
15:47 [0ff057d8] Build the "stmts" virtual table into the amalgamation. It is active only when compiled using SQLITE_ENABLE_STMTSVTAB. That option is supplied to the command-line shell. (user: drh, tags: stmts-vtab)
20:23 [dfa9a4d5] Support clients within a single process only. (user: dan, tags: server-process-edition)
16:13 [cbe441b2] Closed-Leaf: Add the "-unsetnull 1" option to the "sqlite3" command in the TCL interface. (user: drh, tags: unsetnull-option)
13:57 [7076e828] Add the SQLITE_DBCONFIG_ENABLE_QPSG option to activate the query planner stability guarantee. This involves refactoring the sqlite3.flags bitvector to carve out a free bit to use. (user: drh, tags: enable-QPSG)
18:10 [7b59c353] Consider the values bound to SQL variables when determining whether or not a partial index may be used. (user: dan, tags: partial-index-variables)
16:51 [e4a022be] Closed-Leaf: When generating individual loops for each ORed term of an OR scan, move any constant WHERE expressions outside of the loop, as is done for top-level loops. (user: dan, tags: or-optimization)
11:44 [f1682f0f] Closed-Leaf: Experimental "PRAGMA secure_delete=FAST" pragma. The intent is to overwrite deleted content with zeros without increasing the amount of disk I/O. (user: drh, tags: fast-secure-delete)
19:06 [c21628e9] Leaf: Avoid adding an artifical "LIMIT 1" on scalar subqueries that do not need it. This seems like a pointless optimization as it makes minimal run-time difference but does increase code complexity. Parked on a branch for historical reference. (user: drh, tags: subquery-limit-opt)
19:51 [bc1951d6] Rework the code in ctime.c a bit to report on more compile time options. And to only output configuration options passed in to SQLite, not the default values of #define symbols set automatically. Also generate the large array in ctime.c using new script tool/mkctime.tcl, instead of entering it manually. (user: dan, tags: ctime-refactor)
10:15 [e3038fbf] Leaf: Failed version 3.18.1. Somehow I managed to omit the bug fix which was the entire purpose of 3.18.1 in the first place! (user: drh, tags: mistake)
23:44 [30c50f0e] Ensure pointer map entries are always added when a row that does use overflow pages replaces one that does not in an auto-vacuum database. Fix for [fda22108]. (user: drh, tags: branch-3.18)
10:55 [c81f260c] Leaf: Cause the ANALYZE command to build sqlite_stat1 table entries for empty tables with the assumption that such tables really contain 10 elements. This gives better query plans for tables that are truely empty, but is likely to cause problems in legacy systems, so the change is kept off trunk. Some TCL tests fail on this check-in due to the new stat1 entries. (user: drh, tags: analyze-empty-tables)
00:54 [4a25c588] Add interfaces sqlite3_prepare_v3() and sqlite3_prepare16_v3() with the extra prepFlags argument. Add the SQLITE_PREPARE_PERSISTENT option as one bit in that argument. (user: drh, tags: prepare_v3)
16:21 [b57d5104] Closed-Leaf: Add the SQLITE_STMTSTATUS_MEMUSED option for sqlite3_stmt_status() that reports the amount of heap memory used for a single prepared statement. (user: drh, tags: stmtstatus-memused)
14:57 [c733a1de] Avoid unnecessary calls to fstat() to determine the database file size. (user: drh, tags: io-opt)
18:05 [214d238a] Leaf: Add debugging functions btreePageOriginFile() and btreePageOriginOffset(). (user: dan, tags: btree-debug)
20:46 [f2b829ec] Branch for the 3.19 release. (user: drh, tags: branch-3.19)
18:17 [cfa4aa20] Closed-Leaf: Fix a documentation typo. No changes to code. (user: drh, tags: doc-type)
15:20 [ff530675] Negative N values in sqlite3_get_auxdata() and sqlite3_set_auxdata() can be used to access an auxiliary data cache over all functions in a single prepared statement. (user: drh, tags: auxdata-cache)
18:29 [2c145ee6] Do not invoke codec macros when reading or writing an in-memory sub-journal. (user: dan, tags: codecless-inmemory-subjournal)
15:15 [478c34b9] Initial implementation of an optimization that attempts to reuse the same materialization of a view on a self-join of the view. (user: drh, tags: materialized-view-reuse)
20:53 [5375a3ce] Automatically transfer terms from the HAVING clause to the WHERE clause of an aggregate query in cases where the result of evaluating the term depends only one one or more of the GROUP BY expressions (and on no other inputs). (user: dan, tags: having-where-optimization)
19:59 [afe68f0a] Within a loop that uses a non-covering index test, test non-indexed terms that can be tested without seeking the main table cursor before those that cannot. (user: dan, tags: pushdown-optimization)
20:45 [64ecf7c7] Experimental implementation of pessimistic page-level locking based on rollback mode. (user: dan, tags: server-edition)
16:08 [c62e3582] Avoid creating a temp table in the user database in the sqlite3_expert code. Trouble is, this makes sampling for stat1 data much slower. (user: dan, tags: schemalint-failure)
17:18 [1838a59c] An initial attempt to optimize VIEWs that occur as the right operand of a LEFT JOIN. This particular check-in does not work correctly because it does not deal with the case of columns in the VIEW that return non-NULL even when all columns in the table of the VIEW are NULL because of the LEFT JOIN. (user: drh, tags: left-join-view)
01:19 [132339a1] Forward port the skip-ahead-distinct branch which was abandoned for some reason that I do not recall. This port should have been achived by a merge of trunk into the previous head of skip-ahead-distinct, but that did not work. So I had to manually "rebase" the changes. (user: drh, tags: skip-ahead-distinct)
19:58 [477bea9e] Closed-Leaf: Avoid updating unaffected indexes on a table as part of an UPDATE that requires foreign key processing in some cases. (user: dan, tags: fkey-optimization)
19:41 [a52ef2ad] Proof of concept for the ability to use the expression columns in an index on expressions in place of equivalent expressions in the result set or in the WHERE clause. This check-in compiles but is mostly untested. (user: drh, tags: covering-index-on-expr)
11:45 [4c2b5729] Closed-Leaf: Use replace() instead of char() to quote newline and return characters in strings in the output of .dump, to avoid excess expression complexity. (user: drh, tags: shell-fix)
18:48 [424a0d38] Version 3.18.0 (user: drh, tags: release, branch-3.18, version-3.18.0)
21:24 [a2674440] Initial implementation of the json_mergepatch(A,B) SQL function. (user: drh, tags: json_mergepatch)
18:14 [78030c0f] If the user has not set it explicitly, set the "PRAGMA synchronous" setting to SQLITE_DEFAULT_SYNCHRONOUS when a database connection changes from wal to rollback journal mode. (user: dan, tags: default-synchronous-fix)
19:26 [74c5ace4] Infrastructure for an extension C-library to implement sqlite3_db_dump() and a corresponding "dbdump" command-line utility - both of which do the same work as the ".dump" command of the CLI. (user: drh, tags: dbdump)
01:56 [8b2954dd] Closed-Leaf: The output of the ".dump" command in the CLI quotes newline and carriage-return characters using "char(10)" and "char(13)". (user: drh, tags: string-quoting-dump)
15:55 [77dfe2ab] Closed-Leaf: Add the SQLITE_MAX_MEMORY compile-time option that provides a hard upper bound on the amount of memory that SQLite will use, per process. (user: drh, tags: max-memory-option)
16:32 [5dc82a15] Closed-Leaf: Add the --recovery-mode option to the CLI ".dump" command. This involves enhancing the "PRAGMA reverse_unordered_selects" command to accept a "TOGGLE" option. Recovery mode used to be always on. Now it is opt-in. Not sure this is the correct approach. Also not sure if TOGGLE is a good feature to have on boolean PRAGMA statements. (user: drh, tags: dump-recovery)
23:29 [aacac906] Leaf: Refactor the output logic in the CLI. Not sure we want to go this way. Just saving the work for historical reference, or in case I decide to come back to it. (user: drh, tags: shell-print-refactor)
14:45 [811a5599] When saving the state of an RBU update in the incremental-checkpoint phase, sync the database file. Otherwise, if a power failure occurs and the RBU update resumed following system recovery, the database may become corrupt. Cherrypick of [edee6a80]. (user: dan, tags: version-3.17.0-rbu-fixes)
14:52 [fe41bb56] Closed-Leaf: Add an sqlite3_set_last_insert_rowid() method. Use it to work around fts4 and fts5 modifying the last-insert-rowid unintuitively from within commit processing. (user: dan, tags: set-last-insert-rowid)
19:58 [202b1c02] Optimize defragmentPage() in the case where the page contains either one or two free-blocks and a small number of fragmented bytes. (user: dan, tags: defragmentpage-opt)
14:15 [549bae08] Enhance "PRAGMA integrity_check" so that it verifies CHECK constraints. (user: drh, tags: integrity-check-improvements)
14:04 [7a62fc6a] Leaf: The VDBE cycle counts for the sqlite3_progress_handler() callback are now cumulative. Leftovers from the previous statement are applied to the next statement. (user: drh, tags: cumulative-progress-count)
13:29 [9626b41e] Leaf: Proof of concept for a "PRAGMA vdbe_cycle_limit=N" command. When N>0, invoke sqlite3_interrupt() whenever any byte code program uses more than N virtual machine cycles. (user: drh, tags: vdbe_cycle_limit)
20:05 [c1adf959] Leaf: Add an optimization to OP_Column to speed up sequential OP_Column instructions that read earlier fields from the same cursor. Attempt to reorder OP_Column opcodes so as to take advantage of this. (user: dan, tags: sort-column-opcodes)
21:23 [38298ef9] Leaf: Increase the estimated cost of sorting when sorting wide results sets, to account for the extra storage space and I/O required for the external sort. (user: drh, tags: apple-increased-sorting-cost)
13:38 [85026c8e] Enhance the Index and Table objects so that they remember if their stats come from the sqlite_stat1 table. Make the "PRAGMA stats" an SQLITE_DEBUG only pragma. Add the flags column to "PRAGMA stats". These are all preliminary steps toward a "PRAGMA analyze_ifneeded;" feature. (user: drh, tags: auto-analyze)
21:29 [aa0703e5] Increase the estimated cost of sorting when sorting wide results sets, to account for the extra storage space and I/O required for the external sort. (user: drh, tags: increased-sorting-cost)
16:11 [a2b4f60b] Add the companion "carray_asc" table-valued function to the carray extension. (user: drh, tags: carray_asc)
16:04 [396b9d99] Closed-Leaf: Bummer. Checked this in as a branch off of the wrong branch.... Was: Add the companion "carray_asc" table-valued function to the carray extension. (user: drh, tags: mistake)
23:58 [80481754] Experimental enhancements to mutex debugging. (user: mistachkin, tags: mutexDbg2)
17:38 [ad867e87] Version 3.17.0 release candidate (user: drh, tags: branch-3.17)
19:10 [9962c10a] Leaf: Avoid preparing a SELECT statement each time an UPDATE or DELETE by docid is executed against an fts3 table. (user: dan, tags: fts3-seekstmt-cache)
13:12 [95ee745f] Closed-Leaf: Close sqlite3_blob objects on xSync rather than waiting until xCommit. (user: drh, tags: rtree-blob-agressive-release)
14:44 [a7674ead] Modify the sqlite3SelectDup() routine to avoid recursing on Select.pPrior. (user: dan, tags: recursive-selectdup)
23:57 [53b77838] Add the sqlite3_blob_reset() interface. Enhance the behavior of sqlite3_blob objects so that they can go active again after encountering an error by rerunning sqlite3_blob_reopen(). More work needed on the documentation. (user: drh, tags: sqlite3_blob_reset)
02:28 [fc4917d7] Use the sqlite3_blob interface for reading values from the %_node shadow table in RTREE. This is a work in progress. There are still some minor problems. (user: drh, tags: rtree-sqlite3_blob)
00:46 [01d97e5b] Closed-Leaf: This is an experimental patch that ensures that all cursors have their position saved prior to starting a ROLLBACK TO. (user: drh, tags: savepoint-rollback)
22:43 [997f765b] Closed-Leaf: Fix harmless compiler warnings seen with MSVC. (user: mistachkin, tags: msvcWarn)
16:34 [02f6293f] Remove an unnecessary initialization of the pOp variable in sqlite3VdbeExec(). (user: drh, tags: micro-optimizations)
19:44 [856f8604] Experimental change to invoke the preupdate hook when WITHOUT ROWID tables are written. (user: dan, tags: preupdate-without-rowid)
14:58 [118ded40] Experimental enhancement to automatically trim NULL values from the end of records, for a reduced disk footprint. This change also involves increasing the P5 operand from 8 to 16 bits. (user: drh, tags: trim-nulls)
04:41 [57d8dad3] Closed-Leaf: Ensure that sqlite3_blob_reopen() correctly handles short rows. Proposed fix for ticket [e6e962d6b0f06f46e]. Further testing needed. (user: drh, tags: blob_reopen-fix)
21:12 [64131724] Leaf: Experimental changes to permit a VFS to directly override the initial page size. (user: mistachkin, tags: pagePerSector)
16:54 [8e5cfb20] B-tree optimization: When seeking on a rowid table that has already been positioned, check to see if the new row happens to be the next row on the same leaf page. That is a reasonably common case, and if it is true it avoids a full binary search. (user: drh, tags: btree-moveto-neighbor)
15:58 [ffda1d1e] Add extra (somewhat inefficient) trace callbacks for triggers if SQLITE_TRACE_TRIGGER is defined. (user: dan, tags: trigger-trace)
15:30 [4cda3b30] Leaf: A proof-of-concept for running sqlite3_blob_open() without using OP_Column when operating on a pure key/value table. This demo does not include any corrupt database checking. Uses about 3% fewer CPU cycles on a key/value performance test. (user: drh, tags: kv-access-opt-demo)
20:14 [2a8f6c89] Add temporary code to record and report on the set of b-tree pages read and written by the current transaction. This is likely still buggy. (user: dan, tags: transaction-pages)
17:20 [a435841e] Baseline interface definition for the experimental sqlite3_kv accessor object. (user: drh, tags: sqlite3_kv)
16:01 [9d0dfe0b] Add test cases for tickets [91e2e8ba6ff2e2] and [7ffd1ca1d2ad4ec]. (user: drh, tags: automatic-index-affinity)
11:54 [e42ed9b4] Leaf: An example showing how to improve performance of sqlite3VdbeSerialPut() using the GCC intrinsic function __builtin_bswap64(). (user: drh, tags: builtin-bswap64)
15:19 [bd8b977a] Leaf: Test case macros to show that the previous check-in is well tested. (user: drh, tags: extra-testcase-macros)
16:52 [381fd34b] Attempt to detect physical sector sizes on Windows 8 and higher. (user: mistachkin, tags: winSectorSize)
20:04 [46db23cc] Changes to allow some multi-row UPDATE statements to avoid the two-pass approach. (user: dan, tags: onepass-update)
18:20 [8a90f691] Closed-Leaf: Try to move OP_Concat operations outside the inner loop. This turns out to make things very slightly slower, at least in speedtest1.c. (user: drh, tags: failed-optimization)
00:42 [746b1836] This hack illustrates how to use the VDBE_PROFILE mechanism to show which bytecode operators are using resources other than time. In this case, the number of loops through the binary search code in sqlite3BtreeMovetoUnpacked() is measured, for the purpose of helping to identify unnecessary btree searches. (user: drh, tags: vdbe-aux-perf)
19:32 [5c05d8ec] Closed-Leaf: Ensure that sqlite3_column_count() returns 0 for the "set" mode of "get/set" PRAGMA statements that do not return a value in that case (e.g. page_size, cache_size, auto_vacuum). (user: dan, tags: pragma-columncount-fix)
20:13 [71ccb1f4] Possible fix for [30027b61]. There may still be problems surrounding foreign key processing. (user: dan, tags: replace-fix)
01:07 [62e9270a] Attempt to factor out constant functions from the interior of table scans, since functions can often be expensive to compute. (user: drh, tags: factor-constant-funcs)
00:26 [acdb8f6f] Closed-Leaf: Changes to the printf implementation for better performance. (user: drh, tags: printf-optimization)
17:33 [82cbebb8] Make use of the __buildin_OP_overflow() functions from GCC when doing 64-bit signed integer arithmetic. (user: drh, tags: gnu-safe-math)
15:57 [bf984e98] Fix the row-values in UPDATE statements within TRIGGER problem identified by ticket [8c9458e7]. (user: drh, tags: branch-3.16)
02:58 [696219b1] Closed-Leaf: Improvements to the way vector assignment size checking is done. Size checks when the RHS is a SELECT are deferred until after "*" wildcards are expanded. (user: drh, tags: vector-size-check)
22:36 [61a442ea] Proposed fix for the row-value TRIGGER UPDATE problem described in ticket [8c9458e7]. (user: drh, tags: rowvalue-update-trigger)
21:55 [18baeadf] Closed-Leaf: Add the --help and --all options to the wordcount test utility. (user: drh, tags: wordcount-enhancement)
14:33 [8c28fde0] Minor #include change to speedtest1.c so that it will compile under MSVC. (user: drh, tags: speedtest1)
13:40 [5550e815] Improved detection of zero page numbers in the page cache. (user: drh, tags: pcache1-zero-page)
03:57 [489e0787] Add the kvtest.c test program for measuring key/value read performance under various scenarios. (user: drh, tags: kvtest)
00:18 [57e40e1c] Add the built-in affinity() SQL function. (user: drh, tags: affinity-sql-func)
03:59 [68ecafa1] Use the VList object to replace Parse.azVar for tracking the mapping between SQL parameter names and parameter numbers. There is a performance improvement, though there are still a few hiccups in the current code. (user: drh, tags: VList)
16:49 [4b73ee33] Closed-Leaf: Experimental merge of the est_count_pragma and the pragma-as-vtab branches. (user: drh, tags: est-count-pragma-vtab)
20:59 [988a61e8] Code to automatically create eponymous virtual tables for read-only pragmas. Compiles, but does not yet work. (user: drh, tags: pragma-as-vtab)
16:01 [a88ca352] Closed-Leaf: Do more pragma processing from tables rather than in-line code. (user: drh, tags: table-driven-pragma)
19:28 [7df23aca] Add the experimental ".fkey_missing_indexes" command to the shell tool. To identify indexes that should be created on child keys if FK processing is to be enabled. (user: dan, tags: fkey-missing-indexes)
14:32 [df5bb90d] Make the sqlite3PagerGet() interface into a virtual method, with different implementations based on the current state of the pager. This gives a small performance increase by avoiding unnecessary branches inside the various methods. (user: drh, tags: pager-get-method)
00:14 [478627c9] Closed-Leaf: In balance_nonroot, try to combine dropCell/insertCell combinations for the dividers into a cell overwrites. This results in a very small (0.05%) performance gain which is probably not worth the added complexity. (user: drh, tags: failed-dropCell-opt)
14:15 [3c58b173] Closed-Leaf: Fix a potential integer overflow during out-of-bound date computations. (user: drh, tags: date-overflow-fix)
19:38 [8bed4cd5] Closed-Leaf: Avoid clearing the EP_FromJoin flag from terms in ON clauses when flattening sub-selects. Possible fix for [2df0107b]. (user: dan, tags: left-join-fix)
17:34 [c5e5614d] Modify the patternCompare() function (used for GLOB, LIKE) to better handle patterns containing multiple wildcard characters ("*", "%"). (user: dan, tags: pattern-compare-optimization)
21:52 [4fe94b0f] Closed-Leaf: Experimental changes for faster in-memory DB operation for large databases. (user: drh, tags: memdb-opt)
17:37 [b6a81fa1] Experimental changes toward making snapshots serializable. (user: drh, tags: serializable-snapshot)
21:19 [9a64a4f2] Leaf: Break up the sqlite3BtreeMovetoUnpacked() routine into an eponymous routine and sqlite3BtreeMovetoIntkey(). Each routine specializes in a single kind of btree. (user: drh, tags: split-moveto)
20:14 [0af62fdb] Avoid storing redundant fields in sorter records when the sort-key and data have fields in common (as in "SELECT a FROM t1 ORDER BY 1"). (user: dan, tags: sorter-opt)
00:10 [89d958ab] Enhance the OP_IdxInsert opcode to optionally accept unpacked key material. (user: drh, tags: unpacked-IdxInsert)
18:30 [63cfe197] Avoid using the "direct overflow read" optimization to read large blobs if the pager layer has a wal file open - even if the database header indicates that the db is not a wal database. (user: drh, tags: branch-3.15)
16:16 [093d2fc2] Closed-Leaf: Add the SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE sqlite3_dbconfig() option - for disabling SQLite's default checkpoint-on-close behaviour. (user: dan, tags: no-ckpt-on-close)
15:46 [e7b9bc67] Closed-Leaf: If all branches of an OR optimize scan that is the rhs of a LEFT JOIN use the same index, set the index cursor to return NULL values if there are no matches for a row on the lhs. (user: dan, tags: leftjoin-or-fix)
12:15 [e8a9bfec] Add compile time option SQLITE_ENABLE_URI_00_ERROR. If defined, any "%00" escape found in a URI is treated as an error. (user: dan, tags: uri-00-error)
15:39 [fe49fb03] Leaf: Enhance the "PRAGMA index_info" and "PRAGMA index_xinfo" statements so that they work on WITHOUT ROWID tables and provide information about the underlying index btree that implements the WITHOUT ROWID table. (user: drh, tags: index-info-on-table)
21:21 [b861328a] Closed-Leaf: In the sessions module, avoid recording a change if an UPDATE statement overwrites a column with REAL affinity containing an integer value with the same value. (user: dan, tags: sessions-fix)
22:02 [340822af] Experimental est_count pragma. (user: drh, tags: est_count_pragma)
18:20 [fd81d8a4] Leaf: Add the ability for the PRAGMA statement to accept multiple arguments. Currently all arguments other than the first are ignored. (user: drh, tags: multi-arg-pragma)
18:59 [2fb9a5dd] Enhancments to Win32 mutex debugging. (user: mistachkin, tags: mutexDbg)
01:43 [db361482] Backport the ORDER BY LIMIT optimization to version 3.8.9. (user: drh, tags: branch-3.8.9)
20:00 [fb0b95e9] Add new file test_delete.c, containing test code for deleting an sqlite database. (user: dan, tags: test_delete)
12:02 [56562a03] Closed-Leaf: Catch vector size mismatch problems during name resolution to avoid later problems. (user: drh, tags: early-vector-size-check)
17:27 [3a9f4750] Closed-Leaf: The previous commit could miss an SQLITE_NOMEM error. This commit catches it. (user: dan, tags: mistake)
20:49 [0c9fd6b7] Add an experimental module to detect conflicts between sessions changesets. (user: dan, tags: changebatch)
14:20 [29d63059] Add the capability to VACUUM an attached database by specifying the schema name as an argument to the VACUUM command. Since version 2.0, VACUUM has accepted an argument which was silently ignored. Now it has meaning. (user: drh, tags: vacuum-attached-db)
22:44 [d6e3d579] Add the SQLITE_DBCONFIG_MAINDBNAME interface. (user: drh, tags: dbconfig_maindbname)
14:33 [92a22f01] Rename the Db.zName field to Db.zDbSName to make it more descriptive and to distinguish it from all of the other "zName" variables scattered throughout the code. (user: drh, tags: zDbSName)
19:05 [60de1594] Bias the fts5 snippet() function to return snippets that look like they start at the start of sentences. (user: dan, tags: fts5-snippet-bias)
10:02 [dfc028cf] Attempt to simplify the logic and generated code for vector comparisons. Basic comparison operators are working, but there are many indexing test failures still to be worked through. (user: drh, tags: vector-compare)
16:21 [8a5f41c7] Have wal file checkpoints exit early if the sqlite3_interrupt() API function is called. (user: dan, tags: interruptible-checkpoint)
13:03 [03dceaea] Enhance sqlite3PcacheTruncate() to run faster in the common case where the cutoff is just a few pages less than the page number highwater mark. (user: drh, tags: branch-3.14)
21:08 [f0942c36] Closed-Leaf: Prototype for the remember(V,PTR) extension function. (user: drh, tags: rememberFunc)
01:47 [4ada023c] Closed-Leaf: Add an experimental SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION compile-time option. This changes has been merged into main branches via cherry-pick. (user: drh, tags: unknown-function)
22:23 [3ea567c4] Make the extension auto-loading mechanism work with the __stdcall calling convention. Also, fix a couple Tcl command calling conventions missed in the previous check-in. (user: mistachkin, tags: callbackConv)
04:14 [02b8040e] Work in progress on setting a calling convention for all callback functions. (user: mistachkin, tags: callbackConv)
18:27 [a59b5622] When estimating the cost of an index scan, factor in the cost savings of being able to use the index to evaluate some WHERE clause terms without having to do a table lookup. (user: drh, tags: improved-index-scan)
11:47 [613c1cea] Temporarily add extra sqlite3_log() calls to this version to help with debugging a performance problem. (user: dan, tags: debug)
20:19 [46bd9533] Leaf: Experimental patch restore the slight bias in btree-balancing immediately after the change to reduces the amount of memcpy() work done by balancing. (user: drh, tags: btree-balance-bias)
19:48 [d2a0af7a] Closed-Leaf: Minor tweak the the b-tree balancer. (user: drh, tags: btree-tuning)
21:30 [0c569f75] Interface design for a new sqlite3_trace_v2() method that supersedes sqlite3_trace() and sqlite3_profile(). (user: drh, tags: sqlite3_trace_v2)
20:23 [b2204215] Add some support for using row value constructors in certain parts of SQL expressions. There are many bugs on this branch. (user: dan, tags: rowvalue)
21:14 [549abe3f] Closed-Leaf: Initial work on a Win32 VFS with NOP locking. (user: mistachkin, tags: win32nolock)
10:12 [118321c8] Add the SQLITE_DBSTATUS_PROPORTIONAL_CACHE_USED sqlite3_db_status() parameter. (user: dan, tags: dbstatus-prop-cache-used)
12:39 [92e7df0f] Closed-Leaf: Add the sqlite3rbu_state() API. Used to determine the current state (creating OAL, ready to move OAL, incremental-checkpoint, finished or error) of an RBU operation. (user: dan, tags: rbu-state-api)
05:00 [233b3338] Add a prototype intarray($PTR,$N) table valued function. (user: drh, tags: prototype-int-array)
22:27 [a33d2356] Proposed fix for a problem in the query planner. (user: drh, tags: planner-fix)
02:21 [a2778ae4] Leaf: Provide for a separate default page size for TEMP and transient database files and initialize that separate default page size to 1024 instead of 4096. (user: drh, tags: temp-page-size)
10:34 [5d0a9d4c] Closed-Leaf: Update the sqldiff utility so that if the --vtab switch is specified "rtree", "fts3", "fts4" and "fts5" tables are diff'd directly and the underlying real database tables ignored. Without this switch, all virtual tables are ignored and the diff is performed on the underlying real tables. (user: dan, tags: sqldiff-vtab-support)
14:33 [2a2346b0] If a table is on the rhs of a LEFT JOIN, include only terms from the joins ON(...) clause in the cursor-hint passed via OP_CursorHint. (user: dan, tags: cursor-hints)
13:01 [2c3714ae] Closed-Leaf: Add the json_quote() function to the JSON1 extension. (user: drh, tags: json_quote)
01:03 [2247649c] An initial attempt at a "dbhash" command-line utility. (user: drh, tags: dbhash)
20:37 [bef35e18] Change the sqlite3BtreeKeySize() interface into sqlite3BtreeIntegerKey() and make it only work for table btrees. Change sqlite3BtreeDataSize() into sqlite3BtreePayloadSize() and make it work for all btrees. Combine sqlite3BtreeDataFetch() and sqlite3BtreeKeyFetch() into a single sqlite3BtreePayloadFetch() routine. These changes seem to make the b-tree interface more rational and they reduce both binary size and CPU usage. (user: drh, tags: btree-refactor)
21:18 [49638f18] An experimental branch with code that allows virtual tables to be declared as WITHOUT ROWID tables. This might be useful for virtual tables that model external data sources that do not have a convenient way of computing a unique rowid. The current check-in almost works, but there are still serious issues. (user: drh, tags: without-rowid-vtab)
18:53 [242507b4] Closed-Leaf: Experimental change to allow virtual tables to take advantage of LIKE, REGEXP and GLOB terms that are part of OR expressions within WHERE clauses. (user: dan, tags: vtab-experimental)
17:23 [d3f99a5e] Closed-Leaf: Enhance the sqlite3_load_extension() interface to permit extensions to return SQLITE_OK_LOAD_PERMANENTLY which will prevent the extensions from unloading when the database connection closes. (user: drh, tags: load-permanently)
15:03 [3a461043] Closed-Leaf: Enhance the sqlite3_load_extension() API so that the first parameter (the "db" parameter) can be NULL. An extension that is not associated with any database connection remains loaded for the life of the process. (user: drh, tags: persistent-extensions)
18:09 [d734e2df] Add basic compiler information to the results of 'PRAGMA compile_options'. (user: mistachkin, tags: ctimeCompiler)
18:06 [bfbb6dd8] Remove an extra "finish_test" from the end of rtreeC.test. (user: drh, tags: tree-stat1-fix)
22:13 [852d1eda] In a query with both ORDER BY and LIMIT, if the inner loop satisfies the ORDER BY then try to cut short each invocation of the inner loop once the LIMIT has been satisfied. This check-in is a partial implementation only. (user: drh, tags: orderby-limit)
23:54 [ad601c79] Closed-Leaf: For in-memory databases, it does not matter if pcache entries are marked "clean" or "writable". (user: drh, tags: pager-dev)
18:20 [4533ed35] Closed-Leaf: Remove a redundant condition from pcache.c. Add an OPTIMIZATION-IF-TRUE comment to another condition that requires it. (user: dan, tags: mistake)
19:58 [da94a6e0] Closed-Leaf: Omit the unnecessary WHERE_REOPEN_IDX flag in the WHERE interface. (user: drh, tags: dev)
11:31 [50312273] Do not scan indexes that have the integer primary key as their left-most column. This fixes the crash of ticket [16c9801ceba] but it seems like the wrong fix. More investigation needed. (user: drh, tags: ticket-16c9801ce)
17:15 [bdf2ec77] Initial check-in of the "scrub.exe" utility program prototype. Not yet fully functional. In particular, no scrubbing is done. (user: drh, tags: scrub-backup)
19:36 [b6ddabe1] Leaf: Add the experimental SQLITE_FCNTL_WIN32_GET_HANDLE file control. (user: mistachkin, tags: win32GetHandle)
13:14 [e462cde2] Closed-Leaf: Turn the session extension off by default. Enable using --enable-session on configure scripts, or using the SESSION=1 argument to nmake on Windows. (user: drh, tags: session-make)
18:54 [2662d8fe] Modify the permutations.test script so as to set any permutation specific configuration values before running each individual test script. (user: dan, tags: permutations-fix)
00:30 [edb454e4] API Change: Modify sqlite3_enable_load_extension() so that it only enables/disables the load_extension() SQL function, and leaves the C-APIs enabled at all times. In this way, applications can enable extension loading for the C interface without having to expose that capability to the SQL. (user: drh, tags: load-ext-security)
15:51 [abf9d602] Closed-Leaf: Faulty check-in. Extraneous edits that were not logically part of the check-in. (user: drh, tags: mistake)
20:46 [0216b48f] Add the experimental sqlite3rbu_vacuum() API function. For opening an RBU handle that rebuilds a database from scratch. (user: dan, tags: rbu-vacuum)
01:55 [9e14aa14] Progress toward getting DISTINCT to use a seek to advance to the next distinct row, when driven by an appropriate index. (user: drh, tags: skip-ahead-distinct)
19:29 [129083bd] Leaf: Work toward improving analysis and code generation for DISTINCT and aggregate queries. (user: drh, tags: better-distinct-agg)
16:52 [f6babf29] On commit, flush dirty temp-file pages only if the file is already open and 25% or more of the cache is dirty. (user: dan, tags: tempfiles-25)
20:05 [ab69527c] More harmless compiler warning fixes. (user: mistachkin, tags: warnings)
19:59 [c698a21a] Add the sqlite3_snapshot_cmp() API. (user: dan, tags: snapshot-cmp)
21:35 [00ac73a0] Leaf: Attempt to treat the arguments to a table-valued function as if they occur in the ON clause of a LEFT JOIN rather than in the WHERE clause. But this causes undesirable behavior with generate_series, as demonstrated by test cases. This is an incremental check-in pending further work. (user: drh, tags: tabfunc-in-left-join)
17:32 [ea4de04d] Add a couple options to the MSVC makefile. (user: mistachkin, tags: branch-3.12.0)
21:07 [be5a549e] Defer opening the file used for the temp database (where CREATE TEMP TABLE tables are stored) until the database is too large to reside entirely within the cache. There are likely still problems on this branch. (user: dan, tags: tempfiles-lazy-open)
18:24 [8f1f300c] Closed-Leaf: Oops. Branched from the wrong baseline. Ignore this one. (user: drh, tags: mistake)
17:50 [b7570ac1] Add the SQLITE_DBCONFIG_REQUIRE_TXN argument for sqlite3_dbconfig() which when set requires an explicit transaction before updating the database. (user: drh, tags: require-write-txn)
00:44 [0c97b802] Leaf: Avoid unnecessary memset() operations in sqlite3PagerGet(). (user: drh, tags: pager-get-noinit)
21:19 [1085911a] Have the sqlite3session_apply() function and its streaming equivalent retry any operations that failed with SQLITE_CONSTRAINT after all other operations on the same table have been attempted. New code is largely untested. (user: dan, tags: session-retry)
14:57 [d0a3853b] Closed-Leaf: Open a statement transaction for "CREATE VIRTUAL TABLE" statements in order to ensure that if the xCreate() call fails, changes made to the sqlite_master and possibly other tables are rolled back. (user: dan, tags: vcreate-stmt)
20:11 [53b80a6d] Fix a problem with OOM handling when setting an fts5 configuration option. (user: dan, tags: fts5)
23:32 [e07b0c47] Change the Vdbe.aMem array so that it is zero-based instead of one-based. (user: drh, tags: zero-base-aMem)
21:06 [ffc58d2c] Add an API to indicate the percentage progress of an rbu update. (user: dan, tags: rbu-percent-progress)
18:41 [41335d88] Closed-Leaf: An alternative method of encoding the wildcard in "SELECT *". This is an experiment. (user: drh, tags: select-wildcard)
16:01 [6782c87b] Experimental implementation of the sqlite3_system_errno() interface. (user: drh, tags: sqlite_system_errno)
20:44 [db1ce7e1] Closed-Leaf: Some pragmas can be reused without an automatic reprepare. (user: drh, tags: reusable-pragma)
19:48 [33ef2210] Have fts5 cache the decoded structure of fts5 indexes in memory. Use "PRAGMA data_version" to detect stale caches. (user: dan, tags: fts5-data-version)
16:16 [1c70aa5c] Test script changes to support testing the SQLite Encryption Extension. (user: drh, tags: see-testing)
13:42 [f632bba0] Run TCL tests in a subdirectory "testdir". (user: drh, tags: test-in-subdir)
17:44 [d99ac415] Closed-Leaf: Modify the memjournal.c code to make it a bit smaller. (user: dan, tags: memjournal-exp)
14:40 [1fefa967] Add compile-time options SQLITE_DEFAULT_SYNCHRONOUS and SQLITE_DEFAULT_WAL_SYNCHRONOUS used to specify the default synchronous settings for all database connections. (user: drh, tags: default-synchronous)
17:39 [169311c8] Closed-Leaf: Add a new row type to RBU (a peer of insert, update and delete) - "delete then insert". (user: dan, tags: rbu-delete-then-insert)
17:29 [ffc65968] Change the way SQLite invokes the xBestIndex method of virtual tables so that N-way joins involving virtual tables work as expected. (user: dan, tags: xbestindex-fix)
02:38 [2cffb9e5] Update the configure script to detect pread/pwrite and update os_unix.c to use those routines if they are available. (user: drh, tags: pread)
03:28 [1622623c] Allow the left-hand side of IN operators on virtual tables to have the aConstraintUsage[].omit flag clear. (user: drh, tags: vtab-IN-opt)
18:07 [de034c0d] Add test code useful for testing the planners use of teh virtual table xBestIndex() method. (user: dan, tags: test-bestindex)
18:30 [5a0143c9] Modify the ANALYZE command to store worst-case statistics in sqlite_stat1, rather thn average case. (user: drh, tags: analyze-worst-case)
15:53 [842b2116] Closed-Leaf: Reduce the amount of heap required to store many schemas by storing each column datatype appended to the column name, rather than as a separate allocation. (user: drh, tags: schema-storage)
23:25 [ad3ffe2e] Update the parser so that it pulls out the column name and type all in one go, rather than using separate reductions. (user: drh, tags: schema-storage)
20:14 [e0b0b431] Extend the code in memjournal.c so that it subsumes the role of journal.c. And (untested) can flush journal or statement journal files to disk after they grow to a specified size. (user: dan, tags: memjournal-exp)
17:16 [3a0c347c] Experimental "PRAGMA onconflict=FAIL" statement to change the default ON CONFLICT algorithm to something other than ABORT. (user: drh, tags: pragma-onconflict)
16:04 [d491745c] Take the LIMIT clause into account when estimating the cost of sorting. (user: drh, tags: planner-improvements)
21:42 [496e4ac9] Initial work on an automated VSIX testing tool. Not working or tested yet. (user: mistachkin, tags: vsixTest)
15:43 [71d488b5] Closed-Leaf: Identify indexes that completely cover their table. (user: drh, tags: covering-index)
20:52 [38e837e6] Avoid an unnecessary seek operation on some corner-case skip-scans. (user: drh, tags: skip-scan-improvement)
21:00 [b47d0302] Correct the install location for the UWP VSIX package. (user: mistachkin, tags: branch-3.11)
16:16 [e2ef6667] Remove SQLITE_TEST macros from fts5_test_mi.c. Add the SQLITE_FTS5_ENABLE_TEST_MI compile time symbol - to make it easier to create builds that include the fts5 matchinfo demo by default. (user: dan, tags: branch-3.11-matchinfo)
18:44 [a444633a] Closed-Leaf: Fix up all VDBE opcodes so that they cause an immediate exit on any kind of error, and thereby eliminate the need to test "rc" at the top of the loop. Resulting code is a little smaller and faster. (user: drh, tags: vdbe-performance)
21:19 [a65d583c] Experimental changes to Lemon for improved parser performance. (user: drh, tags: parser-performance)
00:34 [3201fbcc] Closed-Leaf: Improvements to the application-defined function mechanism so that it is more compact and runs faster, especially when the application defines thousands of new SQL functions. (user: drh, tags: many-app-functions)
23:43 [6a9c4a3e] Enhance ability to debug out-of-memory errors. (user: mistachkin, tags: noMemBkpt)
21:28 [54ff3a26] Enhance the MSVC makefile to enable building 'testfixture' fully from source code. (user: mistachkin, tags: testFixtureSrc)
13:30 [a863729c] Closed-Leaf: Minor simplifications deferred to the next release. (user: drh, tags: simplify)
18:39 [1d62aa6b] Add auto-explain mode to the command-line shell. Default on. Auto-explain tries to automatically detect EXPLAIN queries and format them appropriately. (user: drh, tags: auto-explain)
02:30 [9115baa1] Demonstrate a much faster sqlite3GetToken() routine by using a lookup table to map initial token characters into a character class. This check-in does not work for EBCDIC. More optimization needed. (user: drh, tags: tokenizer-char-class)
19:40 [ebace2c9] Closed-Leaf: More work on Windows 10 SDK integration. (user: mistachkin, tags: win10sdk)
01:55 [c3ef0347] Improvements to the way that OOM errors are processed. (user: drh, tags: oom-handling)
02:34 [1c8d3001] Leaf: Add and use the sqlite3VdbeZeroRegister() interface for coding the common operation of writing zero into a register. (user: drh, tags: zero-register)
00:59 [7453790c] Leaf: Add the SQLITE_DBCONFIG_REQUIRE_WRITE_TXN connection setting, which if enabled requires all write operations to be enclosed within BEGIN ... COMMIT. (user: drh, tags: require-write-txn)
15:46 [2e9fb129] Closed-Leaf: A different way to clear the subtype on VDBE registers when the value of the register is overwritten with new content. To fix [[f45ac567eaa9f93]. (user: dan, tags: clear-subtype-flag)
14:53 [ec653cbc] Closed-Leaf: Take care to clear the subtype on VDBE registers when the value of the register is overwritten with new content. (user: drh, tags: clear-subtype-fail)
19:29 [a323ac3a] Experimental attempt to make better use of covering indexes within OR queries. (user: dan, tags: covering-or)
16:57 [ab946039] Closed-Leaf: Avoid unnecessary WHERE clause term tests when coding a join where one of the tables contains a OR constraint. (user: drh, tags: OR-clause-improvement)
15:49 [dde1db0d] Add assert() statements on the nExtraDelete variable in vdbe.c to try to verify that the FORDELETE and IDXDELETE flags are being generated correctly. Those flags are not currently generated correctly, and so the assert()s trip on this check-in. (user: drh, tags: fordelete-assert)
15:23 [12ef3a8f] Leaf: Change the automatic index mechanism so that it avoids creating transient indexes on columns that are known to have low cardinality. (user: drh, tags: autoindex-planning)
17:04 [80398fd4] Fix issues on unix with opening database files via symlinks that are not in the current working directory. And with nested symlinks. (user: dan, tags: follow-symlinks)
07:53 [c46f1a13] Add tooling to create an MSVC Makefile capable of building the core library and shell only, using a pre-built amalgamation. (user: mistachkin, tags: msvcMakeMin)
01:54 [39759a55] Cleanup localtime() support for Windows CE. (user: mistachkin, tags: winCeLocalTime)
19:48 [b5a57b81] Experimental performance enhancements for fts5. (user: dan, tags: fts5-perf)
17:25 [82470d1c] Closed-Leaf: Disable the RESTRICT foreign key action if "PRAGMA defer_foreign_keys" is set. (user: dan, tags: disable-restrict)
17:06 [ac2cbadd] Add a new hint bit on the flags parameter of sqlite3BtreeDelete(). The new BTREE_IDXDELETE bit indicates that the call is to delete an index entry corresponding to a table row that has already been deleted. (user: drh, tags: btree-fordelete-flag)
17:59 [8b4f5080] When the block sorting optimization is used in a scalar subquery, be sure to exit the loop as soon as the first valid output row is received. Fix for ticket [cb3aa0641d9a4]. (user: drh, tags: branch-3.10)
16:39 [5d113aef] If a single page is written to the wal file more than once, have each subsequent copy overwrite the original frame. (user: dan, tags: wal-overwrite-frames)
02:27 [a02ace9a] Add the experimental SQLITE_FCNTL_JOURNAL_POINTER file control for obtaining the sqlite3_file pointer associated with a rollback journal or WAL file. (user: drh, tags: file-control-journal)
16:06 [d0214602] 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. (user: dan, tags: shared-cache-fix)
18:59 [54c5522d] Alternative to [76f5efa6], move definition of utf8_printf up. (user: mistachkin, tags: altShellFix)
20:50 [1541607d] Leaf: Use the OvflOffset() macro to try to remove some magic numbers from btree.c. (user: drh, tags: ovfloffset-macro)
13:36 [a0a08b8c] Closed-Leaf: Enhance the command-line shell to handle MBCS characters on input and output. (user: drh, tags: mbcs-shell)
03:59 [78507154] Closed-Leaf: Reduce the size of the CellInfo object from 32 to 24 bytes on 64-bit machines. (user: drh, tags: optimize-cellinfo)
20:36 [40b5bbf0] Add the "offsets=0" option to fts5, to create a smaller index without term offset information. A few things are currently broken on this branch. (user: dan, tags: fts5-offsets)
17:30 [98b710c3] Reduce the size of the VdbeCursor object by a pointer (the pBt pointer used for ephemeral tables). (user: drh, tags: optimize-vdbecursor)
21:09 [18a4c054] Fix compiler warning seen with MSVC. (user: mistachkin, tags: msvcWarn)
15:09 [ad3124c8] Closed-Leaf: Move pointer range comparisons into a macro, where they can be dealt with in a more portable way. (user: drh, tags: stdint.h)
19:50 [d52376df] Experimental optimization for DELETE statements with WHERE clauses that qualify for the OR-optimization. (user: dan, tags: onepass-delete-or)
14:37 [f3c0579e] Closed-Leaf: Avoid unnecessary work inside of verifyDbFile() in the unix VFS. (user: drh, tags: unix-vfs-optimization)
20:51 [0715eb00] Add untested implementations of experimental APIs sqlite3_snapshot_get(), _open() and _free(). (user: dan, tags: snapshot-get)
23:29 [f3ffb3ae] Closed-Leaf: Add experimental support for the 'test_fs' test module on Win32. (user: mistachkin, tags: testFsWin32)
19:33 [116b2064] Closed-Leaf: Add the "colUsed" field to the sqlite3_index_info structure passed to virtual table xBestIndex methods. To indicate the subset of the virtual table columns that may be required by the current scan. (user: dan, tags: vtab-colused)
21:09 [277a5b40] Add experimental support for LIKE, GLOB and REGEXP to the virtual table interface. (user: dan, tags: vtab-like-operator)
17:53 [093e0d10] Leaf: Add a new OP_BColumn opcode where the cursor is guaranteed to be of type CURTYPE_BTREE and is thus able to skip some checks and run slightly faster. (user: drh, tags: btree-column-opcode)
18:43 [2dbffb3a] If a table column name begins with "__hidden__" then do not include that column in "*" expansions in SELECT statements, nor fill in that column in an INSERT INTO that omits the column list. This branch is a proof-of-concept only and is not intended to ever be merged into trunk. (user: drh, tags: hidden-columns-in-tables)
16:00 [3d930501] Import the LSM code from SQLite4 for use in an experimental virtual table. NB: This is a speculative experiment and could easily result in a dead-end branch. (user: drh, tags: lsm-vtab)
14:57 [549d42be] First attempt at enhancing the "PRAGMA cache_spill" statement to accept a cache threashold size. (user: drh, tags: cache_spill=N)
18:08 [c6fa01c2] Add a hack to debug out a description of the WHERE clause of a SELECT (or other) statement. Use this in script tool/schemalint.tcl to automatically recommend indexes that might speed up specific queries. (user: dan, tags: schemalint)
19:33 [0a72991f] Change the parser to use the standard "lempar.c" template over in the tool/ folder rather than the customized "lempar.c" found in src/. (user: drh, tags: parser-enhancements)
15:19 [2040d88e] Enhance TreeView to show WITH clauses. Add an assert to detect the infinite loop behavior when certain kinds of errors occur on a nested WITH clause. (user: drh, tags: infinite-with-loop-bug)
17:28 [8a171548] Closed-Leaf: A proposed patch for working around a bug in the optimizer for the HP compiler found on HP/UX Itanium. (user: drh, tags: hp-optimizer-fix)
01:04 [cfcaa0ff] Increase the precision of integer vs. floating-point comparisons. Candidate fix for ticket [38a97a87a6e4e8]. (user: drh, tags: int-float-precision)
20:25 [32e31b9b] The top of an index equality loop normally starts with OP_SeekGE and OP_IdxGT. This check-in adds a flag to OP_SeekGE such that it fails immediately if the key is not equal, then jumps over the OP_IdxGT, saving a call to the key comparison functions. Consider this check-in a proof-of-concept. It needs improvement before going on trunk. Some tests fail, but only because they new use fewer key comparisons than expected (which is a good thing!). (user: drh, tags: seekeq-experiment)
03:26 [b9b22fae] Closed-Leaf: Remove #pragma that was used to work around an obsolete issue with MSVC 2012. (user: mistachkin, tags: reoptimizeArm)
23:29 [4ae96d6d] Attempt to centralize and simplify the MSVC handling. (user: mistachkin, tags: mp-releasetest)
18:32 [3d29f912] Add the "--jobs N" option to the releasetest.tcl script to allow tests to be run in parallel by N processes. N defaults to 1. (user: dan, tags: mp-releasetest)
17:58 [c7c81050] Closed-Leaf: On unix, if a file is opened via a symlink, create, read and write journal and wal files based on the name of the actual db file, not the symlink. (user: dan, tags: follow-symlinks)
12:27 [d533e23f] Apply optimizations to simplify OR clauses that contain constant terms. (user: drh, tags: simplify-or-clause)
19:46 [65b86dc1] Add experimental API sqlite3_db_cacheflush(). (user: dan, tags: cacheflush)
20:54 [cdc92919] Modifications to pass a flag to internal routine sqlite3BtreeCursor() when a cursor that is used solely for deleting b-tree entries, or for obtaining the components of keys to delete from other b-trees, is opened. (user: dan, tags: btree-fordelete-flag)
23:40 [12e869bb] Closed-Leaf: Fix compiler warnings. (user: mistachkin, tags: noWarn)
01:00 [c6239bf9] Leaf: Change the code generator for UPDATE to generate code in an order that might run more efficiently in many cases. (user: drh, tags: improved-update)
15:56 [746fcd2f] Cherrypick the json form-feed fix, and other #ifdef and build script changes to address minor issues that came to light after the 3.9.0 release. Update the version number to 3.9.1. No logic changes except for the form-feed bug-fix in json1 (ticket [57eec374ae1d0a1d4a]). (user: drh, tags: branch-3.9)
03:34 [08e8f04d] Leaf: Whenever two or more OP_Column opcodes on the same cursor occur in succession, try to reordering them so that the one that extracts the right-most column is first, so that it will warm up the row cache for all those that follow. This gives a small performance boost. (user: drh, tags: reorder-column-opcodes)
20:17 [39ae92f5] Leaf: Experiments with an OP_Unpack opcode that extracts multiple columns from a record without caching. (user: drh, tags: unpack-opcode)
18:45 [8463f7e7] Avoid exporting sqlite3_json_init() from amalgamation builds. (user: dan, tags: dll-build-fix)
19:29 [d820a1bd] First attempt to add json1 and fts5 to the amalgamation. This check-in does not compile. (user: drh, tags: amalg-json1-fts5)
02:52 [ed0ebc46] Change mkopcodeh.awk into tool/mkopcodeh.tcl. (user: drh, tags: omit-awk)
17:51 [3e15dea5] Closed-Leaf: This condition was not always true after all.....    Change an always-true condition in the virtual table transaction interface into an assert(). (user: drh, tags: mistake)
23:45 [70ec88b2] Leaf: Avoid unnecessary cursors and seeking when running a DELETE against a WITHOUT ROWID table. (user: drh, tags: delete-without-rowid-opt)
15:20 [e73f919f] Changes to allow DELETE operations on virtual tables to use the onepass strategy under some circumstances. (user: dan, tags: vtab-onepass)
16:29 [2c57b2f3] Disable the SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS mechanism and replace it with SQLITE_TESTCTRL_BENIGN_MALLOC_CTRL, which gives better control. (user: drh, tags: malloc-testing)
16:24 [da0587c5] Simplify thread-safety of mutex initialization. (user: mistachkin, tags: mutexInitSimpleCmpSwap)
14:32 [c4b68eff] Include json1.c in fuzzcheck and fuzzershell. (user: drh, tags: json-fuzz)
22:52 [fea8c0b2] Re-check sqlite3GlobalConfig.isInit after the mutex subsystem has been initialized. (user: mistachkin, tags: mutexInitIsInitReCheck)
19:26 [eaeb2b80] Experimental change to use a single-pass approach for DELETE statements on non-virtual tables that do not fire triggers or require foriegn-key processing. (user: dan, tags: onepass-delete)
05:06 [f6a8f577] Enhance mutex initialization to prevent possible race conditions between sqlite3_initialize() and sqlite3_config(). Also, re-check sqlite3GlobalConfig.isInit after the mutex subsystem has been initialized. (user: mistachkin, tags: mutexInitCmpSwap)
20:34 [7b5be299] Experimental implementation of sqlite3_result_subtype() and sqlite3_value_subtype() interfaces. (user: drh, tags: subtypes)
18:23 [531c3974] For the Lemon-generated parser, add a new action type SHIFTREDUCE and use it to further compress the parser tables and improve parser performance. (user: drh, tags: lemon-update)
19:52 [a1f4c3b5] Experiment with a different fts5 leaf page format that allows faster seeks. (user: dan, tags: fts5-incompatible)
12:52 [6e0298cd] Closed-Leaf: This change is not correct for the boundary case of nCellKey==0. Was: Small performance gain and size reduction in sqlite3VdbeIdxKeyCompare(). (user: drh, tags: mistake)
19:56 [90b85b42] Change the fts5 tokenizer API to allow more than one token to occupy a single position within a document. (user: dan, tags: fts5-incompatible)
00:27 [0ad0f8d7] Changes toward being able to process indexes on expressions. Not there yet - this check-in is just movement in that direction. Some tests are failing. (user: drh, tags: index-expr)
21:09 [072279d4] Closed-Leaf: Fix compiler warnings in the sqldiff tool seen with MSVC. (user: mistachkin, tags: msvcWarn)
02:32 [c1f43a77] Initial implementation of eponymous virtual table instances. (user: drh, tags: table-valued-functions)
21:43 [12640cb2] Leaf: Convert the hint expression of the CursorHint opcode into a string for display by EXPLAIN. (user: drh, tags: cursor-hints-displayP4)
19:42 [5669ac4a] Avoid reading frames that have already been checkpointed from the wal file. (user: dan, tags: wal-read-change)
16:49 [dde8afdd] Begin adding an extension that provides JSON SQL functions. (user: drh, tags: json)
20:22 [ac5d2e9d] Add the sqlite3_experimental_log_open() interface. This is for diagnostic use only and is not intended to ever go on trunk. (user: drh, tags: experimentalIoLog)
22:47 [be190fe7] Fix compiler warnings and remove unreachable code. (user: drh, tags: warnings)
09:42 [3a82c8e6] Leaf: Within a write-transaction on a wal database in mmap mode, check the page-cache for an entry before the wal file. This can be faster if the wal file is very large. (user: dan, tags: mmap-wal-bigtrans)
03:19 [0ddb2532] Closed-Leaf: Fix harmless compiler warnings in FTS5 code. (user: mistachkin, tags: fts5NoWarn)
17:03 [90e34d51] Add the "--uri" option to utility program "showdb". This option causes showdb to use sqlite with the SQLITE_OPEN_URI option to open the database file, instead of opening it directly using the OS open() function. (user: dan, tags: showdb-uri-option)
14:10 [4489722a] The "PRAGMA cache_size" reads the database schema, as it has done in all prior versions of SQLite. This side-effect of cache_size is undocumented, but apparently it does get used and its absence from 3.8.11 was causing problems. (user: drh, tags: branch-3.8.11)
19:35 [d431d4e1] Update batch build tool library paths for MSVC 2015. (user: mistachkin, tags: msvc2015)
19:31 [80794216] Add an experimental "BEGIN UNLOCKED" command. (user: dan, tags: begin-concurrent)
19:46 [862418e3] Use a WITHOUT ROWID table to index fts5 btree leaves. This is faster to query and only slightly larger than storing btree nodes within an intkey table. (user: dan, tags: fts5-btree-index)
18:54 [aa7341c8] Enhance separate pcache1 to allocate a block of pages from heap on startup, if possible, for a 5.2% performance improvement. (user: drh, tags: pcache-bulk-local)
17:13 [1c522123] Closed-Leaf: Rework the PRAGMA integrity_check logic. Simplify the checkTreePage() routine and clean up the error messages generated. (user: drh, tags: integrity-check-refactor)
12:47 [bc27ebd7] Make use of htonl() and __builtin_bswap32() for faster implementations of sqlite3Get4byte() and sqlite3Put4byte(). (user: drh, tags: bswap-functions)
13:31 [2f31bdd1] Closed-Leaf: Cache the most recently sqlite3_context used by OP_Function and reuse it on subsequent calls, if appropriate. This gives a noticable performance boost. (user: drh, tags: function-ctx-cache)
04:34 [ef2052f8] Initial changes to get FTS5 working with MSVC. (user: mistachkin, tags: fts5Msvc)
17:21 [1d04def7] Closed-Leaf: Add "ON CONFLICT" handling to the spellfix module. (user: dan, tags: spellfix-constraints)
20:02 [16872871] Change the way that balance_nonroot() partitions cells between the sibling pages such that a scan of the cell size array is not required. (user: drh, tags: btree-opt2)
18:13 [522502ec] Leaf: Split out all four cases of cellSizePtr() into different methods, each optimized for the specific page type. This gives a 0.36% performance increase at a cost of about 300 bytes of code. (user: drh, tags: btree-opt)
18:24 [faab0ed9] Performance improvements in btreeParseCell() by inlining the varint decoder. (user: drh, tags: btree-opt)
19:06 [7b84641e] Closed-Leaf: Use 'binary' mode for popen with MSVC. (user: mistachkin, tags: popenMsvc)
11:48 [0be44782] Add the IS DISTINCT FROM and IS NOT DISTINCT FROM operators. (user: drh, tags: is-distinct-from)
13:49 [760700ed] Add a fast-path implementation of pcache1Fetch() for the common case of separate caches that do not use a mutex. (user: drh, tags: faster-pcache1-fetch)
22:51 [f38e0be5] Remove possibly stray output from various tests. (user: mistachkin, tags: testerOutput)
18:05 [80ee56dd] Avoid passing constraints that are unusable due to LEFT or CROSS joins to virtual table xBestIndex() methods. (user: dan, tags: vtab-left-join)
22:33 [be8e3fc7] Split FROM-clause subquery flattening and code generation into separate loops. (user: drh, tags: view-optimization)
15:59 [f167bba4] Closed-Leaf: Add a new opcode to the VDBE that gives the b-tree a hint about the set of columns in a table or index that are actually used by the query. (user: drh, tags: column-usage-hint)
16:09 [80889306] Leaf: Add the built-in affinity() SQL function. This turns out to be not as useful as originally envisioned, so abandon it on a branch. (user: drh, tags: affinity-func)
15:32 [bce3f041] Closed-Leaf: Rename SQLITE_AFF_NONE to SQLITE_AFF_BLOB. (user: drh, tags: blob-affinity-rename)
20:28 [297fae75] Closed-Leaf: For FROM-clause subqueries that cannot be flattened, try to push WHERE clause terms of the outer query down into the subquery in order to help the subquery run faster and/or use less memory. (user: drh, tags: subquery-opt)
17:32 [e3fa8b93] Closed-Leaf: Break out the query flattener into a separate source-code file. (user: drh, tags: flattener-in-new-file)
13:55 [521345ad] An attempt to allow automatic index creation on subqueries accessed via co-routine. (user: drh, tags: coroutine-autoindex)
14:21 [7e9e1b61] Closed-Leaf: A different approach to preventing buffer overreads when comparing a vector of values with a corrupt index record that spans at least one overflow page. (user: dan, tags: avoid-buffer-overread)
13:06 [0055df04] Closed-Leaf: CTEs have never had working rowids. So disallow the use of the "rowid" column within CTEs. (user: drh, tags: no-rowid-in-cte)
03:46 [2ead43f0] Closed-Leaf: Add the "PRAGMA cell_size_check=ON" command. (user: drh, tags: cell-size-check-pragma)
18:15 [4a5f6f1f] The "make fuzztest" target now uses fuzzcheck instead of fuzzershell. (user: drh, tags: test-using-fuzzcheck)
18:48 [c5b4e363] First code for a new utility program to rerun checks on a large number of fuzzer-generated test cases. (user: drh, tags: fuzzcheck)
00:50 [a71e2a72] Add the ".open" command to the command-line shell. Cherrypick from [21eccb919441]. (user: drh, tags: branch-3.7.11)
22:01 [2007391c] Add the sqlite3_value_dup() and sqlite3_value_free() interfaces and use those to add the sqlite3_rtree_query_info.apSqlParam field to the query callback in R-Tree. (user: drh, tags: sessions-value-dup)
21:28 [a7ee40c4] Add the sqlite3_value_dup() and sqlite3_value_free() interfaces. Use these interfaces to enhance R-Tree to add the sqlite3_rtree_query_info.apSqlParam field. (user: drh, tags: value-dup)
15:51 [d5e2c1fc] A proposed fix for the problem of CREATE TABLE AS generating a table that has INTEGER values in a TEXT column. Ticket [f2ad7de056ab1dc92]. (user: drh, tags: create-table-as-type-fix)
19:52 [40f67265] Ensure that when the VM applies TEXT affinity to a value it discards any existing REAL or INTEGER value. Fix for [34cd55d6]. Increase the version number to (user: drh, tags: branch-3.8.10)
19:17 [a46a247f] Fix the transitive constraint processing to only allow transitivity if the operands of the == or IS operator have compatible affinities. (user: drh, tags: transitive-constraints)
15:24 [6f7f1673] An early attempt to get indexes to work with the IS operator. This code passes tests, but much more testing is needed to verify that it works on all corner cases. (user: drh, tags: index-is-operator)
21:27 [9de33768] Experimental API extension for recovering the current trace and profile callbacks on a database connection. (user: drh, tags: get-trace)
19:37 [dddd7e18] Optimizations for the matchinfo() function, particularly the 'y' flag. (user: dan, tags: fts3-matchinfo-y)
17:06 [fc6504aa] Include the "dbstat" virtual table in the amalgamation. (user: drh, tags: dbstat-in-amalgamation)
18:25 [f8b15979] Leaf: Add the SQLITE_LIMIT_PRINTF_WIDTH setting for sqlite3_limit() and associated logic for preventing DOS attacks using printf() with oversized widths or precisions. (user: drh, tags: limit-printf-width)
09:44 [92941609] Closed-Leaf: Add the experimental matchinfo 'y' flag to fts3/4. (user: dan, tags: fts3-matchinfo-y)
13:11 [091cfe8e] Closed-Leaf: Oops - the deephemerialization needs to occur before the move, not after. Was: Rather than try to keep track of the parent of an ephermeral register when the register moves, just deephemeralize all registers touched by the OP_Move opcode. (user: drh, tags: mistake)
12:27 [7ed86dd3] Closed-Leaf: Add code to the shell to optionally initialize the dbstat virtual table. (user: drh, tags: stat-vtab-in-shell)
14:41 [658e20f5] Leaf: Prototype for an sqlite3_db_log() interface. (user: drh, tags: sqlite3_db_log)
06:18 [8469d651] Work in progress on making VSIX packages for the Visual Studio 2015 CTP. (user: mistachkin, tags: vsix2015)
12:09 [4b0f4484] Closed-Leaf: Checked in the wrong fix. (user: drh, tags: mistake)
11:56 [5619c959] Closed-Leaf: Use a heap instead of a bitmap for cell overlap and coverage testing of btree pages in PRAGMA integrity_check. (user: drh, tags: integrity-check-heap)
19:13 [a200e1ea] Leaf: Add the BtCursor.pPage field which is the current page to which the cursor points, for a very small performance gain. (user: drh, tags: btree-current-page-cache)
19:41 [463e38d7] Work toward adding the --changeset option to the sqldiff utility program. Changes are incomplete. This is an incremental check-in. (user: drh, tags: sqldiff-changeset)
16:01 [c4340b2e] Closed-Leaf: Add experimental API sqlite3session_diff(). (user: dan, tags: sessions-diff)
22:05 [e5f5ef00] Leaf: Detect and suppress an endless loops in clearDatabasePage() that might result from a corrupt database file. This is an edited cherry-pick from [30011ad2f55c] and [395bb3e677a]. (user: drh, tags: apple-osx-385)
09:05 [0cdf5028] Closed-Leaf: Fix a problem with fts3 prefix terms within phrase queries on "order=DESC" tables with a mix of negative and positive rowids. (user: dan, tags: fts3-prefix-query-fix)
16:43 [427b50fb] Closed-Leaf: Fix a problem with resolving ORDER BY clauses that feature COLLATE clauses attached to compound SELECT statements. (user: dan, tags: compound-order-by-fix)
01:26 [5c965a71] The build is still broken. Multiple definitions of sqlite3OSTrace when compiled using separate source files. (user: drh, tags: winTest)
18:18 [c8694657] Path portability enhancements for mptester.exe. (user: drh, tags: winTest)
17:45 [9cc70eee] Testing enhancements on Windows. (user: mistachkin, tags: winTest)
19:56 [763d2bc7] Leaf: Optimize CREATE INDEX, REINDEX and VACUUM statements by taking better advantage of the fact that index keys are being inserted into b-trees in sorted order. (user: dan, tags: mistake)
23:36 [df204049] When syncing a memory mapped file on Windows, flush the mapped view as well. (user: mistachkin, tags: winViewFlush)
11:55 [ce5ad17c] Optimize cases where all the sorter is sorting a set of records that all begin with integer values, or that all begin with text values to be compared using BINARY. (user: dan, tags: sorter-opt)
00:09 [cbb93d1a] Leaf: Backport the 'stdcall' related enhancements from trunk. (user: mistachkin, tags: stdcall-3.8.8)
21:27 [242f09d4] Add SQLITE_STDCALL and SQLITE_CDECL macros on public function definitions. (user: mistachkin, tags: stdcall)
12:51 [9faefb96] Replace the Vdbe.inVtabMethod field with the sqlite3.nVDestroy counter. (user: drh, tags: nVDestroy)
17:25 [1ce8e8fa] Add the sqlite3_status64() interface. Make the new interface and the legacy sqlite3_status() both atomic and threadsafe. Check threadsafety using assert()s. (user: drh, tags: status64)
20:30 [0a7f2051] Where possible insert the set of new keys for each index in sorted order within "INSERT INTO ... SELECT" statements. (user: dan, tags: insert-select-opt)
14:57 [e750830f] Provide the BTREE_SEEK_EQ hint to the b-tree layer. (user: drh, tags: seek-eq)
18:56 [9969cff2] Fix a problem with creating virtual table with names specified using malformed utf-8 within utf-16 databases. (user: dan, tags: malformed-vtab-name)
12:13 [7a309768] When a WHERE clause contains disjuncts with the same operands, try to combine them into a single operator. Example: (x=A OR x>A) becomes (x>=A). (user: drh, tags: combine-disjuncts)
18:59 [e1caf93c] When estimating the number of rows visited by a range scan for which the keys consist of more than one field, consider prefixes of stat4 samples as well as the full samples. (user: dan, tags: stat4-change)
20:06 [b7f1fc26] Allow the query planner to evaluate deterministic scalar SQL functions used in WHERE constraints if all arguments are SQL literals in order to compare the results with sqlite_stat4 sample data. (user: dan, tags: stat4-function)
20:22 [c6e6d5f4] Arrange for some of the transient locks in WAL mode to block, as a single to the OS to fix priority inversions. (user: drh, tags: wal-blocking-lock)
20:32 [465bfc72] Fix another problem with the LIKE optimization. (user: drh, tags: like-opt-fix)
16:45 [5757e803] The LIKE optimization must be applied twice, once for strings and a second time for BLOBs. Ticket [05f43be8fdda9f]. This check-in is a proof-of-concept of how that might be done. (user: drh, tags: like-opt-fix)
14:27 [b1a9e291] Leaf: In the command-line shell, change the units on the ".width" directive from bytes to characters. (user: drh, tags: cli-char-width)
10:54 [f7f2598c] Closed-Leaf: Add support for linenoise to shell.c. (user: dan, tags: linenoise)
16:05 [c0f4e308] Make sure partial automatic indexes are not based on terms in the ON clause of a LEFT JOIN. Fix for ticket [2326c258d02ead3]. UPDATE: This fix does not work where the partial index is a named index. (user: drh, tags: tkt-2326c258)
15:21 [0b7d65e3] Disable the query flattener for aggregate subqueries if the parent query uses other subqueries in its result set or WHERE clause or ORDER BY clause. Preliminary fix for ticket [2f7170d73bf9abf8]. However it still contains a defect similar to the COLLATE problem of [ca0d20b6cddd]. (user: drh, tags: tkt-2f7170d7)
19:17 [8ac58e46] Remove "PRAGMA pager_ota_mode". (user: dan, tags: ota-update-no-pager_ota_mode)
22:19 [6dca23e6] Leaf: Add an experimental pragma "PRAGMA preload;" that preloads the pcache with the entire database file. (user: drh, tags: preload-pragma)
02:00 [30f51d7b] Add the "index_xinfo" pragma. Add new columns to the "index_info" and "index_list" pragmas. (user: drh, tags: index_xinfo)
17:54 [5940af8e] Add the INITMODE test-control. (user: drh, tags: initmode-testctrl)
02:26 [23054110] Experimental sqlite_db_config() setting to disable writing to all btrees except for one btree with a particular root page. (user: drh, tags: one-writable-btree)
21:38 [59e592f6] Ensure that the KeyInfo.nXField value for ephemeral tables used to implement ORDER BY or GROUP BY clauses is set correctly, so that the sqlite3VdbeFindCompare() routine can choose the correct comparison function. Add assert() statements to the high-speed comparison functions to detect cases where they are inappropriately chosen. Fix for ticket [f97c4637102a3ae72b7911]. (user: drh, tags: branch-3.8.8)
19:48 [bf744b49] An alternative way of implementing the assert() that verifies the relative values of KeyInfo.nField+KeyInfo.nXField and the number of columns in a record. This version of the assert() only fires when the high-speed comparison routines are used - which is to say it only fires when the constraint actually matters. (user: drh, tags: tkt-f97c4637)
19:21 [e41376cf] Closed-Leaf: An alternative way of fixing the key comparison bug of ticket [f97c4637102a3ae72b]. (user: drh, tags: alt1-tkt-f97c4637)
17:28 [083f523d] Add an assert() to verify that the nField+nXField values of a KeyInfo object are never less then the number of columns in a row for a non-corrupt database. This assert() currently fails, which is the root of the problem with ticket [f97c4637102a3ae72b]. (user: drh, tags: tkt-f97c4637)
05:35 [25e99f3f] Some experimental command line shell input/output enhancements. (user: mistachkin, tags: expShell)
19:35 [cab46fb7] Closed-Leaf: Fix harmless compiler warning. (user: mistachkin, tags: msvcWarn)
18:02 [856dd245] Work in progress on fixing harmless compiler warnings when using -W4 and MSVC. (user: mistachkin, tags: msvcW4)
16:27 [c9d65f73] Towards getting INSERT statements to except many VALUE terms (more than the limit imposed by SQLITE_LIMIT_COMPOUND_SELECT). This check-in segfaults on a stack overflow. And it is slow. (user: drh, tags: many-VALUEs)
19:40 [7c85e831] Rework the test/releasetest.tcl script so that it uses the autoconf makefile instead of the test/releasetest.mk makefile. Also add options like --dryrun and --buildonly. Omit the --makefile option and replace it with --srcdir with the default computed relative to the releasetest.tcl script itself. (user: drh, tags: releasetest-refactor)
19:28 [43db1f44] Experimental "PRAGMA data_version" command for detecting when another process has changed the database file. (user: drh, tags: data_version_pragma)
20:13 [35a20a5f] Experimental opimizations to speed up FK constraint CASCADE and SET NULL action processing. Requires further testing. (user: dan, tags: experimental-fk-actions)
20:49 [5648af96] Closed-Leaf: Changes to threadtest3 so that "stress2" is more similar to the SDS stress test. (user: dan, tags: threadtest3)
19:29 [ec3a7446] Add the threadtest4.c test program. Not yet working. (user: drh, tags: threadtest4)
14:36 [68b23c3d] Closed-Leaf: Add code to check the validity of CollSeq objects during runtime. This code was not able to detect anomalies such as came up as a result of ticket [e4a18565a36884b00edf66541f38c693827968ab] so it is put into a branch for historical reference, with the intent of leaving it out of trunk. (user: drh, tags: collseq-checking)
05:38 [651ed97d] When closing a (shared-cache) database connection, be sure to clear out all KeyInfo objects cached on Index objects. Proposed fix for ticket [e4a18565a36884b00edf]. (user: drh, tags: fix-stale-keyinfo-cache)
19:04 [8e20a434] Add the SQLITE_CHECKPOINT_TRUNCATE option. (user: dan, tags: checkpoint-truncate)
16:14 [e1f893c6] Closed-Leaf: Unintentional edits mistakenly checked in. Was: Remove an obsolete and incorrect comment from the whereLoopOutputAdjust() routine in the query planner. No changes to working code. (user: drh, tags: mistake)
19:08 [00fe0950] Closed-Leaf: Adding the "noskipscan" token to an sqlite_stat1.stat field prevents an index for being used with the skip-scan algorithm. (user: drh, tags: noskipscan-token)
19:34 [93642a65] Closed-Leaf: Consider using an automatic-index for a scan even if there exists a possible skip-scan that uses one or more "=" operators. (user: dan, tags: experimental-autoindex-fix)
01:33 [fa6e6a9a] Closed-Leaf: Experimental changes that permit read operations to continue after a ROLLBACK, as long as the schema is unchanged. (user: drh, tags: read-after-rollback)
03:55 [f9684000] Change the SQLITE_SCANSTAT_EST parameter so that it returns a double for the estimated number of output rows per loop, rather than a 64-bit integer. Revise the output format for the ".scanstats on" in the shell to make use of this new capability. (user: drh, tags: scanstatus)
19:37 [1fc7e2f3] For the Win32 VFS, allow memory mapped files to work when compiled without WAL support. (user: mistachkin, tags: winMmapNoWal)
20:11 [6a9bab34] Add the experimental sqlite3_stmt_scanstatus() API. (user: dan, tags: scanstatus)
01:07 [a8f9bd1e] Call fsync() right after ftruncate() when in journal_mode=TRUNCATE and when synchronous=FULL in order to ensure that transactions are durable across a power loss that happens moments after the commit. Proposed fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1072773. This is a cherrypick of [3e922208b68563489]. (user: drh, tags: branch-3.8.7)
00:35 [c297a84b] Add the SQLITE_ENABLE_API_ARMOR compile-time option. This is a work in progress and is not yet completely functional. (user: drh, tags: api-armor)
17:26 [c6a5b67a] Leaf: Add debugging code to count the number of iterations of each loop made as part of statement execution. (user: dan, tags: debug-loopcounters)
16:25 [1a5a5da3] Closed-Leaf: The _beginthreadex() / _endthreadex() functions should only be used when compiling with MSVC. (user: mistachkin, tags: msvcThreads)
02:43 [67484807] Call fsync() right after ftruncate() when in journal_mode=TRUNCATE and when synchronous=FULL in order to ensure that transactions are durable across a power loss that happens moments after the commit. Proposed fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1072773. This is a cherry-pick of [3e922208b68563] (user: drh, tags: branch-3.8.6)
01:23 [b9c695e8] Add the OP_SorterColumns opcode - an experiment in using a special case opcode to decode the Sorter output rather than the generic OP_Column. This might be faster. And with further work, it could eventually eliminate the need for OP_OpenPseudo. (user: drh, tags: OP_SorterColumns)
20:52 [2a957396] Closed-Leaf: Account for the ASC/DESC properties of ORDER BY expressions when using the same index for GROUP BY and ORDER BY. Candidate fix for [ba7cbfaedc]. (user: dan, tags: experimental)
19:16 [e6f7f97d] Improve the accuracy of the estimates used when searching an index for values not present in any stat4 samples under some circumstances. (user: dan, tags: stat4-avgeq)
21:24 [0efc6859] Closed-Leaf: Draw the TreeView debugging graphs using unicode box-drawing characters. (user: drh, tags: box-character-graph)
18:47 [5e5d6e86] Leaf: Add the OPFLAG_MULTICOLUMN flag to the OP_Column opcode. Rearrange OP_Column instructions to take advantage of the new flag for a small performance increase (user: drh, tags: faster-OP_Column)
05:00 [3edab995] Reduce the amount of memcpy() required by defragmentPage(). (user: drh, tags: defrag-opt)
04:38 [c705cf85] Closed-Leaf: Experiment using linear interpolation, instead of a strict binary search, when looking for integer-keyed rows on a single b-tree page. The experiment was not successful. The number of key comparisons is reduced by about 15%, but the added complexity of the search logic causes an overall reduction in performance. The patch is saved for historical reference only. (user: drh, tags: linear-interpolation)
18:18 [cbe0cf9d] Enable SELECT query planning tracing when compiled with SQLITE_ENABLE_SELECTTRACE and either SQLITE_DEBUG or SQLITE_TEST. (user: drh, tags: select-trace)
00:02 [35db3e2f] Revise macro usage in 'sqliteInt.h'. (user: mistachkin, tags: sqliteIntMacros)
00:43 [5b9b8987] Add the sqlite3VdbeMemClearAndResize() interface to be used in place of sqlite3VdbeMemGrow(). A C++ style comment was left in this check-in by mistake, and so it has been moved into a branch to avoid problems in any future bisects on windows. (user: drh, tags: Cplusplus-comment)
14:16 [0be3019e] Reorder the elements of the Mem object for a small size reduction and performance improvement. Moved into a branch because MSVC is unable to handle named structure initializer on nullMem. (user: drh, tags: micro-optimizations)
17:27 [94954850] Add new APIs that take 64-bit length parameters: sqlite3_malloc64(), sqlite3_realloc64(), sqlite3_bind_blob64(), sqlite3_bind_texte64(), sqlite3_result_blob64(), and sqlite3_result_texte64(). Internal memory allocation routines also now use 64-bit unsigned length parameters for safety. Also add the sqlite3_msize() interface. Fix the sqlite3_get_table() to use sqlite3_realloc64() to avoid a integer overflow problem. (user: drh, tags: 64-bit-lengths)
14:47 [8440f093] Non-working preliminary implementation attempts on user authentication. (user: drh, tags: user-auth)
16:49 [e7fae33c] Fixes to os_unix.c to support database (and other) files larger than 2GiB. (user: dan, tags: android-large-filles)
19:59 [2954ab50] Add an experimental extension for applying bulk updates to databases. (user: dan, tags: ota-update)
12:29 [462f42af] Closed-Leaf: Contains a fault. Was: Avoid an unnecessary OP_Move operation for expression subqueries. (user: drh, tags: mistake)
11:24 [8c57bcc3] Closed-Leaf: Add the sqlite3VdbeChangeDest() routine that can be used to eliminate OP_Move opcodes. (user: drh, tags: experimental)
16:01 [052d89b5] Fix a problem causing an inaccurate stat4-based estimate for the number of rows visited by a range scan. (user: dan, tags: stat4-experimental)
14:34 [8267d821] Get the sqlite3VdbeSerialGet() routine to run faster by avoiding the use of local variables. (user: drh, tags: experimental)
19:11 [2f59e71f] For sqlite3_win32_is_nt(), assume WinRT is NT-based. (user: mistachkin, tags: winrt)
11:56 [1cb1cd64] Further size reduction and performance improvement in btree.c:allocateSpace(). (user: drh, tags: btree-speedup)
15:08 [c2fcf0b9] Begin adding commands to the command-line interface for interacting with the sessions extension. This is the first check-in of a work-in-progress. (user: drh, tags: sessions_from_cli)
18:31 [cc910b8e] Closed-Leaf: Fix compiler warnings on WinCE. (user: mistachkin, tags: winCeWarn)
13:32 [169fc47e] Leaf: Remove support for Win9x. (user: drh, tags: drop-win9x-support)
16:52 [299b9570] Because SQLite internally calculates query plan costs using a logarithmic scale, very large estimated sorting costs can cause all other estimated costs to be rounded down to zero. In these cases break ties between plans with the same total cost by comparing the costs with sorting excluded. This is an alternative fix for the problem addressed by [2af630c572]. (user: dan, tags: query-planner-fix)
16:50 [ec5d84ba] Oops! This check-in was on trunk. But it contains a debugging printf(). Original comment: When the estimated cost to do a sort overwhelms the estimated cost to do individual table lookups, make sure that the table lookup costs are still taken into consideration when selecting the lookup algorithm. (user: drh, tags: query-planner-fix)
15:12 [2f724cba] Closed-Leaf: Changed my mind: This opcode name changes mere creates unnecessary diff marks between older and newer versions without significantly improving readability. Was: Rename the IsNull opcode to IfNull and rename the NotNull opcode to IfNotNull. (user: drh, tags: deadend)
21:03 [436e8842] Enhancements to the code generator for the IN operator that result in much faster queries in some cases, for example when the RHS of the IN operator changes for each row of a large table scan. (user: drh, tags: IN-operator-improvements)
14:46 [ee0fd6aa] Begin making changes to the IN operator in an attempt to make it run faster and to make the code easier to understand. (user: drh, tags: IN-operator-improvements)
17:47 [bc14e64b] Leaf: Try to reuse sorter statements in fts5. Does not work due to circular references on VTable object. (user: dan, tags: save_sorter_stmt)
05:49 [18984c32] Enhancements and updates to the Win32 mutex subsystem. (user: mistachkin, tags: winMutex)
18:36 [3e1e79e1] Improve the performance of the ANALYZE command by taking advantage of the fact that every row of a UNIQUE index is distinct. (user: drh, tags: faster-analyze)
01:26 [34a1f38b] Add support for parsing C-style hexadecimal literals. (user: drh, tags: hex-literal)
20:15 [7fe601ea] Add new ASCII mode to the shell capable of importing and exporting using the official unit and record separators (i.e. 0x1F and 0x1E, respectively). (user: mistachkin, tags: asciiMode)
21:16 [6dc7b2f1] Fix harmless compiler warnings for MSVC in the showdb/showwal command line tools. (user: mistachkin, tags: toolWarnings)
13:32 [8cb43edd] Generate complete samples for sqlite_stat4 on WITHOUT ROWID tables. Ticket [b2fa5424e6fcb15b5] (user: drh, tags: stat4-without-rowid)
20:21 [01dc8102] Attempt to use sqlite_stat4 data to estimate the number of rows visited by a range query that uses a skip-scan. This code is largely untested. (user: dan, tags: stat4-skipscan)
11:33 [1e0648dc] Add some code for an experimental fts5 module. Does not work yet. (user: dan, tags: fts5)
02:46 [d6883e96] Do not attempt to create an automatic index on a constant constraint, as doing so is pointless. (user: drh, tags: autoindex-improvements)
20:18 [401a0ca3] Leaf: Proposed change to the fix for ticket [1c69be2dafc28b] such that legacy applications that were exploiting the older buggy behavior in SQLite continue to work. (user: drh, tags: group-by-name-resolution)
20:06 [c41df393] Closed-Leaf: Enhance the unix VFS so that it keeps track of the size of unlinked files internally and thus avoids the need to call fstat() on those files, since fstat() does not work reliably on unlinked files on some implementations of FuseFS. (user: drh, tags: omit-fstat-after-unlink)
09:56 [7d445e59] Leaf: Moved to "mistake" because this commit contains a typo causing a test to fail. Was: Add an extra test to further verify that the FTS notindexed option is working properly. (user: dan, tags: mistake)
03:27 [d43e2e59] Revise locking retry semantics in Win32 VFS to abort early if the file handle is reported as invalid. (user: mistachkin, tags: winLockHandle)
20:06 [2c7e277b] Enable the OR optimization for WITHOUT ROWID tables. Use a temp table instead of the RowSet object to track the rows that have already been included in the result set. (user: dan, tags: without-rowid-or-opt)
15:16 [17349a49] Changes to help ensure that a multiplication does not overflow when computing the number of bytes needed for a memory allocation, and cause a malfunction. No problems existing problems were discovered. However, these changes should help to ensure that no problems arise in the future. (user: drh, tags: safer-malloc)
23:38 [7e60347e] Closed-Leaf: Fix harmless compiler warnings. (user: mistachkin, tags: ftsWarnings)
20:04 [b3b505a4] Experimental code to prevent FTS indexes from growing indefinitely as the table is updated. (user: dan, tags: fts4-experimental)
22:01 [38cbcedb] Experimental changes to pre-cache a database file prior to it being fully opened. (user: mistachkin, tags: winPreCache)
17:19 [0deac873] Make sure the group_concat() function returns an empty string, not a NULL, if it has at least one input row. Fix for ticket [55746f9e65f8587]. (user: drh, tags: tkt-55746f9e)
15:28 [8ad0a123] Leaf: Experimental changes that reduce the size of Expr objects from 72 to 64 bytes each on x64 and from 48 to 44 bytes each on x32. (user: drh, tags: smaller-expr)
19:57 [35a9f3f1] Try to reduce the amount of memory used to hold the schema when PRAGMA ignore_check_constraints is active. (user: drh, tags: reduce-schema-size)
18:24 [857f2baf] Centralize and reform use of the Win32 related include files. (user: mistachkin, tags: winHdr)
20:04 [c5a6ec0a] Changes to the way the planner calculates the costs of various table and index scans. Some test cases still failing. (user: dan, tags: experimental-costs)
13:20 [34155c40] Add sqlite3_log() diagnostic messages for a specific type of corruption where the file size is reported to be too small relative to the size in the header. This branch is intended to help debug a specific problem reported from the wild and is not for general use. (user: drh, tags: filesize-debug)
12:00 [2029a396] Closed-Leaf: Enhancements to the date and time functions so that they optionally support a 5-digit year. Not sure we want to include this in trunk. Saved in a branch for future reference. (user: drh, tags: five-digit-year)
19:30 [03e3c5a8] Add the win32-none VFS which omits rollback-journal locking. (user: drh, tags: win32-none)
00:08 [a1b2f28b] Preliminary changes to support building VSIX packages for Windows Phone 8.1. (user: mistachkin, tags: vsixWinPhone81)
21:06 [53688a25] Initial attempt at getting R-Tree queries to work using a priority queue. This check-in compiles, but R-Trees do not work well. And there are debugging printf()s left in the code. This is an incremental check-in. (user: drh, tags: rtree-queue)
16:14 [20a73ec0] Update comments in the R-Tree module in preparation for some big changes. Add an "rtree" performance test to speedtest1. (user: drh, tags: rtree-enhancements)
20:04 [f9d5e09a] Experimental multi-threaded sorting changes to allow the sorter to begin returning items to the VDBE before all data is sorted. (user: dan, tags: threads-experimental)
18:44 [cbfc0f6d] Closed-Leaf: Experimental multi-threaded sorting changes to begin merging PMAs before SorterRewind() is called. (user: dan, tags: abandoned)
14:16 [abbdb925] Closed-Leaf: Incorrect change to a comment. (user: drh, tags: mistake)
21:16 [8f869ca7] Experiments in picking better query plans, especially when the usage of one index is a subset of another. (user: drh, tags: query-plan-experiments)
19:48 [83a105c8] Closed-Leaf: Changes to make the multi-threaded sorter sort stably. (user: dan, tags: threads-closed)
16:22 [db293547] Fix a potential buffer overread that could have occurred when searching a corrupt database file. (user: drh, tags: branch-3.8.4)
12:33 [0b95b7a8] Closed-Leaf: Cancel column-cache entries that are involved in a comparison operator since the comparison might have forced an affinity change. Originally proposed as a fix for ticket [a8a0d2996a], but later determined to be incorrect. (user: drh, tags: tkt-a8a0d2996a)
12:36 [eae6dfbe] Closed-Leaf: One possible fix for the [e39d032577d] problem it to replace the failing assert() with a testcase() as shown here. (user: drh, tags: tkt-e39d0325)
08:59 [6f3a5c24] Add an experimental fix to avoid attempting to mmap memory from an offset that is not a multiple of the system page size on systems with page sizes larger than 32KB. (user: dan, tags: shm-mapping-fix)
15:30 [b1509025] Experiments with the optimization of ORDER BY and GROUP BY clauses. (user: drh, tags: orderby-planning)
20:33 [da591985] Enable the b-tree cursor object's overflow page-number cache, which is normally enabled only for incr-blob cursors, for all cursors. (user: dan, tags: overflow-pgno-cache)
14:44 [04caffce] Closed-Leaf: Forgot to change the VERSION file. (user: drh, tags: mistake)
01:29 [bac2820e] Closed-Leaf: Experimental simplification of memory flags/type handling. (user: mistachkin, tags: noMemType)
21:59 [aec5473a] Refactor the sqlite3VdbeRecordCompare() routine used to compare btree records. Create a couple of fast-track routines to handle the common cases of a string with BINARY collation or integer values as the left-most column. This gives a significant performance boost in common use. Oops: This build does not work on the Beaglebone where "char" defaults to unsigned. (user: drh, tags: broken-on-arm)
14:45 [4aeb3ae4] Add extra assert() statements trying to catch a Mem object in an inconsistent state. (user: drh, tags: enhanced-mem-check)
19:05 [3ad687b7] Leaf: Only run the OP_OpenRead opcodes for a correlated subquery once, on the initial iteration. Keep the cursor open for subsequent runs. This was suppose to be a performance enhancement, but it is difficult to come up with a query where is makes a significant difference. Hence, the change is getting parked in a branch. (user: drh, tags: open-only-once)
21:01 [85206e0b] Attempt to speed up sqlite3VdbeRecordCompare() by various means. This code is in an interim state. (user: dan, tags: experimental)
19:38 [cc5eda54] Closed-Leaf: Make sure temporary registers used within a co-routine are not also used outside of that co-routine, in order to prevent concurrent use of the same register for two different things. Ticket [8c63ff0eca81a9132d8] (user: drh, tags: tkt-8c63ff0eca)
05:44 [6676475c] Better loadable extension handling in the Win32 VFS when compiled for Cygwin. (user: mistachkin, tags: cygDlOpen)
05:18 [adba783c] Enhance the Win32 VFS I/O retry logic. (user: mistachkin, tags: winIoRetry)
01:55 [aa2d8b0e] Enhance the code generator for INSERT INTO ... SELECT so that the SELECT generates output directly in the registers that INSERT INTO will be using, in many cases, and OP_SCopy operations can thus be avoided. (user: drh, tags: insert-optimization)
23:35 [e1472307] Better support for MinGW 4.x. (user: mistachkin, tags: mingw4x)
19:37 [538f7b25] Experimental change to os_unix.c to delay creating a database file until it is first written. (user: dan, tags: deferred-open)
16:13 [90e9deae] Modify the command-line shell to print a warning when using an in-memory database. (user: drh, tags: memdb-warning)
13:22 [35f2793d] Fix a harmless compiler warning in VS2013. (user: drh, tags: branch-3.8.3)
18:27 [1ec0e9dd] Get rid of the OP_Undef and OP_IsUndef opcodes in favor of higher-level OP_InitCoroutine and OP_EndCoroutine. (user: drh, tags: coroutine-refactor)
13:20 [6fb74485] Add the OP_Undef and OP_IsUndef opcodes. With these, use the first register in the result register range as the flag to indicate EOF on an INSERT from a SELECT, rather than allocating a separate boolean register for that task. (user: drh, tags: coroutine-refactor)
17:08 [a332908b] Make the root page of an ephemeral index be page 1 instead of page 2. (user: drh, tags: subquery-codegen-refactor)
06:35 [492585c8] Closed-Leaf: Minor change to TEA extension docs in an attempt to make links work correctly. (user: mistachkin, tags: teaDoc)
11:12 [c723ec27] Closed-Leaf: Enhance the MSVC makefile for better debugging symbol support. (user: mistachkin, tags: msvcDebug)
22:25 [b2671e11] Change the recursive common table expression algorithm to use a queue instead of a pair of tables. Runs about 25% faster on the sudoku solver query. The OP_SwapCursors opcode is no longer required. The current implementation uses just a fifo, but the plan is to change it into a queue that will support ORDER BY and LIMIT in a recursive query. (user: drh, tags: cte-via-queue)
00:19 [cc1cb321] Add support for the LEVEL pseudo-column in the recursive part of a common table expression. LEVEL has the value of 1 on the first iteration and successively larger integer values of subsequent iterations. It cannot have a table qualifier. Actual columns named "level" can still be accessed by including the table name qualifier. (user: drh, tags: level-pseudocolumn)
13:22 [da98b720] Parse common table expressions. But do not do anything with them (yet). (user: drh, tags: common-table-expr)
03:13 [4e4483b2] Closed-Leaf: Add the "%token_class" directive to the LEMON parser generator. This opens up the possibility of simplifying the parser. Also remove all calls to sprintf(), strcpy(), and strcat() from LEMON to avoid compiler warnings on OpenBSD. (user: drh, tags: buggy-lemon)
23:21 [e43c522d] Do not use sprintf(), strcpy() or strcat() in the implementation of the lemon parser generator tool, to avoid compiler warnings in OpenBSD. (user: drh, tags: lemon-updates)
18:32 [4365ddd6] Closed-Leaf: Start a new experimental branch for support of Oracle-style CONNECT BY syntax. (user: drh, tags: connect-by)
14:16 [19f3208b] Have the planner detect cases where a MATCH constraint is applied to a virtual table, and ignore any plans that do not allow the virtual table implementation to implement the MATCH filtering. (user: dan, tags: avoid-unusable-match)
15:35 [ac5852d6] Make sure the WhereLoop.aLTerm[] array is large enough when processing the skip-scan optimization. Fix for ticket [520070ec7fbaac]. (user: drh, tags: branch-3.8.2)
15:11 [4c6a659c] Show changes to the column cache when PRAGMA vdbe_addoptrace=ON is set. (user: drh, tags: column-cache-debug)
15:03 [6db7052e] Add the printf() SQL function. (user: drh, tags: printf-sql-function)
20:42 [32fb1784] Modify the way some internal file-controls are invoked. In order to support multi-file transactions in the zipvfs extension. (user: dan, tags: zipvfs-multifile-commit)
20:39 [3a9bec52] If the SQLITE_ENABLE_CURSOR_HINTS macro is defined, then invoke the sqlite3BtreeCursorHint() interface to provide hints to the storage engine about rows that need not be returned. Hints can be disabled using SQLITE_TESTCTRL_OPTIMIZATIONS with SQLITE_CursorHints (0x2000). Cursor hints are not used by the built-in storage engine of SQLite but might be useful to applications that provide their own storage engine. The current code is work-in-progrss and contains bugs. (user: drh, tags: cursor-hints)
15:37 [8759a8e4] Add code to detect if the database file is moved or deleted out from under SQLite and return an SQLITE_IOERR_NODB. (user: drh, tags: detect-moved-db)
22:32 [52a44146] Add memory subsystem related defines to the compile-time options list. (user: mistachkin, tags: memTests)
03:01 [0ea9e472] Closed-Leaf: Avoid using the GetVersionEx functions if they are considered deprecated. (user: mistachkin, tags: vs2013)
09:36 [0d42c6b8] Initial work on isolating usage of the Windows header file. (user: mistachkin, tags: winHdr)
02:38 [d0fb7ace] Performance improvements in sqlite3BtreeMovetoUnpacked(). (user: drh, tags: btree-optimization)
23:18 [484162b6] Closed-Leaf: Better support for UTF-8 paths on Cygwin. (user: mistachkin, tags: cygUtf8)
22:45 [8191b512] Closed-Leaf: A much simpler fix is to simply change MEMSYS5 so that it takes any free block of the appropriate size (the first on the list of free blocks) rather than searching for the one with the smallest address. This is also faster than using the min-heap algorithm. Need to research to verify that the allocator still satisfies the Robson proof, however. (user: drh, tags: memsys5-performance)
21:30 [7d2cdfad] Closed-Leaf: Use a heap-based primary queue rather than a linked list to store the available free blocks of each size in MEMSYS5, since this provides faster access to the first available block. (user: drh, tags: memsys5-performance)
00:27 [f09f11e9] Add experimental sqlite3_config option to control the native Win32 heap size. (user: mistachkin, tags: winHeapSize)
17:25 [7c914e39] Refactoring the OP_Column opcode for improved performance and maintainability. (user: drh, tags: OP_Column-refactor)
20:13 [8f479a72] Enhance the DELETE logic so that it can make use of WHERE_ONEPASS_DESIRED for rowid tables. (user: drh, tags: optimize-delete)
01:10 [8dc5c76c] Rework the logic that factors constant expressions out of inner loops, making it both simpler and faster. (user: drh, tags: expr-codegen-enhancement)
15:35 [d1fbc6ca] Leaf: An experimental virtual tables for showing the content of internal schema objects. (user: drh, tags: schema2-vtab)
12:27 [27dd5993] Add the ability to use an index even if the left-most columns of the index are unconstrainted, provided that the left-most columns have few distinct values. (user: drh, tags: skip-scan)
18:13 [c54dc967] Enhancements to the Win32 native heap integration. (user: mistachkin, tags: win32heap)
22:11 [9d870d5f] Closed-Leaf: Fix temporary directory separator handling for Cygwin. (user: mistachkin, tags: cygDirSep)
12:30 [5530cdc4] Leaf: Have the shell ".timer on" command cause the shell to report wall-clock time for each query (as well as user and system CPU time). (user: dan, tags: shell-wall-clock)
13:15 [a00d2ed4] Closed-Leaf: Drop the mutex on the multiplexor before entering the xRead VFS call. (user: drh, tags: multiplex-parallel-read)
23:31 [0248ec5e] Experimental changes toward "index only" tables. Add the ability to specify options on CREATE TABLE statements using the WITH clause modeled after PostgreSQL and SQL Server. Only the "omit_rowid" option is currently recognized and that option is currently a no-op. (user: drh, tags: omit-rowid)
09:49 [2470d1bb] Closed-Leaf: Fix memory/resource leaks for WinCE and Cygwin. (user: mistachkin, tags: wince-fixes)
10:43 [a38adeb7] Closed-Leaf: Fix harmless macro redefinition warnings in the totype extension. (user: mistachkin, tags: noWarnings)
19:06 [8c13a7fd] Closed-Leaf: In "PRAGMA foreign_key_check", treat missing parent tables as empty (instead of as errors). (user: dan, tags: fkc-missing-parent-tables)
09:32 [0c4dd9ff] Closed-Leaf: Changes to the new initial row of PRAGMA index_list results. (user: mistachkin, tags: indexList)
16:53 [8e78557a] Leaf: Try to remember statistics from ANALYZE using LogEst instead of u64. (user: drh, tags: log-stats)
18:16 [66c4a251] Begin an experimental refactoring to estimate the average number of bytes in table and index rows and to use that information in query planner. Begin by renaming WhereCost to LogEst and making that type and its conversion routines available outside of where.c. (user: drh, tags: row-size-est)
19:21 [d59d97b0] Experimental branch allowing different postulated scan rates for each index. (user: drh, tags: index-scan-rate)
11:42 [6622424a] Have fts4 full-text queries consider "docid<?" and similar constraints. (user: dan, tags: fts4-docid-range-constraints)
16:50 [579a5125] Closed-Leaf: Increase the number of bits available in Expr.flags. Other tweaks aimed at making expression processing more robust. (user: drh, tags: expr-tuning)
15:23 [036fc37a] Initial implementation of the unlikely() SQL function used as a hint to the query planner. (user: drh, tags: unlikely-func)
23:40 [d8daaba7] Leaf: Add the experimental SQLITE_DEFAULT_INDEX_SHAPE=1 compile-time option that makes a much more pessimistic guess at the effectiveness of unanalyzed indices. (user: drh, tags: index-shape-1)
21:52 [a411df72] Add support for Cygwin when handling temporary file names. Improve error codes and diagnostic messages for temporary file name handling on Windows. Rename winConvertUtf8Filename to winConvertFromUtf8Filename. Improve placement and comments for forward function declarations. (user: mistachkin, tags: cygwinTempPath)
21:26 [3426673e] Never leave an open file descriptor pointing into the middle of the database file if the file descriptor number is 2 or less. (user: drh, tags: overwrite-avoidance)
13:15 [c3f75941] Cherrypick of [c1152bdcbb] and fix for [9f2eb3abac]: Have the whereShortCut() planner ignore indexes with more than four columns. (user: drh, tags: branch-3.8.0)
00:59 [032c3159] Unify the result of PRAGMA mmap_size when mmap support is disabled. (user: mistachkin, tags: mmapDisabled)
21:15 [af497072] Add tointeger() and toreal() SQL functions. (user: mistachkin, tags: toTypeFuncs)
20:42 [cdb181c0] Add the cache_spill pragma. (user: drh, tags: cache_spill)
08:06 [c23acba1] Closed-Leaf: Make it easy to attach a debugger the test fixture process prior to any tests being run. (user: mistachkin, tags: dbgTestFixture)
20:24 [2beea303] Begin adding experimental sqlite_stat4 table. This commit is buggy. (user: dan, tags: sqlite_stat4)
18:12 [6794b2dc] Here begins an experimental branch for exploring the idea of a partial index. This check-in is able to parse a WHERE clause on a CREATE INDEX statement, but does not actually do anythingn with that WHERE clause yet. (user: drh, tags: partial-indices)
14:54 [de05eb75] Another attempt at generalizing the URI parsing so that it works with a wider variety of file URIs and yet remains backwards compatible. (user: drh, tags: uri-enhancement)
20:54 [74c12dee] Update the URI filename parser to allow (and ignore) authority names in unix and to pass the authority through to the OS on windows, as this appears to be what web-browsers are doing. (user: drh, tags: uri-enhancement)
17:12 [71effa59] Ensure that all auxiliary data registered by calls to sqlite3_set_auxdata() is destroyed when the VM is halted. Partial fix for [406d3b2ef9]. DRH adds: Stray text accidentally inserted into vdbe.c just prior to the commit breaks the build. (user: dan, tags: typo)
13:33 [ece960c4] Closed-Leaf: Experimental "PRAGMA query_only=BOOLEAN" statement that is able to turn write capabilities on and off. (user: drh, tags: query_only)
23:53 [f2ab8747] Closed-Leaf: Modify several extensions to use the new exported function naming. Fix some shared library compilation issues. (user: mistachkin, tags: extRefactor)
22:01 [f1366bab] Closed-Leaf: Add a new (experimental) sqlite3_stmt_status() verb that returns the number of VM steps. (user: drh, tags: status-vm-step)
17:30 [8ff2b8f5] Add the "notindexed" option to fts4. (user: dan, tags: fts4-notindexed)
00:35 [2c2577e6] Modify the query planner interface so that it always passes in the result set. This is the first step toward adding an optimization that will omit tables from a join that do not contribute to the result. (user: drh, tags: omit-join-table-opt)
18:53 [c5954c58] VSIX tooling changes to support Visual Studio 2013. (user: mistachkin, tags: vsix2013)
20:13 [d36d7e68] Add the languageid_bits= option to fts. Still some problems to work out. (user: dan, tags: fts-languageid-bits)
00:32 [10bba8d0] Add a prototype for an extension that sits in between the SQLite native code virtual table interface and a CLR IDisposable object. (user: drh, tags: disposable-vtable)
22:41 [6b77d61a] Add the ability to disable future calls to virtual table methods by invoking sqlite3_create_module() with a NULL sqlite3_module pointer. (user: drh, tags: disable-vtab)
19:12 [9e810967] First attempt to store costs and row counts as a logarithm. (user: drh, tags: nextgen-query-plan-logcost)
17:21 [db2415fa] High-speed version of NGQP. Still has some minor problems. (user: drh, tags: nextgen-query-plan-fast)
19:58 [60fc77bc] Candidate fix for a memory leak that occurs if a CREATE TABLE statement contains two or more COLLATE clauses on the same column definition. (user: drh, tags: memleak)
17:19 [048865e8] Add the files used to build the amalgamation-autoconf package. (user: dan, tags: autoconf-package)
18:23 [ea0428f9] Candidate fixes for problems revealed by notify2.test. Notify2.test is still failing at this point. (user: dan, tags: shared-cache-fixes)
17:49 [fc3630cd] Closed-Leaf: Make sure the ORDER BY collating sequences are compatible with the comparison collations before using the merge algorithm for compound SELECT statements. Candidate fix for ticket [6709574d2a8d8]. (user: drh, tags: tkt-6709574)
00:15 [ccaf4c3f] Begin inserting some experimental code for the next generation query planner. (user: drh, tags: nextgen-query-plan-exp)
19:49 [28c9e7fd] Allocate 4 bytes of unused header space for an "Application ID". Add the "PRAGMA application_id" command to set and query this identifier. Add the "magic.txt" file to show how the posix file command might use this application id. (user: drh, tags: application-id)
01:44 [b347b5d1] Initial work on reforming usage of OSTRACE by the Windows VFS. (user: mistachkin, tags: winOsTrace)
16:09 [9c7523da] Closed-Leaf: Avoid using posix_fallocate() in WAL mode, as it is not supported by all file-systems. (user: dan, tags: avoid-fallocate)
20:34 [f968d43f] Rebalance FTS expressions after parsing to limit recursion during evaluation. Avoid recursion when deleting FTS expression trees. Enforce a limit on the depth of an expression tree. (user: dan, tags: fts3-expr-rebalance)
20:10 [860fc393] Make "test_regexp.c" into a loadable extension and move it over to ext/misc/regexp.c. Add the "load_static_extension" command for testing purposes. (user: drh, tags: std-ext)
22:56 [6cfa1d73] Experiments in making loadable extensions easier to program. The shared library filename tries various operating-system specific extensions if the bare library name does not work. And the entry point is derived from the filename is the legacy entry point name "sqlite3_extension_init" is not found. (user: drh, tags: loadext)
19:59 [ad53924d] Closed-Leaf: Only consider AS names from the result set as candidates for resolving identifiers in the WHERE clause if there are no other matches. In the ORDER BY clause, AS names take priority over any column names. Candidate fix for ticket [2500cdb9be]. (user: drh, tags: tkt-2500cdb9be)
22:52 [daa168f3] Closed-Leaf: Expand scope of the SQLITE_DISABLE_MMAP define for the Win32 VFS. (user: mistachkin, tags: winDisableMmap)
19:04 [86f26f91] Increase the version number to and cherrypick the fix for ticket [7ff3120e4fa54abb55]. This check-in is a release candidate. (user: drh, tags: branch-3.7.16)
00:13 [abedd7cb] Closed-Leaf: Experimental changes to support a Win32 VSIX package flavor. (user: mistachkin, tags: vsixWin32)
03:22 [bf6ca21b] Leaf: Backport the multi-process tester to the last released version. (user: mistachkin, tags: branch-3.7.16)
19:19 [96f04d99] Closed-Leaf: Check in the instrumented code for the mptest test case that appears to show a spontaneously disappearing journal file. (user: dan, tags: missing-journal-file)
00:19 [c318fafe] Add a prototype TH3-script-style test harness that starts multiple processes operating on the same database file at the same time. (user: drh, tags: mptest)
15:04 [488089e6] A fix and test-case for the ORDER BY problem identified by ticket [a179fe7465]. This change causes sorting to occur in some cases where it is not strictly necessary. Further work is needed to avoid those extra sorts. (user: drh, tags: orderby-fix)
20:32 [e7698cba] Change os_unix.c to use either one or two mappings internally. (user: dan, tags: two-mappings)
18:34 [6f21d9cb] Use mmap() to read from the database file in rollback mode. This branch is unix only for now. (user: dan, tags: experimental-mmap)
20:58 [7232093d] Closed-Leaf: Fix typo in sqlite3_close() function documentation reported on the mailing list. (user: mistachkin, tags: docTypo)
18:34 [614a038a] A proposed fix for the DESC ORDER BY bug of ticket [4dd95f6943fbd18]. Seems to work, but lots more testing is needed prior to moving to trunk. (user: drh, tags: desc-orderby-fix-1)
11:49 [938b91e8] Closed-Leaf: Fixes for compiling with SQLITE_OMIT_AUTOVACUUM and/or SQLITE_OMIT_TRIGGER defined. (user: dan, tags: omit-fixes)
01:23 [465fd853] Add experimental tointeger() and todouble() SQL functions. (user: mistachkin, tags: toTypeFuncs)
07:10 [69746ef7] Closed-Leaf: If SQLITE_OMIT_UTF16 is defined, avoid setting the 'enc' field of Schema objects to any value except SQLITE_UTF8. Otherwise, assert() statements may fail or spurious SQLITE_NOMEM errors may be returned at the vdbe level later on. (user: dan, tags: experimental)
16:54 [4e6e07a6] Failed merge experimental branch with trunk. (user: dan, tags: ex-robust-open)
15:09 [39247b14] Add extended error code SQLITE_READONLY_ROLLBACK. Returned if a read-only connection cannot read the database because doing so would require it to roll back a hot-journal. (user: dan, tags: experimental)
05:44 [d2e7dfca] Closed-Leaf: Prevent Tcl file encoding issues in the tests for the unicode() and char() functions. (user: mistachkin, tags: funcTestEncoding)
20:16 [c3939d24] Avoid moving pages more than once in an incremental vacuum operation. (user: dan, tags: incr-vacuum-opt)
19:34 [209b2108] Closed-Leaf: Two new SQL functions: unicode() and char(). (user: drh, tags: unicode-function)
09:46 [09dfc0c9] Closed-Leaf: Improve memory allocation error handling on WinCE. (user: mistachkin, tags: wince)
13:58 [54611046] Add extended error codes for constraint errors. (user: drh, tags: constraint-error-codes)
21:15 [98bf668a] Allow an index to be used for sorting even if prior terms of the index are constrained by IN operators. (user: drh, tags: IN-with-ORDERBY)
03:18 [652233d6] Closed-Leaf: Enhance RTree virtual table creation error messages that involve the getNodeSize() function. (user: mistachkin, tags: rtreeErrMsg)
03:18 [dd473cae] Closed-Leaf: Make the 'fs' virtual table module portable to Windows. (user: mistachkin, tags: fsVfsWin)
17:08 [13171eb5] Enhance the query planner to exploit transitivity of join constraints in a multi-way join. (user: drh, tags: transitive-constraints)
13:26 [0a1207c8] Closed-Leaf: Do not raise an error if an unknown SQL function is found in a CHECK constraint while parsing the schema of an existing database. This version causes a run-time error when processing STAT3 tables. (user: dan, tags: mistake)
17:10 [bae528f4] Backport to the 3.7.15 branch the fix to the segfault problem of ticket [a7b7803e8d1e869] which involved the use of "AS" named result columns as logical terms of the WHERE clause. Also, change the version number to (user: drh, tags: branch-3.7.15)
15:53 [3d0e00c7] Proposed fix for ticket [a7b7803e8d1e8699cd8a]. (user: drh, tags: tkt-a7b7803e)
02:36 [7344e791] Better resolution of table and column names in joins where some of the terms of the FROM clause are parenthesized. (user: drh, tags: name-resolution-fix)
16:46 [01c980e9] Prototype for PRAGMA that checks all foreign key constraints on a table. (user: drh, tags: foreign-key-check)
16:37 [7280e14c] Closed-Leaf: Attempt to further generalize the min/max optimization so that, if an appropriate index exists, it can be used by any aggregate query that contains only a single aggregate of the form max(colname) or min(colname) and does not contain a GROUP BY clause. (user: dan, tags: minmax-opt)
19:37 [0c31a468] Closed-Leaf: Apply the same restrictions on constant refactoring to statements within a trigger program as top-level statements. Candidate fix for [ae3c5670b6]. (user: dan, tags: constant-refactoring-in-triggers)
15:15 [cc6e0785] Add a test case that demonstrates ticket [71e333e7d2e642]. (user: drh, tags: ticket-71e333e7)
00:16 [e1feab98] Closed-Leaf: Stop using the TCL_LIBS configuration variable when linking with Tcl. Remove superfluous 'rm' command. (user: mistachkin, tags: noTclLibs)
05:21 [59c23394] Closed-Leaf: Add a test to ensure that the fix in [b0c1ba655d] has worked. (user: dan, tags: mistake)
00:23 [41fd9dd2] Closed-Leaf: Improvements to the 'tcl' shell output mode. Escape double quotes, set separator to space when mode is set, and skip separator after final column. (user: mistachkin, tags: tclMode)
19:50 [cd501bbc] Add an option to register global hooks used for logging all SQL executed by an application. (user: dan, tags: sqllog)
02:10 [692ad3c0] Closed-Leaf: In winDelete, determine that a file does not exist by checking for a last error of ERROR_FILE_NOT_FOUND or ERROR_PATH_NOT_FOUND. (user: mistachkin, tags: winNotFound)
10:54 [35625961] When available, use posix_fallocate() rather than ftruncate() to allocate space for mmap()ed -shm files, since posix_fallocate() gives an error if no disk space is available whereas ftruncate() is silent and leaves the system vulnerable to a SIGBUS upon first write to the mmap()ed region. Ticket [5eaa61ea1881040b17449ca043b6f8fd9ca55dc3] (user: drh, tags: tkt-5eaa61ea18)
17:59 [94255634] Try to take into account the cost of inner loops when selecting which table of a join to use for the outer loop. (user: drh, tags: inner-loop-cost)
18:48 [18ae030d] Proposed fix for ticket [bfbf38e5e9]. (user: drh, tags: ticket-bfbf38e5e9)
00:29 [7af3acbb] Add an optimization that attempts to run a subquery as a coroutine rather than manifesting it into a temporary table. (user: drh, tags: subquery-as-coroutine)
00:11 [f7c5abe8] Closed-Leaf: Make sure all virtual table cursors have been closed on a prepared statement prior to unlinking the perpared statement from its database connection. (user: drh, tags: deferred-close-order)
03:07 [49ccae96] Closed-Leaf: Implementation of the INSTR() SQL function, as found in SQL Server, MySQL, and Oracle. (user: drh, tags: instr)
01:50 [9e6efcf0] Initial check-in of a test VFS designed to simulate a NAND-flash SSD for the purpose of measuring and subsequently minimizing write amplification caused by SQLite. The code in this check-in compiles but does not run. (user: drh, tags: ssdsim)
08:40 [702ebc64] Modify VSIX build tools in support of an additional package flavor. (user: mistachkin, tags: vsixFlavor)
09:39 [018e09c7] Fix harmless compiler warnings. (user: mistachkin, tags: warnings)
23:17 [aa650746] Enable optimization of IN operators on constraints to virtual tables. (user: drh, tags: vtab-IN-opt)
21:08 [8b4c3c5e] Leaf: An optimization that converts "a IN (b)" into "a==b". Seems to work, but needs additional test cases. (user: drh, tags: degenerate_IN)
19:58 [af5c9ee4] Ensure that when the source of a backup is a database that is zero bytes in size, the final destination database consists of at least one page. Truncating it to zero bytes is equivalent to zeroing the schema cookie and change counter, which can cause problems for existing clients. (user: dan, tags: zero-byte-backup-fix)
00:52 [585e2070] Closed-Leaf: Manually define the Win32 file-mapping APIs for WAL if SQLITE_WIN32_FILEMAPPING_API is defined. (user: mistachkin, tags: winFileMapping)
18:35 [ac81ae49] Backport fixes to shared-cache mode, from the shared-cache-fix branch, to version 3.7.9 (user: drh, tags: branch-3.7.9)
19:33 [2b370dea] Shared-cache mode fixes for views and virtual tables. (user: dan, tags: shared-cache-fix)
12:10 [8f448745] Yet another refactoring of ORDER BY logic in the query planner. This particular check-in works mostly, but still has a few minor issues. (user: drh, tags: qp-enhancements)
18:20 [86633e01] A branch off of the sessions branch corresponding to release 3.7.14. (user: drh, tags: sessions-3.7.14)
00:25 [6744d9a3] Further attempts to optimize out unnecessary ORDER BY clauses. (user: drh, tags: qp-enhancements)
23:26 [9fab9edd] Work around an optimization issue with the MSVC compiler for ARM. (user: drh, tags: branch-3.7.14)
20:12 [8b5f617c] Closed-Leaf: Fix several compiler warnings seen with MSVC. (user: mistachkin, tags: msvcWarnings)
14:29 [1104d42e] Pass information around between the major routines of the query planner using a single pointer to a structure rather than a long list of parameters. (user: drh, tags: qp-enhancements)
17:32 [2be661a4] Closed-Leaf: This change generates incorrect code when there are two or more IN operators in the WHERE clause that are both used by the same index. Was: Omit an unnecessary OP_IfNull that immediately follows an OP_Rowid. (user: drh, tags: mistake)
18:45 [cfaa7bc1] Attempt to use a covering index even on a full table scan, under the theory that the index will be smaller and require less disk I/O and thus be faster. (user: drh, tags: fullscan-covering-index)
18:45 [8398f77c] Closed-Leaf: Add an implementation of the REGEXP operator and function. Only defined if compiled with SQLITE_ENABLE_REGEXP. (user: drh, tags: regexp)
10:29 [7c340165] Initial prototype of SQLITE_CONFIG_READONLY. (user: mistachkin, tags: configReadOnly)
07:56 [b8d5359b] Closed-Leaf: More test cleanup. (user: mistachkin, tags: testClean)
16:46 [22ebc668] Add an experimental busy_timeout pragma to facilitate access to the sqlite3_busy_timeout() interfaces for programmers that are working from behind a language wrapper that does not expose that interface. (user: drh, tags: busy-timeout-pragma)
10:32 [e2f27d28] Add Win32 version resources to the applicable binaries built by the MSVC makefile. (user: mistachkin, tags: win32Resources)
10:52 [1dc8c7c7] Experimental change to support the covering index optimization for queries with OR terms in the WHERE clause that search a single index more than once. (user: dan, tags: multi-or-covering-index)
16:18 [3c3ffa90] Further improvements to the processing of nested aggregate queries. (user: drh, tags: nested-agg)
23:33 [600de08d] Added sqlite3_win32_set_directory API to assist in portability to WinRT. (user: mistachkin, tags: win32SetDir)
13:08 [c2cf4985] Closed-Leaf: Update the spellfix virtual table so that all OOM errors are reported out to the application. ERROR: A single edit was missed in spellfix1 which means that this particular check-in won't build "make test". (user: drh, tags: mistake)
20:05 [11dd05e5] Attempt to use two cores to do sorting. Unfortunately, instead of making sorts go faster as was hoped, this changes slows sorting down by about 10%. (Later:) The previous measurement was compiled using -pg. When compiled using -Os, this new code is roughly 10% faster than the original. (user: drh, tags: threads-sort-ex1)
15:57 [2bb8c492] Leaf: Experimental change to speed up ORDER BY clauses that sort based on a single expression. (user: dan, tags: sorter-exp)
01:37 [28aed847] Leaf: Parser bug fix: Make sure the table constraints allowed by prior releases can still be parsed, even if they are technically not allowed by the syntax diagram. This is a cherry-pick of [a1c014d8a87c8940b3], [38bf90af1ede6ee64e], and [e536ac041815b118c4]. (user: drh, tags: apple-osx-ml)
23:21 [0620285d] Closed-Leaf: Backport VSIX packaging support and related changes. (user: mistachkin, tags: vsix-3.7.13)
19:25 [55e47ef3] Modify the code in vdbesort.c so that most reads and writes to temporary files are aligned page-sized blocks. (user: dan, tags: sorter-coalesce-writes)
19:40 [0e4d977a] Add an internal interface that allows the code to take advantage of multiple cores by pushing subcomputations off into separate threads. The interface is not currently used. (user: drh, tags: threads)
19:32 [8752237d] Enhance the custom memory allocation interface to allow the user to specify a calloc() function. (user: dan, tags: calloc)
19:26 [f24b9d87] Add the "matchlen" column to the spellfix1 virtual table. (user: dan, tags: spellfix-matchlen)
19:43 [4a582c4d] Add the "matchlen" column to the spellfix virtual table. (user: dan, tags: spellfix-matchlen)
03:11 [8ecffca9] Improved accuracy on text-to-real and real-to-text conversions. Most conversions now round-trip correctly. Still need to fix some corner cases. (user: drh, tags: floating-point-conversions)
14:23 [87597e98] Closed-Leaf: Add the ieee754() SQL function that interprets a blob as a big-endian double. Arrange for the quote() SQL function to emit ieee754() functions in its output so that floating-point values in the database are exactly preserved by a ".dump" command in the shell. (user: drh, tags: ieee754-func)
08:00 [f970a3de] Fix a few compilation issues that can occur with certain compilers (e.g. GCC 2.95.3, MSVC). (user: mistachkin, tags: compiler-compat)
14:32 [e276a02b] The sqlite3_close() interface returns SQLITE_OK even if there are outstanding sqlite3_stmt and sqlite3_backup objects. The connection becomes a zombie. Resource deallocation is deferred until the last sqlite3_stmt or sqlite3_backup object closes. This is intended to help SQLite play nicer with garbage collectors. (user: drh, tags: deferred-close)
19:19 [f4e8ff03] When converting 64-bit floating point coordinates to 32-bit in RTree, take care to round the values such that the size of the bounding box is enlarged. (user: drh, tags: rtree-32bit-rounding)
18:06 [4590e433] Enable the use of shared cache for an in-memory database, so that separate database connections can share the same in-memory database. (user: drh, tags: shared-cache-memdb)
17:50 [0c13570e] Add an experimental tokenizer to fts4 - "unicode". This tokenizer works in the same way except that it understands unicode "simple case folding" and recognizes all characters not classified as "Letters" or "Numbers" by unicode as token separators. (user: dan, tags: fts4-unicode)
19:11 [72226096] Convert the NameContext object from using u8 booleans to using individual bits in a single u8 as its booleans. This change might become a basis for a fix for [c2ad16f997ee9c]. (user: drh, tags: nested-agg)
20:14 [0c0a0398] Closed-Leaf: Check-in included unrelated debugging code by mistake. Was: Fix a test case in the shell1.test script so that it works even for very long pathnames. (user: drh, tags: mistake)
17:15 [46f4eb54] When a connection disconnects from a shared-cache database, only delete the in-memory schema if there are no other connections. (user: dan, tags: shared-schema)
13:15 [03875633] Do not do the AV retry loop on open if the file that is attempting to be opened is really a directory. (user: drh, tags: win-check-dir)
02:58 [93011569] Add an experimental tokenizer to FTS3/4: one that transliterates latin, greek, cyrillic, and hebrew characters into pure ascii. (user: drh, tags: translit-tokenizer)
18:08 [83037d58] Closed-Leaf: Do the accounting for incr-merge work in pages instead of blocks. (user: dan, tags: fts4-incr-merge-exp)
15:44 [4d516240] Closed-Leaf: This change turned out to the code slower. Side track it. Was: Tweaks to the OP_Column opcode for clarity of presentation. (user: drh, tags: mistake)
01:34 [b899dbeb] Evaluate typeof(X) and length(Y) where X is any column and Y is a blob column without actually loading X and Y from disk. (user: drh, tags: faster-typeof-and-length)
11:48 [7ed9d2f2] Closed-Leaf: Allow multiple incremental merges to proceed concurrently. This is required to prevent a large crisis-merge from occuring while an even larger incremental-merge is underway. (user: dan, tags: fts4-incr-merge-exp)
02:20 [ed69434c] An attempt at automatic incremental merging for FTS4. (user: drh, tags: fts4-auto-incr-merge)
21:28 [254f99ea] Closed-Leaf: Add the sqlite3_db_readonly() interface. This is still tentative, pending a closer look at other ideas to accomplish the same thing. (user: drh, tags: db-readonly-api)
18:39 [741b8f89] Add the 'merge=?,?' command to fts4. This still needs some work. (user: dan, tags: fts4-incr-merge)
19:13 [9a0f90d9] Closed-Leaf: If a CHECK constraint is named, report that name on the error message when the constraint fails. (user: drh, tags: named-check-constraints)
19:44 [bea257f7] Add the "languageid=" option to fts4. This code is still largely untested and alsmost certainly buggy. (user: dan, tags: fts4-languageid)
18:16 [c0891296] Remove unused #defines from os.h. (user: drh, tags: winrt)
14:45 [5be07904] Begin adding support for SQLITE_FCNTL_PRAGMA. (user: drh, tags: file-control-pragma)
16:43 [9b66c79e] Change the ROLLBACK command so that pending statements to not block it. The pending statements instead return SQLITE_ABORT upon next access. Note: This causes separate shared-cache connections in read_uncommitted mode to abort as well. (user: drh, tags: nonblocking-rollback)
13:44 [922bcbb4] Closed-Leaf: Generalize the interrupt mechanism so that individual statements can be interrupted and so that codes other than just SQLITE_INTERRUPT can be returned as a consequence of an interrupt. (user: drh, tags: generalize-interrupt)
17:35 [adb29232] For queries of the form "SELECT p, max(q) FROM t1", the value of column p returned is the one on the same row that holds the maximum value of q. (user: drh, tags: output-minmax-row)
21:33 [9e5add51] Closed-Leaf: Experimental changes to prevent buffer overreads when parsing a corrupt database file. (user: drh, tags: no-overread)
16:09 [e0d44450] Add support for statvfs() in os_unix.c, for determining the sector size. This causes many TCL test failures under Linux. (user: drh, tags: statvfs)
19:34 [91d0437c] Proposed changes that ensure that the WAL header is written prior to the first commit mark. (user: drh, tags: wal-header-sync)
13:24 [6492af76] Closed-Leaf: Experimental fix for [a1fa75cbdd]. (user: dan, tags: experimental)
17:53 [cdbfb553] Closed-Leaf: Add a file-control that will discover the name of the bottom-level VFS and all the shims in between. (user: drh, tags: vfsname-filectrl)
11:15 [255d2149] Change the way IO errors are handled in the xFileSize method of the multiplexor VFS. Add test file multiplex3.test. (user: dan, tags: experimental)
20:01 [c4e2ce48] Backport a minimal set of changes needed to get 8+3 filenames and the multiplexor shim playing well together. (user: drh, tags: nx-devkit)
16:21 [521d72bd] Make no assumptions about the initial state of VDBE registers. (user: drh, tags: uninit-vdbe-mem)
19:44 [79ae51c5] Begin adding the data-structure explaining subsystem. All is contained within (user: drh, tags: tree-explain)
18:44 [bd3ce723] Add stdio-like I/O interfaces to the test_quota VFS. This is a prototype change for discussion and is mostly untested. This is an alternative to adding stdio-like I/O interfaces in the core. There is no guarantee that this code will make it into the trunk. If it does get to trunk, there could be many changes to the interface first. (user: drh, tags: quota-stdio)
02:32 [8936542b] Closed-Leaf: Add a prototype implementation of stdio-like routines for accessing the VFS. This is intended as documentation. The code is untested. There is no guarantee that any of this will ever make it into trunk. Substantial revision is possible prior to reaching trunk, if it ever does. (user: drh, tags: vfs-stdio)
00:54 [7e657bbb] Closed-Leaf: Cleanup the semantics surrounding use of the GetLastError function on Windows. (user: mistachkin, tags: winGetLastError)
17:32 [06e0cdaf] Closed-Leaf: Change the multiplexor suffix from 2 to 3 digits. (user: drh, tags: 3-digit-multiplex-suffix)
02:53 [54cc1198] Fix a 8-byte alignment problem that causes a SIGBUS on Sparc. (user: drh, tags: branch-3.7.9)
01:55 [09be42d5] Begin making experimental changes to use mmap() for reading content from a database. The code compiles, but crashes on the test suite. (user: drh, tags: mmap-experimental)
22:08 [ed88fb00] Work in progress to implement the 'syscall' functionality for Windows. (user: mistachkin, tags: winSyscall)
20:08 [c275c9d3] Experimental change to the pcache interface to allow page buffers to be allocated separately from their associated container structures. (user: dan, tags: experimental-pcache)
15:06 [a499ae38] Closed-Leaf: Cherrypick the [5dbfaed8c3] patch so that SQLITE_OMIT_WAL works again. (user: drh, tags: omit-wal-fix)
15:45 [72256634] Closed-Leaf: If the read() system call in unix returns fewer bytes than expected, retry it until it either returns zero or an error. (user: drh, tags: retry-short-reads)
18:59 [aef7945c] Cherrypick the sqlite_data_count() changes from [d4f95b3b6e] and [9913996e7b] into the apple-osx branch for version 3.7.7. (user: drh, tags: apple-osx-377)
13:33 [876bd21a] Begin an effort to enhance the query planner to do a better job with OR terms in the WHERE clause. This change allows ANDs outside of the OR to be factored into the OR terms if that is helpful in finding better indices. (user: drh, tags: or-opt)
11:22 [1d27ea74] Add experimental 'content' option to FTS4. (user: dan, tags: fts4-content)
03:13 [646db971] Closed-Leaf: Merge the cache-stats enhancement into trunk. (user: drh, tags: mistake)
15:53 [89272357] Closed-Leaf: Add SQLITE_STMTSTATUS_CACHE_HIT/MISS and SQLITE_DB_STATUS_CACHE_HIT/MISS. For querying the number of pager cache hits and misses on a statement or connection basis. (user: dan, tags: cache-stats)
19:39 [62dfc51a] Adding test case for ticket [002caede898] (user: drh, tags: tkt-002caede898)
15:32 [bab2e560] Experimental code-generator changes to utilize new opcodes for sorting. (user: drh, tags: merge-sort)
18:48 [1a249845] Experimental changes to improve the performance of OP_Next. (user: dan, tags: experimental)
13:52 [0df04f92] Merge branches branch-3.7.2 and stat3-enhancement into a new branch for testing purposes. (user: drh, tags: stat3-3.7.2)
13:16 [63f2c785] Merge the stat3-enhancement branch with trunk, but keep the resulting merge in a separate branch for now. (user: drh, tags: stat3-trunk)
16:13 [bf3d0ab5] Experimental work to allow SQLite to use the native Win32 heap API. (user: mistachkin, tags: winNativeHeap)
18:15 [63597097] Experimental change: If SQLITE_PAGECACHE_BLOCKALLOC is defined, instead of allocating pages one at a time, allocate blocks of between 15 and 63 pages in a single allocation. (user: dan, tags: pager-blockalloc)
01:51 [52e1d7e8] Begin a branch that experimentally replaces sqlite_stat2 with a new table called sqlite_stat3 that will hopefully facilitate better query planning decisions. (user: drh, tags: stat3-enhancement)
21:13 [eb434228] Add a column to the sqlite_stat2 table that contains the number of entries with exactly the same key as the sample. We do not yet do anything with this extra value. Some tests in analyze2.test are failing. (user: drh, tags: query-planner-tweaks)
01:07 [c8ba8855] Adjust the output row estimating logic when using STAT2. (user: drh, tags: query-planner-tweaks)
00:57 [9007586f] Add retry logic for AV defense to winOpen. Also, refactor test suite to allow the key Tcl file operations (e.g. copy and delete) to be retried. (user: mistachkin, tags: winopen-retry-logic)
16:03 [e34c553b] Prototype change for a new sqlite3_file_control() that will cause the -wal and -shm files to persist after the last database connection closes. (user: drh, tags: persistent-wal-patch)
21:25 [a6b85c73] Closed-Leaf: Add retry logic for AV defense to winAccess(). Also allow OS tracing to be enabled by a compile-time option. (user: drh, tags: av-defense)
14:28 [30dbf0fe] Experimental support for speeding up CREATE INDEX commands using an offline merge sort. (user: dan, tags: experimental)
11:04 [89f1848d] Update the anti-virus retry logic for DeleteFile(). Invoke sqlite3_log() for each anti-virus retry. Make the retry delay configurable at compile-time. (user: drh, tags: av-defense)
15:52 [8daf6e1b] Closed-Leaf: Here is an attempted enhancement to the query planner that didn't work out. But it seems good to save this change for historical reference, even if it does not belong on the trunk. (user: drh, tags: query-planner-deadend)
20:17 [f7ba0219] Experimental changes to improve optimization of DISTINCT queries. (user: dan, tags: experimental)
23:32 [ec8f23fc] Create a branch that contains just the fix for the case_sensitive_like pragma bug, ticket [25ee81271091ec]. (user: drh, tags: branch-3.7.7)
17:09 [8230d831] Fix some of the code issues (missing comments etc.) in the new FTS code. (user: dan, tags: fts3-changes)
08:30 [7a381313] Add an interface to better test incremental loading of doclists by FTS4. Also some tests for this and term prefix queries. (user: dan, tags: broken-build)
11:26 [2e5a912a] Leaf: Toward version This check-in updates the version number and also patches the pager so that it never spills cache while in WAL mode. The latter patch fixes ticket [2d1a5c67dfc23] and also prevents excessive WAL file sizes if the pager cache starts thrashing. A few test cases fail. (user: drh, tags: branch-3.7.5)
18:49 [b5bdc639] If the fts4 option prefix=1 is specified, have the fts4 module maintain an index of prefixes as well as terms. (user: dan, tags: fts3-prefix-search)
17:11 [f88dfac3] Closed-Leaf: Rather than document goofy behavior, it seems better to make the behavior less goofy. (Was: Updates to the sqlite3_last_insert_rowid() documentation - to make it clear that the function does not work for virtual tables.) (user: drh, tags: mistake)
15:32 [97b98010] Pull in the patches to support read-only WAL databases into a new branch off of the apple-osx branch. This also pulls in all the other pending 3.7.7 changes such as URI support. (user: drh, tags: apple-wal-readonly)
17:31 [bb59f986] Add experimental support for read-only connections to WAL databases. (user: dan, tags: wal-readonly)
14:52 [489c453d] Closed-Leaf: Provide the ability to specify an alternative mutex subsystem at compile-time. - This check-in should have gone on the trunk, not on the 3.7.6 branch. (user: drh, tags: mistake)
19:44 [1586244b] Closed-Leaf: Changes to various test scripts so that they pass on windows. (user: dan, tags: win32-test-fixes)
18:49 [6d2633a6] Add support for on conflict clauses to fts3/fts4. (user: dan, tags: vtab-conflict)
19:37 [b8a8132e] Add the start of the "uri-filenames" feature. (user: dan, tags: uri)
17:14 [986f2f25] Change the prototype for the open() system call to agree with Posix. Though a faulty function prototype in a pointer cast is a seemingly innocuous error, the correct prototype is necessary for pthreads to work correctly on NetBSD. (user: drh, tags: branch-3.7.6)
13:29 [1cca9a49] Closed-Leaf: Add retry logic to GetFileAttributesEx() on windows. (user: drh, tags: experimental)
16:28 [6a8ad6e3] Begin a series of changes designed to reduce the scope and frequency of invalidating schemas. Design goals are that the internal schema should never be deleted out from under a prepared statement that is running and that all prepared statements should be expired if the schema is invalidated. At the same time, minimize the number of schema invalidations. This change merely revises the sqlite3ResetInternalSchema() function to use -1 as the wildcard for "all" rather than 0, so that we can reset the main schema independently of all the others. (user: drh, tags: schema-parse-refactor)
02:03 [c8f9edd9] Change the ANALYZE command so that it will accept an index name as its argument and only reanalyze that one index. A quick smoke-test works. Need to study the implications to the query planner and test corner cases. (user: drh, tags: analyze-idx)
15:00 [3b964155] Closed-Leaf: If the keyword "unordered" appears at the end of the SQLITE_STAT1.STAT column for an index, then use that index for equality lookups only, never for range queries or sorting. (user: drh, tags: unordered-index-hack)
15:05 [ea3a4ee1] Skeleton code for the word-fuzzer virtual table. (user: drh, tags: word-fuzzer)
04:45 [cfa4a2f7] Allow multiplex file names to be preceeded by prefix of the form ":multiplex:chunksize:maxchunks:" Still work to be done, though it compiles and prefixes are ignored. (user: shaneh, tags: multiplex-enhancements)
17:02 [00051c32] Add the new optional "unix-excl" VFS. This VFS grabs an exclusive lock on the database preventing other processes from accessing it, but continues to allow other database connections from the same process. (user: drh, tags: unix-excl)
15:09 [92b5a76a] Proof-of-concept prototype for the proposed xSetSystemCall extension method on the VFS. (user: drh, tags: syscall-override)
18:42 [6145d7b8] Add the experimental sqlite3_preupdate_hook() API. (user: dan, tags: sessions)
13:53 [e701efbd] Closed-Leaf: The robust_flock() fix that accidently included some unrelated, though harmless changes. I should follow my own checklist! (user: drh, tags: mistake)
03:11 [bcc22c4b] Backport the SQLITE_PROTOCOL fix and the extra defensive measure to version 3.7.4. (user: drh, tags: branch-3.7.4)
01:59 [e72cf118] This is the beginning of an attempt to backport recent query planner enhancements to version 3.7.2. The code in this version builds and runs and seems to give correct answers, but it generates suboptimal query plans and hence many of the test cases fail. The test script gives up after 1000 errors. (user: drh, tags: branch-3.7.2)
16:34 [b010ddcc] Add virtual table module "fts4aux", used to inspect the full-text index of an fts4 table directly. Also add the "compress" and "uncompress" fts4 options. (user: dan, tags: fts4aux)
17:02 [38ca1daa] Closed-Leaf: Bogus release candidate. (user: drh, tags: mistake)
16:00 [8063197e] Closed-Leaf: Ensure that if a deferred FK constraint is violated by a statement that creates its own implicit transaction, the statement is not an "active-write" after sqlite3_step() returns. (user: dan, tags: deferred-fk-quirk)
02:56 [2cd374cd] The first of a planned series of enhancements to the query planner that enable it to make better use of sqlite_stat2 histograms when the table has many repeated values. (user: drh, tags: stat2-enhancement)
21:32 [d094a1bf] Here is a completely new implementation of the mutex-free-pcache. This one uses a common code base and automatically selects whether or not to use mutexes depending on compile-time and start-time options. (user: drh, tags: mutex-free-pcache)
17:12 [c1e0d09c] Increment the change counter and update the SQLite version number whenever page 1 is added to the WAL. Ticket [5d863f876ee9561b9] (user: drh, tags: bug-5d863f87)
16:12 [2ea5bd12] Closed-Leaf: Provide an alternative and experimental pcache implementation that avoids the use of mutexes at the expense of using more memory. (user: drh, tags: mutex-free-pcache)
01:42 [d1b3c54f] Closed-Leaf: A proposed change to the sqlite3_step() API such that it will only auto-reset following an SQLITE_BUSY or SQLITE_LOCKED error. Calls after any other result other than SQLITE_ROW will return SQLITE_MISUSE. (user: drh, tags: step-autoreset)
13:07 [6549e767] Leaf: Cherrypick the WAL error logging from the pre-3.7.5 line into a branch for version 3.7.2. Include the sqlite3_vsnprintf() interface. This checkin is intended for debugging and not for release. (user: drh, tags: wal-trace-372)
12:50 [2c2afdd0] Add detailed error logging to WAL in an effort to track down an obscure SQLITE_PROTOCOL problem. This code is intended for debugging and not for release. (user: drh, tags: wal-trace-375)
15:51 [34613f1d] Closed-Leaf: Add additional DBSTATUS options for measuring the hit and miss rates against the lookaside memory pool - information useful in tuning the lookaside size. Currently experimental pending analysis of performance impact. (user: drh, tags: experimental)
19:16 [9cf0f2b7] Experimental changes to fts3 function matchinfo(). (user: dan, tags: fts3-experimental)
14:37 [4425b064] Add the SQLITE_FCNTL_FILE_POINTER verb to sqlite3_file_control(). (user: drh, tags: superlock)
18:56 [7e3fc2c8] Add experimental command "PRAGMA wal_blocking_checkpoint", which uses the busy-handler to block until all readers have finished in order to ensure the next writer will be able to wrap around to the start of the log file. (user: dan, tags: blocking-checkpoint)
00:47 [77b343cf] Experimental changes to test defaulting to fullfsync for WAL mode (user: adam, tags: apple-osx-exp)
19:01 [f4747eb8] Experimental changes to EXPLAIN QUERY PLAN. (user: dan, tags: experimental)
20:50 [dd4dc8a4] First attempt at a sharding VFS to split large DBs. (user: shaneh, tags: experimental)
20:46 [cc9d9a12] Updates for Windows. (user: shaneh, tags: experimental)
19:23 [7324c7f2] Add tail recursion to the sqlite3ExprDelete() routine in order to keep down stack space usage for really, really large expressions. Later: The tail recursion is dangerous since the recursion might happen after the expression has been freed. (user: drh, tags: mistake)
14:08 [5ae0ba44] Experimental changes to fts4 to try to selectively avoid loading very large doclists. (user: dan, tags: experimental)
15:11 [efda3104] Closed-Leaf: Not true: For a zeroblob, the Mem.z pointer can be null: The Mem.z pointer can never been NULL for a string or blob, even a zero-length string or blob. Assert this fact. (user: drh, tags: mistake)
00:50 [14eed3a0] Rework the text to numeric conversion routines so that they work with either UTF8 or UTF16 and do not require a NULL terminator. This allowed text to numeric conversion without reallocating the string. (user: drh, tags: experimental)
21:09 [8b8e1732] Add assert() statements that fail when a shallow copy is accessed after the original has been modified. These assert() statements should detect the kinds of subtle SCopy bugs such as caused the fault in ticket [b351d95f9cd5ef17e9d9dbae18f]. (user: drh, tags: bug-b351d95f9c)
09:32 [c1ebcacd] Add experimental branch disallowing VACUUM when there are one or more active SQL statements. (user: dan, tags: experimental)
11:40 [383eb87b] Add file test_quota.c, demonstrating how file-system quotas may be implemented as a VFS wrapper. (user: dan, tags: experimental)
23:13 [220cca50] Cherrypick the changes for enhancement requests [e090183531fc27474] (use indices on LIKE with no wildcards) and [4711020446da7d93d993] (use nocase index for LIKE even if the column is binary) into the release of the Apple-OSX branch. (user: drh, tags: apple-osx-3623)
11:59 [dec70c63] Backport the [65b8636ac6e5] fix for ticket [51ae9cad317a1] to version 3.7.0. (user: drh, tags: branch-3.7.0)
18:34 [7cf0e851] Add experimental unix-only file-control to grow and truncate the database file by a configurable chunk size. (user: dan, tags: experimental)
16:34 [ac1f37a6] Make sure all memory from sqlite3DbMalloc() is freed by sqlite3DbFree() and all memory from sqlite3_malloc() is freed by sqlite3_free(). (user: drh, tags: malloc-enhancement)
11:28 [9aa30342] Experimental code to measure memory consumed by database schemas and prepared statements. (user: dan, tags: experimental)
14:33 [52577bb5] Add proposed interface change to sqlite.h.in. This commit breaks the build. (user: dan, tags: experimental)
16:30 [8a5811ea] Closed-Leaf: Changes to get crashsql() working on Windows. (user: shaneh, tags: experimental)
17:05 [70833877] Fix some warnings when compiling under MSVC. (user: shaneh, tags: mistake)
19:04 [bede8c8a] Experimental change: On systems where it is not possible to unlink a file while one or more processes has it open (i.e. not unix), avoid closing the journal file each time the database is unlocked and reopening it at the start of each transaction. (user: dan, tags: experimental)
19:04 [ca68472d] Experimental change to the xShmXXX parts of the VFS interface. (user: dan, tags: experimental)
11:02 [7c102c7b] Closed-Leaf: Fix for race condition in WAL locking code. (user: dan, tags: mistake)
19:55 [ef3ba7a1] Initial code for incremental checkpoint in WAL mode. This check-in compiles on unix and runs as long as you do not engage WAL mode. WAL mode crashes and burns. Consider this check-in a baseline implementation for getting the new capability up and running. (user: drh, tags: wal-incr-ckpt)
12:37 [97d88a86] Closed-Leaf: Keep additional state information in the pager in an effort to reduce the number of SQLITE_FCNTL_SIZE_HINTs. (Note: This change was found to make no performance difference and so has been moved onto a side branch. Use the parent check-in instead of this one.) (user: drh, tags: branch-3.6.1-exp)
19:02 [ee13c884] (Moved to the mistake branch due to compile errors in test_osinst.c.) Change the vfs instrumentation code in test_osinst.c to make it easier to deploy. Add a vtab implementation for reading the binary log file format. (user: dan, tags: mistake)
18:01 [2b00152c] Refactoring the VFS-SHM methods used by WAL. This version compiles and runs non-WAL test cases but crashes and burns on wal.test. (user: drh, tags: wal-refactor)
02:49 [111ad59f] Initial port of WAL VFS support from os_unix.c to os_win.c. (user: shaneh, tags: wal-win32)
22:05 [c54e8dad] Changes for branch coverage of notify.c. Fixed quirk of unlock_notify() where it would still think it was blocked after a callback was cleared (even after the transaction on the blocking connection was closed). (user: shaneh, tags: experimental)
19:00 [409d61ba] Import experimental write-ahead-logging code. (user: dan, tags: wal)
15:57 [1b2a0412] Automatically generate transient indices for tables in joins that would otherwise have to use a full table scan. (user: drh, tags: experimental)
17:12 [b844ac6f] Experimental changes that cause SQLite to use bytes 28..31 of the database header to determine the database size, rather than using the actual database size. This allows database space to be preallocated. (user: drh, tags: experimental)
17:37 [ca0bc2a2] After any rollback that modifies the database file, sync the database before deleting the rollback journal. This is a cherry-pick merge of check-ins [b21b911f23] and [f2326dad4e] (user: drh, tags: branch-3.6.23)
22:36 [1a0fa8d1] Closed-Leaf: Second thoughts: Let Tiger users set SQLITE_ENABLE_LOCKING_STYLE=0. Was: Change SQLITE_ENABLE_LOCKING_STYLE to default off, even on Macs, since older Macs (Tiger) cannot compile the latest proxy locking sources. (user: drh, tags: mistake)
08:12 [587109c8] Silence a compiler warning by using a constant value instead of a constant expression that some compilers mistakenly believe causes bitshift overflow. (user: dan, tags: mistake)
22:05 [5c0afe70] fix merge error and compiler warning (user: adam, tags: apple-osx)
20:54 [62dfb44b] More double free paranoia (user: adam, tags: apple-osx)
01:47 [95882598] Start a new branch for release 3.6.22 plus limited enhancements and fixes. This first check-in includes the performance enhancements of check-ins [26cb1df735], [61a2c8d4d6], and [27dc5b1c52] (user: drh, tags: branch-3.6.22)
04:19 [84c97569] Test new api to report which options (defines) were used to compile SQLite. (user: shaneh, tags: compile_opts)
00:48 [e6cbe1e5] Added -T option, to specify a template filename on the command line.    The default is still "lempar.c", though. (user: icculus, tags: lemon-update-2010)
22:43 [f3676b24] Closed-Leaf: Added experimental mutex implementation using interlocked ops and spin locks. (user: shaneh, tags: experimental)
15:47 [784b718e] Create new branch named "wal" (user: dan, tags: wal)
21:23 [ea3b941a] Fix a missing mutex on page cache truncation during vacuum and auto-vacuum when SQLITE_ENABLE_MEMORY_MANAGEMENT is engaged. (user: drh, tags: branch-3.5.9)
19:46 [5ed168c4] Changes to 3.5.9 proposed by Rob Stoddard. (user: drh, tags: branch-3.5.9)
23:50 [a7a0c8d6] robustness fixes for preventing a finalized statement from being reused (user: adam, tags: apple-osx)
18:06 [9f819ea6] Apply fix [097737e368] to the 3.6.1 branch. (user: dan, tags: branch-3.6.1)
23:28 [86734732] Leaf: Fix for the "(x AND y) OR z" bug backported to version 3.6.21. (user: drh, tags: branch-3.6.21)
19:02 [7d308801] Closed-Leaf: Recomputed unchanged column values in an UPDATE statement after running BEFORE triggers, in case the triggers have modified any of those values. (user: drh, tags: experimental)
17:36 [30a92f11] Start reworking fts3 code to match the rest of SQLite (code conventions, malloc-failure handling etc.). (user: dan, tags: fts3-refactor)
03:22 [6bf43338] Add some very basic tests for the commands available from the CLI. (user: shaneh, tags: trunk)
02:34 [90e63b7d] Initial implementation of a virtual table for CSV files. (user: shaneh, tags: csv_ext)
21:49 [6f3081a8] Do not accept a codec no an in-memory database. (user: drh, tags: shunning-error)
18:51 [590d4ac1] Fix documentation typos. (user: drh, tags: shunning-error)
22:34 [941a01eb] Customizations for OSX contributed by Apple. (user: adam, tags: apple-osx)
18:38 [65a1f133] Fix a 16-bit integer overflow that might occur in statements that use both an EXISTS clause and IN operator with a RHS holding in excess of 32K entries. (user: drh, tags: branch_3_6_16)
18:35 [9bd6f3d8] Add the experimental sqlite3_reoptimize() API. (user: dan, tags: experimental)
19:43 [715cecb8] Leaf: Fix a VDBE stack overflow issue with the UPDATE statement. (user: drh, tags: branch-3.3.6)
16:12 [f06cae3b] Update the version number for the branch. (CVS 6651) (user: drh, tags: branch_3_6_14)
14:07 [15d88edf] Port the corruption bug fix of check-in (5938) into a branch off of version 3.6.6. (CVS 5947) (user: drh, tags: branch_3_6_6)
13:20 [f0029da3] Leaf: Back-port critical soft heap limit fixes to version 3.3.17. The following check-ins were back-ported: (4031), (4037), (4097), (4202), (4203), (4207), (4208), (4214). (CVS 4222) (user: drh, tags: branch_3_3_17)
21:31 [e91012b6] Leaf: Backport the stack-size reduction patch in (3673) to version 3.3.13. (CVS 3979) (user: drh, tags: branch_3_3_13)
16:29 [33397742] Backport the fix for ticket #1567 into the 3.2 branch. (CVS 2829) (user: drh, tags: branch_3_2)
23:37 [635f674d] Add some extra debugging logic to lemon.c. Ticket #692. (CVS 1304) (user: drh, tags: version_2)
14:16 [704b122e] initial empty check-in (user: drh, tags: trunk)