1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-11 01:42:22 +03:00
Commit Graph

178 Commits

Author SHA1 Message Date
drh
4a642b6060 Improvements to the way that OOM errors are processed.
FossilOrigin-Name: c3ef03478a5788c855b3aef385d43ae7f494f440
2016-02-05 01:55:27 +00:00
drh
1da26a48dd Performance improvement in sqlite3DbMallocRaw().
FossilOrigin-Name: ff8eadbed5004ab03438f737492387dee6b9750a
2016-01-20 03:36:32 +00:00
drh
ac536e613a Move pointer range comparisons into a macro, where they can be dealt with
in a more portable way.

FossilOrigin-Name: ad3124c834b080aaaf24934d6f08b3601ac3ae53
2015-12-10 15:09:17 +00:00
drh
56d90be183 Remove an unreachable branch in malloc.c.
FossilOrigin-Name: a36b7fe92372a13ff0b6e08f1704496045c6f62a
2015-10-26 12:55:56 +00:00
drh
59a052359d Remove a superfluous conditional from the memory allocation initialization.
FossilOrigin-Name: 9ccf8f8d35723f2a9b59010b6d5f37a14164a188
2015-10-15 17:21:35 +00:00
drh
039ca6ab59 Performance optimizations to the sqlite3MallocSize() by requiring the
argument to always be non-NULL.

FossilOrigin-Name: cb65989b0710c65e4df69063b346344fdb1d12c7
2015-10-15 16:20:57 +00:00
drh
b02392e6f0 Change sqlite3StatusSet() into sqlite3StatusHighwater() so that only the
highwater mark is recorded.  This gives a small size reduction and
performance improvement.

FossilOrigin-Name: 6422d223dd10018703c6b083d29a3c35c837fc97
2015-10-15 15:28:56 +00:00
drh
5fb72e5f3e No-op the sqlite3_memory_alarm() interface in a different way, that does
not break legacy memory behavior.  This is a re-do of
check-in [5d3f5df4da9f40d5].

FossilOrigin-Name: 8250e2a487ee12c9a2dea5603ab60aed51e5dc7b
2015-09-10 01:22:09 +00:00
drh
4ef299a32c The sqlite3_memory_alarm() interface has been deprecated and undocumented
for almost 8 years (since version 3.5.3).  Change it into a no-op.

FossilOrigin-Name: 5d3f5df4da9f40d5897b5c23b2ea9333fc18ac2c
2015-09-02 14:56:56 +00:00
drh
054bbabc76 Small size reduction and performance increase in sqlite3DbMallocSize().
FossilOrigin-Name: 8a80967f849eed002a701235ed7fb406099d566e
2015-09-01 20:09:33 +00:00
drh
01c5c00c12 Preserve the number of requested PAGECACHE pages even if the memory pointer
or size is zero.  Enhance the pcache1.c header comment to explain the memory
layout of a page cache line.

FossilOrigin-Name: dacb2a615ce1c0573baf4518000454038745cf2a
2015-07-04 18:15:04 +00:00
drh
597d2b6412 Change sqlite3ApiExit() so that its first argument is never NULL.
FossilOrigin-Name: 791b706ec6c3e80885666e48e01524f0e9a7557e
2015-06-30 03:13:47 +00:00
drh
22c17b8bf5 Simplifications to error message processing. Fix a possible problem in error
message formatting when vacuuming a database with a corrupt schema.

FossilOrigin-Name: 56ef98a04765c34c1c2f3ed7a6f03a732f3b886e
2015-05-15 04:13:15 +00:00
drh
df5e1a00de Fix the sqlite3_memory_used() and sqlite3_memory_highwater() interfaces so
that they really do provide a 64-bit answer.

FossilOrigin-Name: 8a0d5d5e9a4515603c47e9354af47550155a6f2d
2015-05-10 02:01:08 +00:00
drh
592f0cb15e Avoid leaving the malloc subsystem in a partially initialized state if
the low-level initialization callback fails.

FossilOrigin-Name: 3e872011ff5e27738c282f46d2b5803d94fe4b76
2015-03-26 17:04:23 +00:00
drh
af89fe66ea Add the sqlite3_status64() interface. Make the new interface and the legacy
sqlite3_status() both atomic and threadsafe.  Check threadsafety using
assert()s.

FossilOrigin-Name: 1ce8e8fa4b866aafa12b1da0eb4d02321af9293e
2015-03-23 17:25:18 +00:00
mistachkin
d425864d33 Fix harmless compiler warnings with MSVC when assert() and SQLITE_MEMDEBUG are both enabled.
FossilOrigin-Name: 9513dbd4860c8dd391f831982d09aff227d16f5c
2015-03-21 23:38:59 +00:00
drh
cbd55b0362 Change the definition of SQLITE_CONFIG_SCRATCH so that at most one scratch
buffer is used per thread.  Use the generic heap memory allocator for the
WalIterator object when running a checkpoint.

