1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-15 11:41:13 +03:00
Commit Graph

763 Commits

Author SHA1 Message Date
drh
c5e47ac238 Fix two instances where a malformed header in a database file (in other words
a corrupt database file) can lead to an assertion fault. (CVS 6712)

FossilOrigin-Name: 4e92c7f20afa51849128aa1d784ab885b517a73d
2009-06-04 00:11:56 +00:00
drh
69e931e7bb Change the pcache1.c implementation so that the "header" occurs at the end
of page buffer, not at the beginning.  This insures that the 20 bytes
immediately following the page buffer are mapped if a read of the page
buffer overruns due to a malformed cell. (CVS 6711)

FossilOrigin-Name: c54de1f54080de7e134d7b562498abb5337a0a46
2009-06-03 21:04:35 +00:00
danielk1977
93c829c110 Add corruptD.test, a container for testing the "cell overflow" problem. Also shuffle a small amount of code in BtreeInitPage() to check that the page header pointer to the start of the cell offset array is set to a sane value. (CVS 6710)
FossilOrigin-Name: 7fa5d3cb0fa05f7d901bcc139c2c037ce5944caa
2009-06-03 17:26:17 +00:00
danielk1977
0d19f7ac57 Define a set of constants to use as the "index" argument to sqlite3BtreeGetMeta and UpdateMeta. This makes some parts of the code easier to follow. (CVS 6709)
FossilOrigin-Name: 6dbf4eca00f845baa7200aba421d0bc158ba96aa
2009-06-03 11:25:07 +00:00
danielk1977
4b0aa4cf3e Workaround the need for internal API sqlite3BtreeCursorDb(). It was only being used for an assert() statement, which can be done differently. (CVS 6683)
FossilOrigin-Name: 5904af6e6df3effdaaa30e7cf96ee316fc09b28d
2009-05-28 11:05:57 +00:00
shane
60a4b53823 Changes to silence compiler warnings under MSVC. (CVS 6613)
FossilOrigin-Name: df599237e1ca8b4f361477a712cf761aa1fac3df
2009-05-06 18:57:09 +00:00
danielk1977
11c327aabe Avoid parsing cells that fit entirely on the b-tree page when searching a b-tree index. (CVS 6601)
FossilOrigin-Name: 77a8239548722f702ead9d7c60df0d68180948fb
2009-05-04 19:01:26 +00:00
danielk1977
de630353d8 Speed up INSERT operations that add data to UNIQUE or PRIMARY KEY indexes by rationalizing duplicate seek operations. (CVS 6599)
FossilOrigin-Name: cac4f3d812f0a02ca5c1fa78d366f694403929a8
2009-05-04 11:42:29 +00:00
danielk1977
3f632d5bd2 When a cursor points at the last entry of an intkey btree after an insert, leave it there (instead of moving it to the tree root node). This speeds up statements of the form "INSERT INTO ... SELECT ..." that use auto-generated rowids. (CVS 6592)
FossilOrigin-Name: 9950c0a79c82eb7d8495b0b1a8fe117d566e2387
2009-05-02 10:03:09 +00:00
danielk1977
9c3acf3cfe Do not reset the cursor before seeking it in sqlite3BtreeInsert(). This speeds up INSERT operations that use auto-generated rowid values. (CVS 6591)
FossilOrigin-Name: 20c4acc291def33980f584f882c76e85ee1c8238
2009-05-02 07:36:49 +00:00
drh
b56cd55b9a Update PRAGMA integrity_check so that it treats SQLITE_IOERR_NOMEM errors
from underlying components the same as SQLITE_NOMEM errors. (CVS 6587)

FossilOrigin-Name: 26444f2a4426d2e51464ef69ed83d3c78be2c11f
2009-05-01 13:16:54 +00:00
drh
c47fd8e031 Disallow attaching the same database multiple times to the same db connection
in shared cache mode, since doing so leads to deadlock. (CVS 6578)

FossilOrigin-Name: 715f14f1dcaf604d4794bf3e18e245d4f8c5d5a9
2009-04-30 13:30:32 +00:00
danielk1977
d829335e42 When SQLite is configured to use in-memory temp files (either by setting SQLITE_TEMP_STORE during compilation or using the temp_store pragma at run time), store statement/savepoint journals in memory also. Ticket #3825. (CVS 6575)
FossilOrigin-Name: 38f8c5a14cd221af9e115a0fea689f2ff39e30e5
2009-04-30 09:10:37 +00:00
drh
c0b61810ed Remove always-true tests from attach.c. In btree.c, always test the return
from sqlite3PagerSetPagesize() since it might return SQLITE_NOMEM. (CVS 6572)

