1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-25 09:59:22 +03:00
Commit Graph

9415 Commits

Author SHA1 Message Date
dan
54a85187b2 Fix a buffer overread that might occur in analyze.c if SQLITE_ENABLE_STAT4 was defined.
FossilOrigin-Name: 194c90db637ad4197a54be83a665feb2a9c96014
2014-12-05 20:43:48 +00:00
drh
8a03a98ceb The KeyInfo cache must be cleared before closing the btree, not after.
Revised fix for ticket [e4a18565a36884b00edf].

FossilOrigin-Name: 48529508cfe2f9445a6940222fe5ff7cc92aef78
2014-12-05 15:25:49 +00:00
drh
0faf7231be When closing a (shared-cache) database connection, be sure to clear out
all KeyInfo objects cached on Index objects. 
Fix for ticket [e4a18565a36884b00edf].

FossilOrigin-Name: b7905b8c5fe266f43c99a44c6b9aa4b56b2ba4d1
2014-12-05 14:51:22 +00:00
drh
a4c4064d28 If a table is the right operand of a LEFT JOIN, then any column of that
table can be NULL even if that column has a NOT NULL constraint.
Fix for ticket [6f2222d550f5b0ee7ed].

FossilOrigin-Name: 5a80957b04d68cc7e0325873a409d83c1f11b52f
2014-12-04 16:29:21 +00:00
drh
4429c20b86 Add an ALWAYS() to an always-true conditional in the WAL rollback logic.
FossilOrigin-Name: c5eae8a60d474131fbfa4d0c2b459005267e8be4
2014-11-18 02:44:32 +00:00
drh
c5352b996a Remove code from sqlite3BtreeKeySize() made unreachable by the previous
check-in.

FossilOrigin-Name: 57c4aa988c8eda3cc513c1e5df5804d88bee99a0
2014-11-17 20:33:07 +00:00
dan
756d3b3e9d Avoid calling sqlite3BtreeKeysize() on a b-tree cursor in SKIPNEXT or SKIPPREV state.
FossilOrigin-Name: 2f2ecb994889acb783616acb7307f8fed962d213
2014-11-17 19:44:44 +00:00
drh
d816e00d13 Improved comments on the BtCursor.skipNext field. No changes to code.
FossilOrigin-Name: e956e7db057d1112badf5e0671cea95201385b44
2014-11-17 19:25:15 +00:00
drh
77b1deec40 When a SELECT statement is terminated by a ROLLBACK TO operation, make the
error message be "abort due to ROLLBACK" rather than 
"callback requested query abort".

FossilOrigin-Name: 34fc4a082c192830e48f643549c04a4f91912b8b
2014-11-17 17:13:06 +00:00
drh
13835c41e8 Fix a bug in the sqlite3TripAllCursors() routine that prevents it from
reporting errors.  It is unknown at this time whether or not this omission can
result in any incorrect result in an actual query.

FossilOrigin-Name: 42588207ff5451cb785c394633e1ab631fb82f01
2014-11-17 15:32:47 +00:00
drh
0a9d9d566e Do not automatically remove the DISTINCT keyword from "a IN (SELECT DISTINCT ...)" expressions. Fix for [db87229497].
FossilOrigin-Name: 98457a57d642b35917eb9ad8f70065e273aad206
2014-11-14 15:42:23 +00:00
drh
6f9c5669e2 When a transaction or savepoint rollback occurs, save the positions of all open read-cursors so that they can be restored following the rollback operation. Cherry-pick of check-in [dd03a2802f3f27]
FossilOrigin-Name: 402780a9c8df9e7ea898bdca49c1191042fe387a
2014-11-13 13:42:39 +00:00
drh
5a2c8c885c Fix the %c format character in sqlite3VXPrintf() so that it correctly handles precisions larger than 70.
FossilOrigin-Name: 839a6df9f98b90fb593534a62145d9c913540bae
2014-11-12 14:12:28 +00:00
drh
51a205410c Make sure that NULL results from OP_Column are fully and completely NULL and do not have the MEM_Ephem bit set. Fix for ticket [094d39a4c95ee4].
FossilOrigin-Name: e1017745e183f5d7429ce787ec2feef946a24f0f
2014-11-12 14:07:28 +00:00
drh
85fabf1444 This is a cherry-pick of version [b5df5ac052].
FossilOrigin-Name: d4b2d5d066891e06f2bf4337902b44b000fa9fd2
2014-11-11 22:55:26 +00:00
drh
a26b9a7727 Fix problems with running UPDATE and DELETE against a VIEW and referencing
the rowid in the WHERE clause.  This is a cherrypick of [95f8ebdbf87326f2]
and [8523670d50004f3].

FossilOrigin-Name: cc33e846c8509419f0a1fbfb286807b4c137788d
2014-10-29 01:26:25 +00:00
drh
bba8206be9 Disable the use of strchrnul() unless specifically enabled by compile-time
options.  Cherrypick of check-in [e580470db77d6da9]

