dan [Mon, 26 May 2014 20:06:45 +0000 (20:06 +0000)]
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.
dan [Mon, 26 May 2014 18:27:12 +0000 (18:27 +0000)]
Fix a problem in the shell when importing CSV files. If the leftmost field of the first row in the CSV file was both zero bytes in size and unquoted, no data was imported.
dan [Mon, 26 May 2014 16:40:02 +0000 (16:40 +0000)]
Fix a problem in FTS4 where columns with names that are prefixes of any notindexed column were also being (incorrectly) marked as not indexed. For example in "CREATE ... t1(abc, bc, abcd, notindexed=abcd)", both abc and abcd were being treated as notindexed.
drh [Fri, 23 May 2014 12:03:47 +0000 (12:03 +0000)]
In the command-line shell, if three or more interrupt signals (control-c)
are received in a row without a response from sqlite3_interrupt() then
call exit(1) immediately. This allows control-C to interrupt the shell
even if it is stuck in a computation or loop that does not involve the
VDBE.
drh [Fri, 23 May 2014 11:48:57 +0000 (11:48 +0000)]
Make sure sufficient VDBE registers are allocated for an INSERT...SELECT
when there is an idlist on the insert table that includes an explicit
rowid. Ticket [9654505cfda93610585fde5a9bbf2e730c8a8d5]
drh [Wed, 21 May 2014 08:21:07 +0000 (08:21 +0000)]
Fix the sqlite3_db_readonly() API so that it reports true if the database
is readonly because the file format write version (byte 18 of the header)
is too large.
dan [Fri, 16 May 2014 16:16:59 +0000 (16:16 +0000)]
Fixes to prevent an FTS index from growing indefinitely as the corresponding table is updated. Change the FTS 'automerge' option to allow the user to specify the number of segments that should be merged simultaneously by auto-merges.
drh [Fri, 16 May 2014 14:17:01 +0000 (14:17 +0000)]
Repurpose the SQLITE_TESTCTRL_FAULT_INSTALL test-control to register a
callback to be invoked by sqlite3FaultSim(). That test-control has been
unused since 2008-06-20 and was never used in any official release.
dan [Fri, 16 May 2014 10:30:44 +0000 (10:30 +0000)]
Fix a bug causing an incorrect segment size value to be stored if both an old and new FTS version performed work on the same incremental merge operation.
dan [Wed, 14 May 2014 15:58:47 +0000 (15:58 +0000)]
Fix various problems to do with segment promotion. Add test file fts4growth2.test, containing tests to check that the FTS index does not grow indefinitely as the table is updated.
mistachkin [Fri, 9 May 2014 20:51:17 +0000 (20:51 +0000)]
When cross-compiling with the MSVC makefile, make sure the correct library path is used. Also, keep track of the required compilation options separately.
drh [Wed, 7 May 2014 18:21:56 +0000 (18:21 +0000)]
Ensure that the sqlite3StrAccumAppend() routine is never called with a NULL
second argument. Doing so is harmless when N==0, but it causes an assert()
to fail that was placed to quiet static analyzers.
drh [Wed, 7 May 2014 15:46:04 +0000 (15:46 +0000)]
Add the SQLITE_IOCAP_IMMUTABLE bit as a possible return value from
the xDeviceCharacteristics method in the VFS. Add the "nolock" and
"immutable" query parameters to URI filenames.
drh [Mon, 5 May 2014 20:32:15 +0000 (20:32 +0000)]
Create new header file "os_setup.h" used to detect the operating system
at compile-time, and "os_win.h" that contains windows-specific header in
formation.
dan [Thu, 1 May 2014 20:26:48 +0000 (20:26 +0000)]
Fix an obscure problem to do with temp register allocation that could occur if more than one simple SELECT within a compound SELECT uses a partial sort.
dan [Thu, 1 May 2014 10:19:16 +0000 (10:19 +0000)]
Update a test case in wal2.test that explicitly corrupts a checksum in the wal file to account for the fact that the first byte of said checksum may initially be 0xFF.
drh [Thu, 1 May 2014 01:49:22 +0000 (01:49 +0000)]
Take out the special handling of nolock=true in os_win.c and add it to
pager.c, so that it works for all VFSes. Add the pPager->noLock boolean
for clarity.
drh [Thu, 1 May 2014 01:13:08 +0000 (01:13 +0000)]
Add the immutable=TRUE query parameter and SQLITE_IOCAP_IMMUTABLE, either
of which prevents locking of the database and omits tests for existance
of journal files.
dan [Wed, 30 Apr 2014 15:22:25 +0000 (15:22 +0000)]
Modify the way the costs of various query plans are estimated. If the user supplies a likelihood() value (or equivalent) on an indexed WHERE constraint, use it to estimate the number of index rows visited.
dan [Wed, 30 Apr 2014 14:53:21 +0000 (14:53 +0000)]
Update a couple of test cases to account for the fact that this branch prefers an index scan and partial sort over a full-table scan and full external sort.
dan [Mon, 28 Apr 2014 20:11:20 +0000 (20:11 +0000)]
Do not reduce the number of rows scanned at all for "IS NOT NULL" constraints. Fix a bug in calculating the number of rows visited by scans of partial indicies.
dan [Mon, 28 Apr 2014 19:34:06 +0000 (19:34 +0000)]
The trunk assumes that an open range constraint on an indexed term (col>?) term matches 1/4 of the indexed rows, and that a closed constraint (col BETWEEN ? AND ?) matches 1/64. Change this branch to do the same.
dan [Mon, 28 Apr 2014 15:11:25 +0000 (15:11 +0000)]
Update unordered.test to take into account for the fact that SQLite now prefers a full-table scan over a non-covering index scan that visits a large percentage of the table rows.
dan [Mon, 28 Apr 2014 10:00:59 +0000 (10:00 +0000)]
Update test script analyze3.test to account for the fact that SQLite now prefers a full-table scan over a non-covering index scan that visits a large percentage of the table rows.
dan [Mon, 28 Apr 2014 09:35:31 +0000 (09:35 +0000)]
Modify internal function whereLoopAdjustCost() so that it does not prefer a skip-scan over a regular index scan even if the regular scan uses a subset of the WHERE terms used by the skip-scan.
Allow the xfer optimization to proceed if the DEFAULT on the very first
column of the two tables is different. This is a refinement of the
fix for ticket [f67b41381a].
dan [Fri, 25 Apr 2014 20:22:45 +0000 (20:22 +0000)]
If the user provides likelihood() data for a WHERE clause term used as part of an index key, have the planner use it when calculating the expected number of rows visited by the loop.
Add test cases to ensure correct operation of joins with a virtual table
that include DISTINCT and ORDER BY clauses. Verification for ticket
[388d01d4bb8f9].
Make sure ORDER BY clauses on joins that involve virtual tables and that
have a DISTINCT clause work correctly. This is a candidate fix for
ticket [388d01d4bb8f9]. Test cases for that ticket will be checked in
separately.