drh
dd2d9a3d5a
Strive to prevent harmless compiler warnings in GCC 4.8.5.
...
FossilOrigin-Name: 8b6691f619ed9a56f6aecbd878ebb447c40984f8767508b248494fd9ec68fbaa
2019-05-07 17:47:43 +00:00
drh
e12ca5abf6
Earlier detection of a database corruption case in balance_nonroot(), to
...
prevent a possible use of an uninitialized variable.
FossilOrigin-Name: c509d8a8aebe0da4847e95cf737c21313a665de9a540da2db57b8ed22f98a402
2019-05-02 15:56:39 +00:00
dan
a9a5465eb4
Fix an assert() that may be false for corrupt databases.
...
FossilOrigin-Name: b2ce5ed175cb5029ac07392ae371c86eeec23c74624aad007dee51cf359f3eeb
2019-04-22 11:47:40 +00:00
drh
25050f2620
Use an unsigned integer to count free pages in btree.c:freePage2().
...
FossilOrigin-Name: 8820408597341344b308277ce6ef41b47c7514d6c613520789b05ee52cbedae8
2019-04-09 01:26:31 +00:00
mistachkin
4e2d3d40dc
Fix harmless compiler warnings seen with MSVC.
...
FossilOrigin-Name: 6cf8b18ec20f11c25ff7396f29c742404d3a88d5e97a5fd53ccfaff51dec3f33
2019-04-01 03:07:21 +00:00
drh
b336d1ab83
Add a call to sqlite3FaultSim(410) inside of btreeRestoreCursorPosition()
...
to simplify testing of error scenarios.
FossilOrigin-Name: bb643bac535ac7d5fb4c13edb8782cd13540bbc7d2b2deb689f4ca8d1914f422
2019-03-30 19:17:35 +00:00
drh
119e1ffc5e
The defragmentPage() routine detects corruption in the first-free-slot fields
...
at offset 1 in the header and throws an error, rather than asserting.
FossilOrigin-Name: fb125bd338ab32b33d02fe61b76497b6d4a2a160056d6e759e15c94903e61a41
2019-03-30 18:39:13 +00:00
drh
038ebf6875
Remove the unused P5 flag from the OP_Rewind opcode.
...
FossilOrigin-Name: c2edbf3b8c643edcd5823eb907fd7531cf5be8a8b6a014fa1b123eb0ea3231cf
2019-03-29 15:21:22 +00:00
dan
b60c3b01cc
Add support for new window functions related features - GROUPS frames, RANGE frames with logical start and end points, the EXCLUDE clause and window chaining.
...
FossilOrigin-Name: c6da39115d3e2b0fd3a03c4bcae8ee8b05a6bbd6b11f8c54712fbff6387f610d
2019-03-26 13:08:34 +00:00
drh
58b42ad131
Earlier detection of corruption while added to the freelist.
...
FossilOrigin-Name: 8c80b004cae71aaf820a31dba80c100ed162ef5bae845fb4535ff4d3be407500
2019-03-25 19:50:19 +00:00
drh
1c960269dd
Fix a faulty assert() statement in balance_nonroot() - the assert() should use
...
get2byteNotZero() instead of get2byte() for the corner case where the
number cells is zero on a 65536-byte page.
FossilOrigin-Name: bcbe7d96df3c9515f679ccf671ca9ba89d081b53501495d4218eb5126196838b
2019-03-25 18:44:08 +00:00
dan
dcc427cf19
Add an extra test for database corruption to defragmentPage().
...
FossilOrigin-Name: 80e951fce3e5aaa224c8dba6449832d2efabcdc24e86eb6b7833f85cf08ecc00
2019-03-21 21:18:36 +00:00
mistachkin
065f3bf4f2
Fix various harmless compiler warnings seen with MSVC.
...
FossilOrigin-Name: 1c0fe5b5763fe5cbace9773dcdab742e126d0bd035ab13d61f9d134afa0afc0c
2019-03-20 05:45:03 +00:00
drh
f012dc4eb9
When computing the amount of scratch memory needed during a rebalance operation,
...
assume the worst case for the number of cells per page, rather than relying
on the BtPage.nCell value, which might be incorrect for a corrupt database.
FossilOrigin-Name: a420ebd08f5a96b9e61a37cb42e1b3f346c23505630d9c33fe30ce7882959b36
2019-03-19 15:36:46 +00:00
dan
db7d895e9d
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: 0b904517bd6c4c59082381577246d3d2351b4265fc9151438ee4c33cf16f2eb1
2019-03-13 17:31:20 +00:00
dan
b560a7194d
Remove rows from the ephemeral table used by window functions once they are no longer required.
...
FossilOrigin-Name: 6ad553192051eaa0c6d929baacde2de07b93c6d09de861028bbce55a2c9bfdd3
2019-03-13 15:29:14 +00:00
drh
2a934d75d9
Detect zero-length free slots on btree pages and report that as corruption.
...
FossilOrigin-Name: c4f0568fde1d4070e7522ec36c0958be7426076002a7fa2da12a46411ab2e92d
2019-03-13 10:29:16 +00:00
drh
4b986b2a47
Patch makes balance_nonroot() slightly smaller and faster and more robust
...
against corrupt databases.
FossilOrigin-Name: 174da3c32c9caebd642c31cb594597ccd5bb2a7fc501b1f49aef0b7b4765bfca
2019-03-08 14:02:11 +00:00
drh
9a518843f5
Detect an attempt to drop a btree that is not within the bounds of the
...
database file and abort early with an SQLITE_CORRUPT error, to avoid
problems later on in the process.
FossilOrigin-Name: 235a9698f5e9b3c21dc51c9c5042becfb82fc1762a7519a46b9f9fdafe9b0f13
2019-03-08 01:52:30 +00:00
drh
0a31dc201e
If the initial byte of a record is a large value, then always used the
...
generalized record comparison routine sqlite3VdbeRecordCompare() rather than
one of the specialized versions that are optimized for shorter records.
FossilOrigin-Name: c1ac00706bae45fe9735061ada025880606cdfb8ecfdaa36b4e2d04275820861
2019-03-05 14:39:00 +00:00
drh
45616c7f75
Add an "|| CORRUPT_DB" term to an assert() statement in the btree defragmenter.
...
FossilOrigin-Name: 6bfd8655f006e031c0d4c988356c4b9206efa6bfdb034fde8ffa3361521a4844
2019-02-28 13:21:36 +00:00
drh
eaac9996ed
Use unsigned integers to count the number of pages in a freelist during
...
an integrity_check, to avoid any possibility of a signed integer overflow.
FossilOrigin-Name: 05b87e0755638d31f6d8918f8758362f8c3981661449b5171180a8498f66bd9d
2019-02-26 16:17:06 +00:00
drh
12fe9a0d25
Fix an assert() that might not be true if the database file is corrupt.
...
FossilOrigin-Name: f2d400db4dbfb05e2540178ed3662f97f8c57a95f8129886c7081c35e53adf0d
2019-02-19 16:42:54 +00:00
drh
56785a0a80
Fix an assert() that might be false for a corrupt database.
...
FossilOrigin-Name: 0cfb888723fb8ff0763bbc23acb7d21a53f6d1c40661d8468248644281b29d85
2019-02-16 22:45:55 +00:00
drh
9c7e44cddd
Improved oversized cell detection when updating ptrmap pages in
...
balance_nonroot().
FossilOrigin-Name: aa61435a4c3800f023788081c1342ad6a05a41449a424fa6c039d5ca46072256
2019-02-14 15:27:12 +00:00
drh
5860a61d59
Further performance improvements to btreeInitPage().
...
FossilOrigin-Name: 93ae382e97c23c90312739481e47ef7f9bc475a8382c063a2de2986c950c0aec
2019-02-12 16:58:26 +00:00
drh
a941ff712d
Change an assert() into a NEVER(), since the condition is difficult to prove
...
with certainty. Improved comment on the MemPage.nFree field.
FossilOrigin-Name: fec071b89df2cbafda365077bb54bc9999e12086f36d6cea8d125662b36638dc
2019-02-12 00:58:10 +00:00
drh
8357c662b3
Do not invoke btreeComputeFreeSpace() when not necessary.
...
FossilOrigin-Name: f11b0ed47402034378ded2c60b82841b81cd1319cdb72d1ef052faef29a5294d
2019-02-11 22:50:01 +00:00
drh
d4a6744b50
Improvements to comments. No changes to code.
...
FossilOrigin-Name: 16eb0fc8f8cce51eaa5305ebc9f3bd8c8d935dd3ebebab6820e5629f9292eec2
2019-02-11 19:27:36 +00:00
drh
6813350966
Fix test cases. Avoid unnecessary tests for MemPage.nFree less than zero.
...
FossilOrigin-Name: 480a5090befdc29eaeb6f0b22831c980d6ee92438d9b2e766de68b037ded38b8
2019-02-11 17:22:30 +00:00
drh
c01f41cfa6
Updates to a comment to keep it in alignment to the changes on this branch.
...
FossilOrigin-Name: 7499f74351415e601eb48eff6b6fccd3a78d137f5ea9cd7cac46b904772966de
2019-02-11 12:51:39 +00:00
drh
85a379b74b
Fix a page-cache reference leak in the btree balancer when there is a corrupt
...
database.
FossilOrigin-Name: 9285899120dec24ff2944431ad455d7ae217ef408ae2f1a3e7bdfb897099028c
2019-02-09 22:33:44 +00:00
drh
b0ea9432a1
Defer computing the MemPage.nFree value of an in-memory btree page
...
until it is actually needed, since for many pages it is never needed.
This checkin works sufficiently to prove the concept, but still has issues
with exception handling.
FossilOrigin-Name: 1d43ee4000b71f5c6d49244dee96358c567f09ba3451b9d22895a796d3f61ad6
2019-02-09 21:06:40 +00:00
drh
298f45c641
Small performance improvement and size reduction for pageFindSlot() - the
...
routine in btree.c that locates a free slot for a cell on a btree page.
FossilOrigin-Name: 1969372ac72d25cc642a0268f4bb0ae4b59f2dca568c119ef61b67183b3a8bd9
2019-02-08 22:34:59 +00:00
drh
53d30dd371
Early detection of implausibly sized records to avoid unnecessary
...
large memory allocations.
FossilOrigin-Name: 2c8769c69f301307db6663adb8b7c0b89f5959516bf6110cb8ff4b21bd903f70
2019-02-04 21:10:24 +00:00
drh
26b7ec8b24
Improve the strict enforcement of cell sizes in balancing from
...
check-in [12713f320b2c1def] so that it also works with table-btrees
in addition to index-btrees.
FossilOrigin-Name: ef27e7a08728aa7447ae19812803ac5c4a9d80c97541014bd292485792005a3e
2019-02-01 14:50:43 +00:00
drh
3f4f6823ac
Fix harmless compiler warnings.
...
FossilOrigin-Name: 9a93c68a7673bda2e6c308d3b2798d0fb12fde399996cae24b1f0d5864adf355
2019-01-29 16:54:31 +00:00
drh
a046643820
More robust handling of corrupt database file in the rebalance operation of
...
the btree logic.
FossilOrigin-Name: 97704cb7d29fa7cc4ea9a6761a7844c1946d637ea2b22d287fc787ae0f63c407
2019-01-29 16:41:13 +00:00
drh
0c873bf28a
Change the definition of the BtCursor.skipNext field so that it is undefined
...
for states CURSOR_VALID and CURSOR_INVALID.
FossilOrigin-Name: 6089d5dba73437d787259033e94a38cf1b0c87cac4a89c27e69d8239c22f496e
2019-01-28 00:42:06 +00:00
drh
e6a9efb976
Ensure that the btree cursor is correctly set up prior to backing it up
...
as part of a delete operation on a divider cell in an index.
FossilOrigin-Name: a3ea1a822d3a110f4f186f2fc8550f435c8c98635d058096b7be9d4df7066b8b
2019-01-26 23:34:50 +00:00
dan
ba14c69b4f
Fix a couple of assert() statments in btree.c that could fail with corrupt databases.
...
FossilOrigin-Name: 5eb5e8289fa71e5e29e081d33d4a59c64b463bf6b06d7070c05c46d77d808ad4
2019-01-25 13:42:12 +00:00
dan
b0c4c94996
Fix a potential problem with "INSERT INTO ... SELECT * FROM" (or VACUUM) statements on a corrupted database.
...
FossilOrigin-Name: db4b4c2c1e9f1adacfb1b2fedb717a4d8bb0a299c3b11835404a99fcd67bf24b
2019-01-24 15:16:17 +00:00
drh
55469bbafb
Use memmove() instead of memcpy() in a place where buffers might overlap
...
if the database file is badly corrupted, to prevent warnings
from ASAN and valgrind.
FossilOrigin-Name: 65ad6c55f1ba9bc2f75afffa3adaf19f145fad7ac9a00ccce6372e9a2cc4341b
2019-01-24 13:36:47 +00:00
drh
e3dadac591
Stricter enforcement of cell sizes when doing balancing operations on the
...
btree, in order to catch file corruption sooner.
FossilOrigin-Name: 12713f320b2c1def273dd8b7833dddaaad5331aba779d4b1ec9aa949814f38fe
2019-01-23 19:25:59 +00:00
drh
87c3ad4537
Enhance the btree search routine so that it does early detection of
...
impossibly large keys and thereby avoids a large malloc() call.
FossilOrigin-Name: 3ecaaee69f49e43d38047b7d53b82689eba7f7d33541fcac3c32b6dc8a568458
2019-01-21 23:18:22 +00:00
drh
e6c628e98c
Make sure the extra bytes allocated for the saved cursor position by
...
check-in [160b1e31c0f27257] are initialized to zero.
FossilOrigin-Name: 2737564929e86ead84a3ff6512369268198d38b46e3e02866f8ce34babc76cb9
2019-01-21 16:01:17 +00:00
drh
d12db3dabb
Avoid reading off the front of a page buffer when balancing a corrupt
...
btree page.
FossilOrigin-Name: cb50509020d952fa9efed8df7fa08b07b71ae9bdbdefea216b6e660863291039
2019-01-14 05:48:10 +00:00
drh
0f1bf4c1ac
Improved detection of database corruption while balancing pages from an
...
auto_vacuum database with overflow pages. Test cases in TH3.
FossilOrigin-Name: 35f04235c477501390acea126d07a730d81d03cdf7abcd82d861e397b3f75b0f
2019-01-13 20:17:21 +00:00
dan
e6370e9c29
Fix a problem handling a negative value in the "number-of-pages" database
...
header field. Also a problem with running "REINDEX tbl" against a virtual
table for which the SQL passed to sqlite3_declare_vtab() contains PRIMARY KEY
or UNIQUE constraints.
FossilOrigin-Name: 556dd8922f65af93084ee725c638b8dc696b611dd508c212a3b507d6ca474031
2019-01-11 17:41:23 +00:00
drh
f10ce63651
Fix PRAGMA integrity_check so that it does not cancel the PRAGMA vdbe_debug
...
setting.
FossilOrigin-Name: aaa3a19f8cf5ba7003634e4610abc7832354af91d7c7f65469218678f66bcd46
2019-01-11 14:46:44 +00:00