182 Commits

Author SHA1 Message Date
Leonid Yuriev
d80654fa07 mdbx: rework max key-length and limit API.
Change-Id: I3d783f69d4ea438d8a8a0505fa9163715fbdcf9c
2019-11-30 01:29:48 +03:00
Leonid Yuriev
c00f484813 mdbx: fix nested txn.
Change-Id: Iff752d23a880ed4f5322145446be9c989b837479
2019-11-26 15:27:45 +03:00
Leonid Yuriev
acde45ff3a mdbx: pre-sync range before mresize().
Change-Id: Id205394cf488b5a954ec021af7f2924a549c9a0e
2019-11-18 16:29:47 +03:00
Leonid Yuriev
4af2deb8cd mdbx: drop obsolete assertion & refine related code.
Fixes https://github.com/leo-yuriev/libmdbx/issues/69

Change-Id: Iedf988e9788acb250493032bf55f5c75784652cc
2019-11-18 16:29:30 +03:00
Leonid Yuriev
f285ab59e6 mdbx: fix mdbx_runtime_flags for ALLOY-build.
Change-Id: I16a7e3475043066cea7733ed31b7e5d5a5824516
2019-11-18 11:50:21 +03:00
Leonid Yuriev
497aa53e28 mdbx: fix minor typos.
Change-Id: Ib0c62eace9c766844a3f44124b525a3c6373c620
2019-11-18 00:13:27 +03:00
Leonid Yuriev
d390300e60 mdbx: fix lck-file mode-flag while opening existent DB.
Change-Id: I3b8d446f6a620e911c0d5e325d8d912f2ca19d93
2019-11-18 00:02:37 +03:00
Leonid Yuriev
d20b9d9ed7 mdbx: move boot-id from LCK to meta.
Change-Id: I7a371feb1a2c43e3606c516fe7b4c7d7a4ff6e73
2019-11-18 00:02:37 +03:00
Leonid Yuriev
7ef61e12c0 mdbx: refine update_gc() for large-transaction cases. 2019-11-17 23:57:03 +03:00
Leonid Yuriev
c250500afd mdbx: performs long assertion-loops only when audit enabled. 2019-11-17 23:57:02 +03:00
Leonid Yuriev
af6aa30c7c mdbx: don't sync-on-close deleted files.
Change-Id: Ie9358dfd79c9c5b26777e690079b3f081f0a7158
2019-11-16 00:23:03 +03:00
Leonid Yuriev
84ae40172e mdbx: refine/fix madvise(MADV_DONTDUMP).
Change-Id: I3cb56d5d704a60c17da9ae2a276587cf495ce30c
2019-11-16 00:23:03 +03:00
Leonid Yuriev
42d9e06598 mdbx: add MDBX_ACCEDE environment opening flag.
Change-Id: If0a08d6fce127f35ff2992988715b7dc1fdb70a9
2019-11-16 00:23:03 +03:00
Leonid Yuriev
cb8fac6f5f mdbx: prohibit non-WRITEMAP modes under OpenBSD.
Temporary `workaround` for OpenBSD kernel's bug.
See https://github.com/leo-yuriev/libmdbx/issues/67
2019-11-14 15:12:19 +03:00
Leonid Yuriev
f0c6292fa3 mdbx: ignore ENOSYS/ENOTSUP from madvice()/posix_madvise()/posix_fadvise(). 2019-11-13 23:50:38 +03:00
Leonid Yuriev
c09fbc2ad2 mdbx: refork mdbx_flush_incoherent_mmap(). 2019-11-13 23:50:38 +03:00
Leonid Yuriev
fe40af160d mdbx: split-off mdbx-options into options.h. 2019-11-13 23:50:38 +03:00
Leonid Yuriev
057812fe02 mdbx: use MAP_CONCEAL when available (compatibility). 2019-11-13 15:49:41 +03:00
Leonid Yuriev
b95fb5b124 mdbx: add auxiliary debug-begin/debug-end includes.
Change-Id: I9fad95e7e73a581c49388da31895aed94a3abbe4
2019-11-13 15:47:38 +03:00
Leonid Yuriev
ac75fe2604 mdbx: move platform-related options into osal.h
Change-Id: I4bdbc5f89fc468f0068f97cc30f911eb0ab151d3
2019-11-13 11:31:22 +03:00
Leonid Yuriev
0dc544fefd mdbx: use SysV semaphores on systems without shared mutexes.
Change-Id: Ib2ad9ed137ab76999a2a8e832f9f77ff1a0788ca
2019-11-13 11:31:22 +03:00
Leonid Yuriev
2f45c37320 mdbx-posix: refine locking build-options.
Change-Id: I09c0dd453dd39e0105176ad8d9e414e2582849fb
2019-11-13 11:31:22 +03:00
Leonid Yuriev
e2ae62bdb2 mdbx: refine gc_update() to avoid fragmentation on rare cases. 2019-11-13 11:24:44 +03:00
Leonid Yuriev
df44539486 mdbx: fix unused warning for Wpedantic_format_voidptr().
Change-Id: I3ac5f83ceb8f9aa28deb56d983595fc55bfcfa93
2019-11-13 11:24:44 +03:00
Leonid Yuriev
a6bf73a817 mdbx: don't rollback when boot-id matches.
Change-Id: Iee4656e120bd4205f8528f1fc613cbff1ab4a859
2019-11-13 11:24:44 +03:00
Leonid Yuriev
5af02290e6 mdbx: portability fixes for SunOS/Solaris/OpenIndiana.
Change-Id: I0442367e798903598d706c65b536a127ca982fce
2019-11-11 15:13:56 +03:00
Leonid Yuriev
4dfa97cda9 mdbx-posix: fix mdbx_lck_seize() and mdbx_lck_destroy() for rare race-case.
Change-Id: I49c1d39665e3ef1eb1422b9da02c5719be3ee3b0
2019-11-11 13:10:22 +03:00
Leonid Yuriev
6a7499c8fc mdbx: refine POSIX-options detection. 2019-11-11 13:10:22 +03:00
Leonid Yuriev
51440b5542 mdbx: minor fix auto-readahead for buggy platforms (i.e. DragonflyBSD, NetBSD). 2019-11-11 13:10:22 +03:00
Leonid Yuriev
fc48751f8f mdbx: use MAP_NOSYNC & MAP_HASSEMAPHORE if defined (compatibility). 2019-11-11 13:10:22 +03:00
Leonid Yuriev
3e7944f732 mdbx: use POSIX.1 IPC semaphores on systems without shared mutexes.
Change-Id: I5e398257e65c355d1028167f2719232fc55d093a
2019-11-11 13:08:19 +03:00
Leonid Yuriev
647d832556 mdbx: initial mdbx_check_fs_rdonly() and mdbx_check_fs_local().
Change-Id: Iff48f1ad1ef54c1e51dceebce16097be030206bd
2019-11-08 18:40:29 +03:00
Leonid Yuriev
b7ed67543f mdbx-windows: use CreateFileW() instead of CreateFileA().
Resolves https://github.com/leo-yuriev/libmdbx/issues/66