FossilOrigin-Name: 837368adfe859c41b347d3124d5b3fdf790eec03
2014-10-29 01:18:03 +00:00
drh
739383d25d In the OP_Column opcode, when extracting a field that is past the end of
a short record (because the row was originally inserted prior to ALTER TABLE
ADD COLUMN) then make sure the output register is fully NULL and does not
contain leftover flags (such as MEM_Ephem) from its previous use.
Fix for ticket [43107840f1c02].  This is a cherrypick of
check-in [24780f8ddc1683fc].

FossilOrigin-Name: 304ea6ba6f4cf40a76d32d37af73a253f493ba47
2014-10-29 01:13:58 +00:00
drh
62ecc28caf 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].

FossilOrigin-Name: a8f9bd1e890434fcffa02fcd2baf8b0fb5d4c9dd
2014-10-29 01:07:21 +00:00
mistachkin
7bdc9749d5 Work around MSVC not being able to deduce that a local variable was initialized in a called function.
FossilOrigin-Name: 06c576c152c4013080c255cbbeb45bf2e298be9f
2014-10-16 21:39:17 +00:00
mistachkin
92c2e0da8f Changes to work around Win32 and MSVCRT APIs that are not present on Windows CE 200x.
FossilOrigin-Name: 1418c006e377d7915a50577d4ccb21125b750bae
2014-10-16 18:34:50 +00:00
drh
92787cf042 Add a four-byte prefix to the BtShared.pTmpSpace buffer to avoid reading
before the beginning of an allocation.

FossilOrigin-Name: 9386bfca128023583a24303e5f1d832987a49d43
2014-10-15 11:55:51 +00:00
dan
74439167cb Rearrange an expression in vdbemem.c to avoid a (harmless) reference to a possibly unitialized variable.
FossilOrigin-Name: 4a7b3fa049a9aa0668e318287edd4a78c0588bf8
2014-10-15 11:31:35 +00:00
drh
5604cc0d3b Make sure new sqlite3_vtab objects created by the xCreate() virtual table
method are initialized by the system, in accordance with the documentation.

FossilOrigin-Name: eab82330631187dcc3e5d2dddd23dbda5752904b
2014-10-14 20:25:43 +00:00
drh
8dd8362d64 Optimize a database corruption test inside of the OP_Column opcode.
FossilOrigin-Name: 005e5b388a8a97bca6d1f0e06c40d68d92aa1212
2014-10-13 23:39:02 +00:00
drh
facf47a891 Use the padding word in the Mem object as temporary storage for
serial_type value in OP_Record, and thus avoid a redundant computation of
the serial_type for each column.

FossilOrigin-Name: 4b3b65ee5ea61e9b9671ca027940bf02689cb890
2014-10-13 20:12:47 +00:00
drh
f526dcad29 Three small optimizations to vdbeaux.c.
FossilOrigin-Name: 04892f8ba6c55cec4fe37bfe59b6349fd2a40698
2014-10-13 17:42:05 +00:00
drh
c22284f4b3 Reduce the CPU load imposed by sqlit3VdbeCursorMoveto() by factoring out
some of its functions and by avoiding unnecessary calls.

FossilOrigin-Name: c2799aece17d347c64217a0e407bb10e50c184a3
2014-10-13 16:02:20 +00:00
drh
6cf4a7dfa6 Remove the OPFLAG_CLEARCACHE flag from OP_Column. In its place, change the
P3 parameter of OP_SorterData to be the index of the pseudo-table cursor whose
record header cache is to be cleared.  This gives a small size reduction
and performance increase.

FossilOrigin-Name: 20062f49428a2349a2dd705af570c60b499a3eef
2014-10-13 13:00:58 +00:00
drh
b53a5a9e50 Remove the VdbeCursor.lastRowid cache of the current rowid, since maintaining
the correct cache value uses more CPU cycles than just recomputing the rowid
on the occasions when it is actually needed.  Replace it with the
VdbeCursor.aOffset field which used to be computed from VdbeCursor.aType
when needed. Saves 100 bytes of code space and runs 0.2% faster.

FossilOrigin-Name: 91384a7d727ef0f285cd430e829ba9f3852db50e
2014-10-12 22:37:22 +00:00
drh
c81aa2e120 Performance optimization and very slight size reduction for OP_Column.
FossilOrigin-Name: 869c30e45cc87063be423c650f16b99e8adb3df0
2014-10-11 23:31:52 +00:00
drh
d6176c4131 Simplification to the insertCell() routine in btree.c, resulting in a
performance boost and a very small size decrease.  It turns out that the
extra work involved in sometimes avoiding an memcpy() of the first four bytes
of a record takes more time than just unconditionally copying those
four bytes.