FossilOrigin-Name: 8bf60b24ffcf6ac15f41eaa7f976b810e0c66734
2009-04-30 01:22:41 +00:00
danielk1977
fad9194453 Modify the assemblePage() function in btree.c so that it runs slightly faster. (CVS 6569)
FossilOrigin-Name: 7ec42e989f1d4abdc6d52f8feebf51985f36b2bd
2009-04-29 17:49:59 +00:00
danielk1977
ae5558b2ae Add a version of cellSizePtr() that is faster than using sqlite3BtreeParseCellPtr(). This speeds up balance_nonroot(). (CVS 6566)
FossilOrigin-Name: e8f7f7b787fe941093edaea44db4d361fad1e002
2009-04-29 11:31:47 +00:00
danielk1977
7b801388f5 Simplify a conditional expression in btree.c. (CVS 6565)
FossilOrigin-Name: fc3a5ac2353142082fe14d47f9c2b662407ea3f7
2009-04-29 06:27:56 +00:00
drh
51898cf727 Update comments and remove unused code in btree.c. No functional changes. (CVS 6521)
FossilOrigin-Name: bd860184909b7a9cc32c59770ebcee0efdc491f0
2009-04-19 20:51:06 +00:00
danielk1977
e589a67f6c Fix a case where a corrupt database could cause an assert() to fail. (CVS 6496)
FossilOrigin-Name: 2c560e057e1da8a603efc36deea036f2392a4ab9
2009-04-11 16:06:15 +00:00
danielk1977
2a50ff0309 Always set BtShared.db when entering the BtShared mutex. Ticket #3793. (CVS 6480)
FossilOrigin-Name: ed6620ba589ddbb6ca86f42a7652e3b019195647
2009-04-10 09:47:06 +00:00
drh
8c5d152b53 Force 8-byte alignment of sqlite3_value objects in the
sqlite3VdbeUnpackRecord() primitive.  Ticket #3777. (CVS 6479)

FossilOrigin-Name: 2cc68272b1f70701268075cfa82fa64bb2a8179d
2009-04-10 00:56:28 +00:00
danielk1977
5d189858e9 Fix an incorrect assert in btree.c. (CVS 6465)
FossilOrigin-Name: 2c1f59834ab7a16066ee12cb8a8342d438c23ce9
2009-04-07 14:38:58 +00:00
danielk1977
ef165cedeb Test cases and minor code changes to increase coverage of btree.c. (CVS 6456)
FossilOrigin-Name: def3a016914f683818b5f013ec4efecbb8fd4c0d
2009-04-06 17:50:03 +00:00
drh
ea598cbd8d Additional code to make sure and to assert that memory allocations have
8-byte alignment.  Ticket #3777. (CVS 6450)

FossilOrigin-Name: 208382e032134d9c78fe1cfcb98ce9defb4e3e26
2009-04-05 12:22:08 +00:00
drh
ce4869f893 Make sure the VACUUM statement locks down the page_size and auto_vacuum
modes after it runs.  Otherwise, pragmas might change these settings on
a populated database, resulting in problems. (CVS 6442)

FossilOrigin-Name: 85e6a4740d6db731c8c35a331031c346e9189c27
2009-04-02 20:16:58 +00:00
danielk1977
fa542f1fc8 Fix a problem causing the BtShared.isPending flag to be cleared to early. Also coverage improvements for btree.c. (CVS 6440)
FossilOrigin-Name: 8f1423445b29a5f52ed907de6db82128a96ebfe2
2009-04-02 18:28:08 +00:00
danielk1977
295dc10573 Remove an unreachable branch from lockBtree(). Add comments. (CVS 6428)
FossilOrigin-Name: 859792958b4d4a3623d68526ff773f778bdf3f0d
2009-04-01 19:07:03 +00:00
danielk1977
20c6cc2b1b Remove the unused SQLITE_Vtab flag. (CVS 6425)
FossilOrigin-Name: fdd78962fcb988edfb4147394045fc5d3944c620
2009-04-01 18:03:00 +00:00
danielk1977
d217e6f16d In pageReinit() in btree.c, only reinitialize a page if there are one or more references to it, not including the transient reference held by pager.c. This was always the intent. (CVS 6424)
FossilOrigin-Name: 0c5a7d1117cfb322d1c89da89e8887b0bb091602
2009-04-01 17:13:51 +00:00
danielk1977
6011a75c0c Remove an unreachable branch from allocateSpace() in btree.c. Add comments and asserts to the same function. (CVS 6422)
FossilOrigin-Name: f8e15a542df67fd9dc1c91c7d9e1c4df59acb82b
2009-04-01 16:25:32 +00:00
danielk1977
5b413d785f Add some assert() statements to querySharedCacheTableLock(). (CVS 6421)
FossilOrigin-Name: 3e3b5e861aeff2e4ef568c422236fdf7fa22bed3
2009-04-01 09:41:54 +00:00
danielk1977
f4027782b0 Fix a case where a pointer map page was not being journalled before a file truncation that occurs as part of an incremental vacuum. (CVS 6413)
FossilOrigin-Name: c5890935a0247090162feda73cfea85012317050
2009-03-30 18:50:04 +00:00
drh
5e8d8878fe Add a comment to the pageReinit() routine explaining why the return code from
sqlite3BtreeInitPage() is ignored.  Comment change only - no changes to code. (CVS 6412)