FossilOrigin-Name: 391c9b85abcb5ba300fb2e116384639310c69ed2
2014-11-04 14:22:27 +00:00
drh
d231aa3a42 Enhance (and fix) the MEMTYPE tags associated with heap memory allocations
when SQLITE_MEMDEBUG is used.

FossilOrigin-Name: ca5b789e33c4e5ce366d8f5372d086442f84e230
2014-10-07 15:46:54 +00:00
drh
8da47419dd Update to requirements marks related to changes in the memory allocation
interface and enhancement of the documentation regarding DEFAULT clauses
in CREATE TABLE.

FossilOrigin-Name: 440705b98a3429b830ea85e71cc1e414bc6d8058
2014-10-03 14:54:47 +00:00
drh
17bcb10299 Add the Mem.szMalloc element to the Mem object and use it to keep track of
the size of the Mem.zMalloc allocation.

FossilOrigin-Name: 9c09ac353df6041808cace41880f4729ee73f5e1
2014-09-18 21:25:33 +00:00
drh
20f3df046a Fix harmless warnings on 32-bit MSVC builds.
FossilOrigin-Name: 5192f964b2a85459553f1cea741b9791606ccc4e
2014-09-18 02:20:54 +00:00
drh
3329a63ac5 Fix compiler warnings and change the nullMem structure initializer into a
format that MSVC can understand.

FossilOrigin-Name: 163bfae8583b2d3002a3a43d6bf8a66fefd73acb
2014-09-18 01:21:43 +00:00
drh
da4ca9d19c Add new APIs that take 64-bit length parameters:
sqlite3_malloc64(),
sqlite3_realloc64(),
sqlite3_bind_blob64(),
sqlite3_bind_texte64(),
sqlite3_result_blob64(),
and sqlite3_result_texte64().
Internal memory allocation routines also now use 64-bit unsigned length
parameters for safety.
Also add the sqlite3_msize() interface.
Fix the sqlite3_get_table() to use sqlite3_realloc64() to avoid a
integer overflow problem.

FossilOrigin-Name: 94954850cf2e1ec0b7f590c7f46cdc54c72558ce
2014-09-09 17:27:35 +00:00
drh
b50c65d561 Faster implementation of the sqlite3ApiExit() routine.
FossilOrigin-Name: bd41d394d48516eb7d8ddc46abdcb427aa80173e
2014-08-23 20:25:53 +00:00
drh
b4586f1254 Another memory allocator performance optimization.
FossilOrigin-Name: 6da6f46d0c43e3b68c21f514ddf8ee663c20f249
2014-08-23 19:42:06 +00:00
drh
3ccd5bf89e Changes to sqlite3ScratchMalloc() that make the entire memory allocation
interface a little faster and about 100 bytes smaller.

FossilOrigin-Name: f83daa16f65ef35062412e88c214852a4aeb3da2
2014-08-23 19:04:55 +00:00
drh
13f40da31d Split the sqlite3Error() routine into sqlite3Error() and
sqlite3ErrorWithMsg(), for a slight size reduction and performance increase.

FossilOrigin-Name: cf561d1f0bb60b3d638632d20bd686dda4fa4a04
2014-08-22 18:00:11 +00:00
drh
b0e7704e9f Simplify and improve the performance of the sqlite3VdbeMemGrow() routine.
FossilOrigin-Name: 48ecf18774ba9572d86696c60d87007a619d9f53
2013-12-10 19:49:00 +00:00
drh
9ccd8659ff Change the PRAGMA parser to use a binary search for the pragma name.
Also:  Minor performance enhancement to sqlite3DbFree() and to the
token dequoter.

FossilOrigin-Name: 870c030b4e1854e6e0d39907fadbd82774c16f56
2013-09-13 16:36:46 +00:00
drh
3608f177ba Make sure lookaside memory allocations are unusable after they are freed.
FossilOrigin-Name: 3869aef6348018f584137f36f6924193a790e52f
2012-05-21 16:59:16 +00:00
drh
de0f18154e Check the return code from sqlite3_initialize() called from within
sqlite3_soft_heap_limit64() and return an error from sqlite3_soft_heap_limit64()
if sqlite3_initialize() fails.

FossilOrigin-Name: 676acce274fec692a1eb34d27ee4b1327b4b3334
2011-12-22 17:10:35 +00:00
drh
2e5a422eee Fix a bug in memory usage tracking that was introduced by
check-in [4e33a0eaf83922].

FossilOrigin-Name: 8ba456ae0b3d0c0b6f72f98bd0bc28f72dfa4ff5
2011-05-05 17:00:51 +00:00
shaneh
ca591feb34 Remove stray semi-colon that MSVC complained about.
FossilOrigin-Name: 7a085271ff85033479c2057c19a45a750168d228
2011-04-15 19:30:42 +00:00
drh
8e1bb041a8 Changes to memory allocator usage tracking to delay the onset of integer
overflow.