FossilOrigin-Name: 66de15580d3c289601e67debfe1edee286f4db5f
2014-10-11 17:22:55 +00:00
drh
4929047d1a Make sure that a GROUP BY that also implements an ORDER BY scans the table
in the correct order.  Fix for ticket [ba7cbfaedc7e6].

FossilOrigin-Name: 7a32fdfd4be2138c0ab00f3dc6f54a70e4e07be4
2014-10-11 02:12:58 +00:00
drh
c631faa922 Remove an unnecessary conditional from the EXPLAIN QUERY PLAN logic.
FossilOrigin-Name: c5dc83ebded914f07286b7f98d0a50c28c16f609
2014-10-11 01:22:16 +00:00
dan
b6453201d2 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].
FossilOrigin-Name: 2a9573962b837973c4959465d8a5f2641d109a5a
2014-10-10 20:52:53 +00:00
drh
1f8817cb32 Restrict the scope of the explainIndexRange() function in where.c.
FossilOrigin-Name: c30124520027f0f860223bf842e2f09db3dafb5f
2014-10-10 19:15:35 +00:00
dan
5bd8af7c6b Fix a failing test case in index5.test. Also tweak the way cache memory is divided between read-only and dirty pages when using SQLITE_CONFIG_PAGECACHE to reduce IO in some cases.
FossilOrigin-Name: 8541dfb3bbdf63dc9ab304d8a0ab8b290cdc9d96
2014-10-10 19:10:59 +00:00
drh
ab993380a2 Changes to enable compiling using VC6.
FossilOrigin-Name: 9ee5686ab3b0bca8cabdf455c75bd9410cdc5378
2014-10-10 18:09:52 +00:00
drh
98545bb2ed Add the estimated number of output rows to the EXPLAIN QUERY PLAN output
if compiled with SQLITE_EXPLAIN_ESTIMATED_ROWS.  This feature is off by
default for the time being.

FossilOrigin-Name: daa8314fba9dc3c4f5e7fbda42c97604fbfc4392
2014-10-10 17:20:39 +00:00
drh
6c97789d2e Simplify the code used to generate the text for EXPLAIN QUERY PLAN.
FossilOrigin-Name: beea1efc3a49cad08087fcbb18dbce71c873fe57
2014-10-10 15:47:46 +00:00
drh
681fca0018 Fix a potential problem in the whereRangeScanEst() routine when STAT4 is
active.  The problem was introduced by recent enhancements.

FossilOrigin-Name: 68e1b4de700b5291f79249a03e1a750c6b2c9ae4
2014-10-10 15:01:46 +00:00
drh
bf59bf94b2 Cause the command-line shell to return non-zero if the final SQL statement
is incomplete.

FossilOrigin-Name: 177fff3b98b101b98f1e7d334b6a80530b645565
2014-10-10 13:08:33 +00:00
drh
8e0a8f681a Remove an always-true branch in whereRangeScanEst(). Replace it with an
assert().

FossilOrigin-Name: 42e48fd3a6a6219d9bd6135d821b38c5157922ba
2014-10-08 19:33:54 +00:00
drh
3705ef6a73 Fix up test cases to account for the new SQLITE_LIMIT_WORKER_THREADS limit.
FossilOrigin-Name: 6483d426c4c5c772cd49412ea37e0fa7a0378904
2014-10-08 15:53:21 +00:00
drh
f6aff80525 Set the connection-specific lastRowid value before calling any SQL function.
FossilOrigin-Name: dff0f6422e60a7e2e4efb658aab202a119cfa702
2014-10-08 14:28:31 +00:00
drh
6a15440378 Ensure that the Pager.pTmpSpace allocation is correct even if an OOM error
occurs while reducing the page size.

FossilOrigin-Name: e4b43967fd9a0b4944be9ab5575bff3678be8ed5
2014-10-08 13:34:21 +00:00
drh
69afd9980e Fix the STAT4 range scan estimates for DESC indexes.
FossilOrigin-Name: e3fe84005259ef9a6027d25793514cebb2d4e7e0
2014-10-08 02:53:25 +00:00
drh
9a7b41d74a More intuitive labels on ".wheretrace" output.
FossilOrigin-Name: adcb3fed489b580221c7bf2692a60e24248b23a0
2014-10-08 00:08:08 +00:00
drh
722246e801 Make sure the sqlite3VdbeMemClearAndResize() routine is never called with a
zero size parameter, since a size of zero could lead to either a memory leak
or an assertion fault.

FossilOrigin-Name: f672a380e2e52bede95ff11a533fd9f7d412d494
2014-10-07 23:02:24 +00:00
drh
3b335fce5c Restrict the scope of the valueToText() routine.
FossilOrigin-Name: 13c962b33df411a0d9ead0bb1969596faa286f79
2014-10-07 16:59:22 +00:00