Change-Id: I0266a8a77460940332045c19cb561553a5047e7c
2019-11-08 18:39:51 +03:00
Leonid Yuriev
fff19d878f mdbx: fix update_gc() to avoid rare MDBX_KEYEXIST.
Change-Id: I6798e587f62cd570b43b095554c5f3f6adf5198d
2019-11-04 12:31:54 +03:00
Leonid Yuriev
2cfe632296 mdbx: rework/fix rebalance & page merge (fix MDBX_PAGE_FULL).
Change-Id: Ice610861d76390e76685c1bfad56fb8fe3462ed2
2019-11-04 12:31:54 +03:00
Leonid Yuriev
cf884f082f mdbx: initial osal_bootid().
Change-Id: I103f61714a1d2e58d4f508b7d814a56f5b58573c
2019-11-04 12:31:51 +03:00
Leonid Yuriev
55395820e3 mdbx: set MDBX_MIN_PAGESIZE to 256 (useful for testing).
Change-Id: Ie7f0b68ef7b21bb2f02267752555e2d0e853fcbe
2019-11-04 00:22:13 +03:00
Leonid Yuriev
582fdd7ed2 mdbx: refine mdbx_env_set_geometry().
Change-Id: Ib685de60c9109971e3ab42b13ee085a6ed50a1c5
2019-11-04 00:22:13 +03:00
Leonid Yuriev
e7b3a15d54 mdbx: fix/refine mdbx_setup_dxb() for case open existing DB with new geo-params.
Change-Id: Iebb9b19c8f81d8629c4b28ed547d27f1a139dc7f
2019-11-04 00:22:13 +03:00
Leonid Yuriev
3cc8e5222c mdbx: undo/promote geo-changes made by child txn on abort.
Change-Id: Ieb291231909ef8e2a0205ffe1708d66b67ac5af7
2019-11-04 00:22:13 +03:00
Leonid Yuriev
415cb5f886 mdbx: refactor me_dbgeo usage and osal-mmap/mresize().
Change-Id: I1f29c953abcbd4f2bab7ba52e7dd9da85ea48354
2019-11-04 00:22:13 +03:00
Leonid Yuriev
b4729bd1d6 mdbx: minor refine pgno_align2os_bytes() usage.
Change-Id: I4b83792c298aaa4c3ac5f412489a31f639f6d016
2019-11-04 00:22:13 +03:00
Leonid Yuriev
b274c4a730 mdbx: fix to avoid ERROR_USER_MAPPED_FILE on Windows (minor race condition). 2019-11-04 00:22:13 +03:00
Leonid Yuriev
b4a5728455 mdbx: rework readahead management.
Change-Id: Ic1e2f3f5bd7fb2e9fd8d5820816e3d2def6ec1b3
2019-11-04 00:22:13 +03:00
Leonid Yuriev
9c89e7c739 mdbx: refine discarding of unused pages (MADV_FREE/MADV_REMOVE/MADV_DONTNEED).
Change-Id: I657eb7ef9060214d6ed3d75a2deeebc9ff3df5f5
2019-11-04 00:22:13 +03:00
Leonid Yuriev
40f31ea936 mdbx: add atomic_yield().
Change-Id: I0c3be400a880fd97bf1c254fd70a242982aac3f8
2019-11-04 00:22:13 +03:00
Leonid Yuriev
3ee269ddb6 mdbx: support for txnid of the last modification for sub-dbs/kv-spaces.
Change-Id: Ifb6684df57608cda88aa9134b275f442358ff46d
2019-11-04 00:22:09 +03:00
Leonid Yuriev
84bff89eb1 mdbx: conform to and use -Wpedantic.
Change-Id: I3056af7ae53c5a7c3ecbfe828ab1d5ee94c2bc26
2019-10-26 00:02:28 +03:00
Leonid Yuriev
c694325ab7 mdbx: fix minor warnings.
Change-Id: Iaa614a7d4325d3de6d863c20020c62954da7a1bf
2019-10-25 23:09:23 +03:00
Leonid Yuriev
a0ec89e468 mdbx: fix check-for-unique for the case when more than one new database are opening (i.e. with creation of LCK-files).
Change-Id: If712e1ead2e0cdfd72a115bd442d613a8d730839
2019-10-25 21:05:44 +03:00