drh [Sat, 28 Jan 2017 20:46:37 +0000 (20:46 +0000)]
In the amalgamation, allocate the parser engine object from stack rather than
from heap, for improved performance. This only happens in the amalgamation,
since otherwise the sqlite3RunParser() routine does not know the object size.
drh [Fri, 27 Jan 2017 01:52:42 +0000 (01:52 +0000)]
In the command-line shell, enhance the ".mode" command so that it restores the
default column and row separators for modes "line", "list", "column", and
"tcl".
drh [Fri, 27 Jan 2017 00:31:59 +0000 (00:31 +0000)]
Simplify the accessPayload() routine so that it always populates the overflow
page cache. In the one case where populating the page cache can lead to
problems, simply invalidate the cache as soon as accessPayload() returns.
This simplification reduces code size and helps accessPayload() to run a
little faster. This backs out the eOp==2 mode of accessPayload() added by
check-in [da59198505].
drh [Thu, 26 Jan 2017 00:58:27 +0000 (00:58 +0000)]
Modify the ICU extension to use a static initializer, as VC++ complains about
a dynamic initialization. Maybe the dynamic structure initialization is a
GCC extension.
drh [Wed, 25 Jan 2017 20:55:11 +0000 (20:55 +0000)]
Trim NULL values off the end of records when the SQLITE_ENABLE_TRIM_NULLS
compile-time option is used. Increase the size of the P5 operand to 16 bits.
Fix a problem with short records in the sessions extension.
drh [Wed, 25 Jan 2017 14:58:27 +0000 (14:58 +0000)]
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.
drh [Mon, 23 Jan 2017 19:11:38 +0000 (19:11 +0000)]
Document the --mmap option in the --help screen for kvtest. Enhance kvtest so
that numeric arguments can have suffixes like "K" or "M". Add kvtest to the
unix makefiles.
drh [Sat, 21 Jan 2017 16:54:19 +0000 (16:54 +0000)]
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.
drh [Sat, 21 Jan 2017 15:55:41 +0000 (15:55 +0000)]
In the kvtest.c test utility, reuse the buffer into which blobs are read,
rather than reallocating it for each row. This is a closer match to how
other test programs work, and thus provides a better comparison.
drh [Thu, 19 Jan 2017 21:20:11 +0000 (21:20 +0000)]
If compiled with SQLITE_INLINE_MEMCPY, all memcpy() calls are replaced with
in-line code. With that change, cachegrind shows which memcpy() calls
are taking the most time. This is a performance-measurement hack only and
is not for production use.
dan [Tue, 17 Jan 2017 10:41:42 +0000 (10:41 +0000)]
Fix a problem that could cause a spurious SQLITE_NOMEM error when attempting
to resume an RBU operation if the previous client failed right after
completing the incremental checkpoint. Also a "cannot vacuum wal db" error
that could occur when resuming an RBU vacuum if an error (OOM or IO error)
occurs during the incremental checkpoint.
drh [Tue, 17 Jan 2017 00:10:58 +0000 (00:10 +0000)]
Disable intrinsic functions for Windows using Clang, due to reports of
linkage errors. This causes a 0.6% performance reduction. We will want to
revisit this change in the future.
drh [Mon, 16 Jan 2017 18:10:17 +0000 (18:10 +0000)]
Back out check-in [0b3174e0b1364c] and replace it with a better fix for \ticket [91e2e8ba6ff2e2] - a fix that does not cause the problem identified by
ticket [7ffd1ca1d2ad4ec]. Add new test cases for both tickets.
drh [Mon, 16 Jan 2017 16:43:02 +0000 (16:43 +0000)]
Back out check-in [0b3174e0b1364c] and replace it with a better fix
for ticket [91e2e8ba6ff2e2] - a fix that does not cause the problem
identified by ticket [7ffd1ca1d2ad4ec].
dan [Fri, 13 Jan 2017 18:24:37 +0000 (18:24 +0000)]
Fix a problem preventing resumption of RBU operations after recovering from a
process or system failure that occurs during the incremental-checkpoint phase.
drh [Mon, 9 Jan 2017 15:44:25 +0000 (15:44 +0000)]
Modify the OP_RowData opcode so that when P3!=0 it is allowed to hold an
ephemeral copy of the content. This avoids unnecessary memcpy() operations
in the xfer-optimization and VACUUM.
drh [Sat, 7 Jan 2017 14:47:03 +0000 (14:47 +0000)]
Improvements to the iIdxNoSeek optimization of sqlite3GenerateRowDelete()
so that it is automatically disabled for BEFORE triggers but works in all
other cases.
drh [Sat, 7 Jan 2017 14:26:28 +0000 (14:26 +0000)]
Critical fix to the previous check-in so that it works when there are
BEFORE triggers that move the cursor before the OP_Delete has a chance to
be applied.
dan [Fri, 6 Jan 2017 13:49:40 +0000 (13:49 +0000)]
Ensure that "PRAGMA case_sensitive_like" and "PRAGMA shrink_memory" set the
number of output columns to 0 (as they are statements that return no data).
dan [Thu, 5 Jan 2017 20:00:08 +0000 (20:00 +0000)]
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).
dan [Thu, 5 Jan 2017 19:32:48 +0000 (19:32 +0000)]
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).
dan [Thu, 5 Jan 2017 17:23:11 +0000 (17:23 +0000)]
Fix handling the case where a sub-query in a FROM clause is itself a UNION
ALL, and one side of that UNION ALL is a query on a view that includes an
ORDER BY. Fix for ticket [190c2507].