FossilOrigin-Name: 10f605be8c92ff94625a0da0e23b2ffd55ec7509
2009-03-30 17:19:48 +00:00
danielk1977
5be31f519b Modify integrity-check to prevent a buffer overread when dealing with a corrupted database. (CVS 6411)
FossilOrigin-Name: 3c9097f19adae071a12e1114f64993d0c1da1163
2009-03-30 13:53:43 +00:00
danielk1977
ac86169fff The fix in (6395) was not correct. Fix #3756 a different way. (CVS 6397)
FossilOrigin-Name: 9278f7b1e1f2d0d4c2f8829ca801a769e512c2a6
2009-03-28 10:54:22 +00:00
danielk1977
357864ecb6 Fix a problem preventing sqlite3_extended_errcode() from working correctly. (CVS 6385)
FossilOrigin-Name: de469c46f55bf772ab8a49a185dc1b87360a937f
2009-03-25 15:43:08 +00:00
shane
ca18d20fd6 Fix compiler warning in MSVC. (CVS 6371)
FossilOrigin-Name: 83a4d5b3d7abe983c2be00a694cc7d4c4847f253
2009-03-23 02:34:32 +00:00
drh
7555d8ec40 Rename the unused MEM2 static mutex to OPEN and reuse it to serialize access
to the sqlite3BtreeOpen() routine to prevent a race condition on detection
of sharable caches.  Ticket #3735. (CVS 6363)

FossilOrigin-Name: 19fa5a29b97f017a9e176e48c848100299ba6920
2009-03-20 13:15:30 +00:00
danielk1977
bd43455c38 Fix some cases where executing SQL from within a user-function callback could cause problems related to statement-transactions. (CVS 6355)
FossilOrigin-Name: a60f4191791dd7bb49d5c95b350a9924845b59a8
2009-03-18 10:33:00 +00:00
drh
7f75122149 Move the rowid cache out of VdbeCursor and into BtCursor. When multiple
BtCursors are open on the same table, set their rowid cache all at the
same time.  Ticket #3731. (CVS 6354)

FossilOrigin-Name: 189785832a7dc9f4a0a2113d850b92b987e0f9bf
2009-03-17 22:33:00 +00:00
danielk1977
404ca07578 Add the sqlite3_unlock_notify() API. (CVS 6348)
FossilOrigin-Name: b649a6cc5bfefddd6a04b1183647d2923e0a0daa
2009-03-16 13:19:36 +00:00
danielk1977
20736d82e2 Make calls to sqlite3BtreeRollbackStmt() no-ops when passed a Btree* handle that does not have an open statement transaction. Ticket #3718. (CVS 6342)
FossilOrigin-Name: a1bb1aef0e06140a2d5d5e4b6c10c73ce95c89e0
2009-03-12 14:43:27 +00:00
shane
be21779385 Corrected typos and misspellings. Ticket #3702. (CVS 6336)
FossilOrigin-Name: 6404afa0c515a6536fc2e878d4fb451e4dc06942
2009-03-05 04:20:31 +00:00
drh
11b57d6929 Additional commands and another procedure name changes for clarity of
presentation. No logic changes. (CVS 6323)

FossilOrigin-Name: 91d9d51e03657e7492dd7b93e66c82b152abec3b
2009-02-24 19:21:41 +00:00
drh
c25eabedef Changes to comments and functions/procedure names for clarification. No
changes to logic. (CVS 6322)

FossilOrigin-Name: b99c1815fe270decf1ac3d714acc7e945d1e728a
2009-02-24 18:57:31 +00:00
drh
c74d0b1dfc Enhanced comments on table locking logic as it relates to preparing new
statements.  Added assert() and testcase() but no other changes to code. (CVS 6319)

FossilOrigin-Name: 4a12f5b818b769d7518c942ff3dedf453dde698e
2009-02-24 16:18:05 +00:00
danielk1977
a55331620e Optimize queries of the form "SELECT count(*) FROM <tbl>" by adding a sqlite3BtreeCount() interface to the btree layer. (CVS 6316)
FossilOrigin-Name: d4aa6593183224b6868a322511511c0bbf63b598
2009-02-24 10:01:51 +00:00
drh
076d4661a6 Make sure the auto_vacuum=INCREMENTAL setting is preserved across a VACUUM.
Ticket #3663. (CVS 6304)

FossilOrigin-Name: ded04f12f41504e4a3ecd5164f0d4cbbde5e16f7
2009-02-18 20:31:18 +00:00
shane
63207ab262 Remove compiler warnings under MSVC. (CVS 6249)
FossilOrigin-Name: 6301f08a2b32289a49c4af994f2770318c444b49
2009-02-04 01:49:30 +00:00
danielk1977
0410302e58 Commit first version of the 'backup' feature. (CVS 6241)
FossilOrigin-Name: 663479b417fc06ba1790a544f28694f8797cee57
2009-02-03 16:51:24 +00:00