drh
dcc2700d7e
The page size becomes fixed as soon as page1 from a non-empty database file
...
is read.
FossilOrigin-Name: 6064584d578f0ac7aba3f67912a5d9eb1a3c6001469f6b9becbe68871131f887
2019-01-06 02:06:31 +00:00
dan
97c8cb3ed8
Ensure that when a new cursor is opened by OP_OpenDup, any existing cursor
...
with the same id opened by a previous OP_OpenDup is closed first.
FossilOrigin-Name: 5c188361a91407805c0feb4bf6d3214522ce3e55013efcf63a4613ecd416bcbc
2019-01-01 18:00:17 +00:00
drh
ae10474125
Fix possible integer overflow while running PRAGMA integrity_check on a
...
database file with a badly corrupted freelist.
FossilOrigin-Name: 395599116d801324f0763e59bc5e2fc8622aa5b7572e0c1c9a982efbb3cc8280
2018-12-14 17:57:01 +00:00
drh
d7a5e49840
Back out the expansion of the temporary buffer size from
...
[32754ca6f86da816] and replace it with an explicit test for buffer
overreads.
FossilOrigin-Name: 8ba3d9f38090c4bbbcffba1930e5c26f69ff61f49b72a4a5a59253d37341380f
2018-12-14 16:20:54 +00:00
drh
e7acce66b2
Avoid a buffer overread in ptrmapPutOvflPtr() that can occurs in a
...
corrupt database file that has large entries and uses autovacuum.
FossilOrigin-Name: f8b781cf41800e9f61a1c5376404a97e76a2bbbcaa17396d42be62f731363947
2018-12-14 16:00:38 +00:00
dan
fffaf23013
When saving the position of a cursor at the b-tree layer, allocate a few extra
...
bytes at the end of the buffer used to save the key. Otherwise, if the key is
corrupt, the code that restores the cursor position may overread the buffer by a
little.
FossilOrigin-Name: 160b1e31c0f27257c06c2987af9ec3a64abfacb2150325b72e8ccd3d217b5baa
2018-12-14 13:18:35 +00:00
drh
203b1ea0f5
Detect when an attempt is made to write to a pointer map page that is also
...
being used as a btree page and report corruption.
FossilOrigin-Name: 3036fd71ac7063359b04a0ed54a6c63a380eb7ff75cd29ed27486d4259066aee
2018-12-14 03:14:18 +00:00
drh
6301c43f23
dbfuzz2 found a NEVER() that is sometimes true.
...
FossilOrigin-Name: 1201615cbbd3070158ea5fab3d2c8c95f41b25d6da096a44cb9257a7b7405efc
2018-12-13 21:52:18 +00:00
drh
8061ad8abd
Add extra tests for database corruption inside the defragmentPage() routine,
...
as dbfuzz2 has found ways for corruption to leak into that point. Add test
cases in fuzzdata7.db.
FossilOrigin-Name: 997b65117f8c12dba5fb85434fde9765cdb0d2a49cc3e31979abba3e21350086
2018-12-13 21:11:22 +00:00
drh
1641f11f4c
Fix a problem in sqlite3BtreeDelete() in which deleting an entry from a
...
corrupt database can leave a btree page with zero cells.
FossilOrigin-Name: 682053d1e603c21b8085c39db618a39b23ec8d2c4d822fd19634db0e03038ea2
2018-12-13 21:05:45 +00:00
drh
5881dfea2c
New database corruption test cases discovered by dbfuzz2. The new cases
...
have been added to test/fuzzdata7.db, but have not yet all been fixed,
so tests will not currently pass.
FossilOrigin-Name: b4210d320c6426d2838d4cc08709fdfd015c1c95fcad9a5f9e8fd390c23b9fad
2018-12-13 03:36:13 +00:00
drh
d5b44d60c7
When masking bits off of sqlite3.flags, make sure the mask is 64 bits
...
in size so as not to accidentally mask of high-order bits.
FossilOrigin-Name: 53d3b169d8e1892163526caff2c843302c92e280fdeff6831e23a9bb15b82be3
2018-12-06 17:06:02 +00:00
dan
09236755ee
Fix a problem reading from temp databases in SQLITE_DIRECT_OVERFLOW_READ
...
builds.
FossilOrigin-Name: 81629ba91475938b6ad528e7b1dbef4ad22239782bb2e9c1bb59413aba11da87
2018-11-22 19:10:14 +00:00
drh
0f1c2eb5f2
Correct the internal logic for SQLITE_DBCONFIG_DEFENSIVE.
...
FossilOrigin-Name: 76094345821246c887a31a234b339d03a78eddbb9fab33b06c3c20797c038349
2018-11-03 17:31:48 +00:00
drh
a296cda016
Add the SQLITE_DBCONFIG_DEFENSIVE flag.
...
FossilOrigin-Name: af3f29d49359af2291b1d9e06e0db76fd000fbd24b4ac84d2668a0d1322efd83
2018-11-03 16:09:59 +00:00
drh
49272bc728
Improved corrupt database detection in the relocatePage() routine of
...
the b-tree module.
FossilOrigin-Name: d57873337a2a7a0d717dc7726cd2682b5bea594d2d1ff8f16c2485161fcd6b16
2018-10-31 01:04:18 +00:00
drh
040d77aa71
New checked in PRAGMA integrity_check to validate the autovacuum settings
...
in the header.
FossilOrigin-Name: a4663f09c91d1381a831f61a2b8e8a113eb6083932c4aea2ad0c011ece1418c5
2018-07-20 15:44:09 +00:00
drh
91d5866eb6
Enhanced detection of problems on the freelist and on overflow list in
...
PRAGMA integrity_check.
FossilOrigin-Name: 11e58f5b37d99848978007d834d187c262d904eb9d58924742e028d7cb324e64
2018-07-20 13:39:28 +00:00
dan
ea933f07b0
Experimental fix for resetting databases that have been deemed read-only due
...
to a corrupt "read-version" header field.
FossilOrigin-Name: e2394002d02754bb45d56e805df9bc5a2ef0d14e5d94262c1f8ab7643bc27c8f
2018-07-19 11:44:02 +00:00
drh
f710345303
Add an ALWAYS() around a branch in sqlite3BtreeSkipNext() that we believe
...
must always be true.
FossilOrigin-Name: 12be361a532df0c22a7e4d97658b82a69b1a205d4cca8d092b9e6b7790c1ee40
2018-07-09 20:41:39 +00:00
dan
8bf6d705f3
In wal mode, if a "BEGIN EXCLUSIVE" command (or any other command that
...
upgrades from no transaction directly to a write transaction) hits an
SQLITE_BUSY_SNAPSHOT error, change the error code to SQLITE_BUSY to indicate
to the caller that the condition may be transient.
FossilOrigin-Name: e6108047cb136119d8ed19af010a669ed9750b4e7f991ccabc9e3d15774eda31
2018-07-05 17:16:55 +00:00
dan
b775104357
Fix a typo inside an assert() statement introduced by the previous commit.
...
FossilOrigin-Name: e3357728472d5e57db6d7eef0ce008bdee071b5b07b60e242f383440eebe85bd
2018-07-05 17:03:43 +00:00
dan
b07db116e7
In wal mode, if a "BEGIN EXCLUSIVE" command (or any other command that
...
upgrades from no transaction directly to a write transaction) hits an
SQLITE_BUSY_SNAPSHOT error, change the error code to SQLITE_BUSY to indicate
to the caller that the condition may be transient.
FossilOrigin-Name: 221ff63e7902226ebf728bb7442727420636831163708f360724506ce9487ab6
2018-07-05 15:46:55 +00:00
dan
67a9b8eded
Omit all window-function related code when building with SQLITE_OMIT_WINDOWFUNC.
...
FossilOrigin-Name: 5f04b016467342b5a796bf702ed25b621eb86f2961c1e703d276c93f2cb6aa89
2018-06-22 20:51:35 +00:00
dan
c0bb4459d3
Fix another issue to do with window-functions in aggregate queries.
...
FossilOrigin-Name: 6413e38a174044c28fa9b8b937e6c972d144547a246e6f2882e782538300d042
2018-06-12 20:53:38 +00:00
dan
96f55d0fa5
Merge recent trunk changes with this branch.
...
FossilOrigin-Name: c71f23590c25b4cecd27722e6c0fc8e3bf320d399c7d9398b7016dd5cf5b05eb
2018-06-09 18:09:44 +00:00
drh
f3cd0c82df
Fix an assert() that can be false for a corrupt database and a strange query
...
that uses a recursive SQL function to delete content from a corrupt database
file while it is being queried.
FossilOrigin-Name: 99057383acc8f92093530e216c621d40386a06fe98131ff0af6df524d80a6410
2018-06-08 19:13:57 +00:00
dan
07509f8c1e
Merge latest trunk changes with this branch.
...
FossilOrigin-Name: 251022034219819a1dc356542770ff46e3147a080f072eb20af6106771dadd92
2018-06-07 20:35:28 +00:00
drh
bb2d9b1bf1
Change sqlite3BtreeBeginTrans() to return the BTREE_SCHEMA_COOKIE, for a
...
small speed improvement when starting new transactions.
FossilOrigin-Name: a10662aa915ae2b5a78b3e10920350d32255b2d6b1a8aac0aba1ad173b07ed2b
2018-06-06 16:28:40 +00:00
dan
2b1287cf44
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: 83d6416a868fac81a78c9507185a48d00920e4322276245e285946f760915f4a
2018-06-04 08:28:18 +00:00
drh
5ba5f5b5d2
Work around a sanitizer warning about a pointer being only 4-byte aligned
...
instead of 8-byte aligned.
FossilOrigin-Name: 1b807b51cdf455b4f54216b73fd22bbc90f94e24222401e045f88cfd27f487e3
2018-06-02 16:32:04 +00:00
dan
c3a20c19a8
Add support for "ROWS BETWEEN <expr> PRECEDING AND <expr> FOLLOWING" window
...
frames.
FossilOrigin-Name: 3a203660f1e4da3b8d2d605c494f4843f6e00752f28042b49e11d7d6550dd406
2018-05-23 20:55:37 +00:00
drh
0cdbe1aee0
Make the internal dynamic string interface available to extensions using
...
the new sqlite3_str object and its associated methods. This is mostly just
a renaming of internal objects and methods to use external names, through
there are a few small wrapper functions.
FossilOrigin-Name: 87f261f0cb800b06ad786f6df16f2c4dddd0d93dfdcc77b4a4eaa22920b56bf1
2018-05-09 13:46:26 +00:00
drh
89ee229810
Activate the cell-overwrite optimization for index b-trees.
...
FossilOrigin-Name: a68697d10ef17d452c8279181186faad7bc54e3a35858a336552f717449065ea
2018-05-07 18:41:19 +00:00
drh
d720d394d0
Improved comments on the cell-overwrite optimization code.
...
FossilOrigin-Name: a4fe966da2fc479b18bf521ff596000410af3a611f7d8723d126795e595ccf22
2018-05-07 17:27:04 +00:00
drh
e3c05a5597
On an UPDATE, try to overwrite an existing btree cell with the modified
...
content, if the old and new cell are the same size. Use memcmp() first
to avoid dirtying pages that are unchanged.
FossilOrigin-Name: 5887d8beb502ad62689d31b850f46ab50831a1e9db36adf20d55ad45619d207e
2018-05-07 11:48:22 +00:00
drh
30f7a25325
Fix harmless compiler warnings in the cell-overwrite logic.
...
FossilOrigin-Name: 3e11dc3183bc3e8ec49af244a8e8b3e07d12f7a2e59028b2bf64ce0ab589a91f
2018-05-07 11:29:59 +00:00
drh
6fcf83a503
Fix a slightly incorrect corruption detection branch in the btree logic.
...
FossilOrigin-Name: 9191ff670cb7f36e0b2dac4a22888679b639845687aef8edcc3c05e35ba71eda
2018-05-05 01:23:28 +00:00
drh
d5aa9262a6
Fix various error handling conditions on the cell overwrite optimization.
...
Fix a test case so that it works with the new optimization.
FossilOrigin-Name: f89b54f41405ed7e28132f66b8a0c690a087c2412c8f55790c2beabb0b521645
2018-05-03 16:56:06 +00:00
drh
da65fc6e32
The BtCursor.info fields are only valid if info.nSize!=0.
...
FossilOrigin-Name: 54c537eead5b08104cfaf0d5b1e2706e53d6f74be2ca02e06229024fd889fc94
2018-05-03 14:07:18 +00:00
drh
4f84e9c7e2
Add more corruption checking to the cell overwrite logic.
...
FossilOrigin-Name: 58d14afe1e1288d114ea213458b3121e0a95670887861928858b7f143c76f789
2018-05-03 13:56:23 +00:00
drh
9b03192e15
Bug fixes in the overwrite optimization.
...
FossilOrigin-Name: 0cb6cd2a6a596afaa1cca6c5f5abc2ea75d04f254c7debaf36ecd6a90b66aed6
2018-05-03 12:57:48 +00:00
drh
3de5d16cf7
The sqlite3BtreeInsert() routine tries to overwrite an existing cell with
...
modified content if the new content is the same size. Pages are only dirtied
if they change. This prototype works some, but still has issues.
FossilOrigin-Name: 489451b378819621537231c1c8a07704437e11c1f5384fd53b09f3977d2213a4
2018-05-03 03:59:02 +00:00
drh
0314cf3aa5
Add the "PRAGMA reset_database=ON|OFF" command. When on, it causes the
...
database to appear to be empty, causing the next transaction to reset it to
an empty database.
FossilOrigin-Name: 02e1a13c1f04bb72599b98f51240c78d0d050de264fef5808fd97db3f4c16dac
2018-04-28 01:27:09 +00:00
drh
fd72563d0a
Avoid a race condition that might cause a busy_timeout to last longer than
...
it should.
FossilOrigin-Name: b81960561b47a1b49646f2f8870dd0684dc4ca7c0b9e11076fd713de66b75972
2018-03-26 20:43:05 +00:00
drh
f0119b2e1b
Add infrastructure to support for using F_SETLKW with a timeout on system
...
that support that functionality. Requires SQLITE_ENABLE_SETLK_TIMEOUT.
FossilOrigin-Name: 2e54a7433ece4eb27e71bda6f2d121d5aa46ddd5a481357d8543d1432aaad689
2018-03-26 17:40:53 +00:00
drh
80262896d6
Refactor some internal object element names used by the busy handler, to
...
simplify analysis.
FossilOrigin-Name: 6c40c5574f4ae9795a142d01a8f84afd1b72678ea5f6bfca14a8646c4e862605
2018-03-26 16:37:53 +00:00
drh
a224ee2a1b
Fix an assert so that it compares two CellInfo objects field by field
...
instead of using memcmp(). Memcmp() does not work on x86
because of uninitialized padding bytes.
FossilOrigin-Name: 88258770adead70fa101c74e266a37bb9aaffac0ba738a4b345617feb8c46477
2018-02-19 13:53:56 +00:00
mistachkin
97f9059eee
Fix harmless compiler warning seen with MSVC.
...
FossilOrigin-Name: 63a914410b5750bd08836864ae456ff09549487c5ce49706fedffa3d4f973059
2018-02-04 01:30:54 +00:00
drh
da6bc6792f
Rearrange fields of the BtCursor object so that it is smaller and requires less
...
initialization, for a small performance improvement.
FossilOrigin-Name: 0ddf5292cc0411ec6fcb7399ecf2904c899e0488404d3f65490fbe1db15efdf4
2018-01-24 16:04:21 +00:00