FossilOrigin-Name: 4e33a0eaf83922926f8d5ee988a20439a09bc795
2011-04-15 16:39:52 +00:00
drh
fcd71b6010 Suppress many harmless compiler warnings, mostly signed/unsigned comparisons
within asserts or unused parameters in extensions.

FossilOrigin-Name: 3eeb0ff78d04891b5fd1a3d99a9fb8cfbed77a81
2011-04-05 22:08:24 +00:00
drh
0b12e7f860 Add additional DBSTATUS options for measuring the hit and miss rates against
the lookaside memory pool - information useful in tuning the lookaside size.
Currently experimental pending analysis of performance impact.

FossilOrigin-Name: 34613f1dc54c638531ca2f5907b71fbe8841233e
2010-12-20 15:51:58 +00:00
shaneh
4b03f21e4f Warning cleanup from MSVC.
FossilOrigin-Name: cde62657d6f410a3d6899cd7b4000d276fe3c813
2010-10-04 14:11:54 +00:00
drh
6ac78a0d9f Fix several harmless compiler warnings.
FossilOrigin-Name: 7be03ecc04235420e54fed8a88742243278de160
2010-09-28 14:26:36 +00:00
drh
f82ccf6437 Added the sqlite3_soft_heap_limit64() interface. Deprecate the older
sqlite3_soft_heap_limit() interface.

FossilOrigin-Name: 82268a2c3d75431cd40de6ad09d398729de32a29
2010-09-15 17:54:31 +00:00
drh
39f67bebdd Fix a couple of incorrect evidence marks on malloc().
FossilOrigin-Name: f9b5c5cb135f3d0bb2b64b4d3f8d77bbd8d2ae98
2010-09-11 16:25:42 +00:00
drh
71a1a0f485 Additional evidence marks on the malloc() implementation. Update the
documentation to explain that mallocs are not necessarily 8-byte aligned
if the SQLITE_4_BYTE_ALIGNED_MALLOC compile-time option is used.

FossilOrigin-Name: 42b4bf9e72501cf228b4086437c7660443933f74
2010-09-11 16:15:55 +00:00
drh
1567acf96a Add assert() statements to demonstrate that memory allocations are always
aligned to an 8-byte boundary (unless SQLITE_4_BYTE_ALIGNED_MALLOC is defined).

FossilOrigin-Name: 305cc4e6c1164b1ede0c3177e3c0f9b8644df0f6
2010-09-11 15:54:53 +00:00
drh
7ff2719e88 Fix an off-by-one error in the scratch memory allocator.
FossilOrigin-Name: 5a9591607a0a5ba4527bf2a90179651053244953
2010-09-02 18:13:00 +00:00
drh
1ff6e3ab89 Use sqlite3_mutex_notheld() instead of !sqlite3_mutex_held() inside
of assert() statements since the former works when mutexing is disabled
while the latter does not.

FossilOrigin-Name: 2211486b69cf53f5efb1334aff8b403b26596102
2010-09-02 17:15:19 +00:00
dan
b0c6a8884b If MEM_STATUS is disabled, avoid holding the STATIC_MEM mutex when calling the user-defined xMalloc method. Holding the mutex causes problems for memsys3 and memsys5.
FossilOrigin-Name: 4f20f8ba73691c8a1dc33d2fcd1e793dd08f00a8
2010-09-02 10:08:41 +00:00
drh
9f129f467e Add evidence mark comments to source code. Add additional information to the
documentation of sqlite3_release_memory().  Fix a minor inefficiency in mem1.c
that was discovered while writing requirements tests.

FossilOrigin-Name: 53b0c03fd33d2d8141fd386de5493fec64456042
2010-08-31 15:27:32 +00:00
drh
badc980afa Refactor the implementation of the scratch memory allocator. Add the
SQLITE_TESTCTRL_SCRATCHMALLOC interface to facilitate testing.

FossilOrigin-Name: a3475ddfbe4526e6e0b334fd1376ee7c31508b80
2010-08-27 17:16:44 +00:00
drh
50d1b5f363 Remove unnecessary code from malloc.c. Enhance pcache1.c so that is tries
to reuse existing pages, rather than create new pages, when SQLite is under
memory pressure.  "Memory pressure" means that SQLITE_CONFIG_PAGECACHE memory
is nearly exhausted or sqlite3_soft_heap_limit() has been reached.

FossilOrigin-Name: 51049479a8577e03cc353f71f6e13a10c8323d91
2010-08-27 12:21:06 +00:00
drh
81ba7d16b7 Fix a bug in the SQLITE_STATUS_MALLOC_COUNT counter. Add an ALWAYS() around
a condition in the SQLITE_DBSTATUS_SCHEMA_USED logic that is always true.

FossilOrigin-Name: 6df081adbfa581c477bd2c96bb3f7f44be131a8f
2010-07-26 19:09:31 +00:00