Commit Graph

419 Commits

Author SHA1 Message Date
Leo Yuriev
97e1d9b685 mdbx: fix mdb_cursor_last (ITS#8557).
This is a port of http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=commit;h=d84dee516fa4cca41b5234e95c2105eb4737dfb3

HYC: Optimize mdb_page_search_root(PS_LAST) when cursor is already
     near last position, ignoring C_EOF flag for now.

LY: Fixed C_EOF check. Don't ignore it, otherwise in some cases
    we got a "MDB_PAGE_NOTFOUND", instead of just "MDB_NOTFOUND".

Change-Id: I2edbf6b64403abfa830a2fcb84162125634a85d0
2017-01-13 00:50:07 +03:00
Leo Yuriev
c96cc9c567 mdbx: minor refine README.md
Change-Id: I7e2253fc83240b7653eac1690493dcd3ee5ebe97
2017-01-09 02:04:31 +03:00
Leo Yuriev
81861084fc mdbx: cosmetics for README.md
Change-Id: I02eca38563bb26f67a434dfbecaab3d066dd3d6d
2017-01-09 01:39:16 +03:00
Leo Yuriev
17b8feac57 mdbx: adds README.md
Initial for https://github.com/ReOpen/libmdbx/issues/2

Change-Id: I8e2afc659a8874405a85456da9904612c5bf8089
2017-01-09 00:40:32 +03:00
Leo Yuriev
488ee06595 mdbx: adds -ffunction-sections for CFLAGS.
Change-Id: I38e24e9424b75424ff12e57f3906282338a95989
2017-01-08 21:47:26 +03:00
Leo Yuriev
f8a14d7d54 mdbx: Merge branch 'positive' into 'devel' branch. 2017-01-08 14:27:31 +03:00
Howard Chu
234faf9770 mdbx: backport - ITS#8558 fix mdb_load with escaped plaintext.
Change-Id: I8646e876190529812476bac28e244a8eb6202336
2017-01-07 23:36:14 +03:00
Leo Yuriev
1fa026f332 mdbx: adds thread's cleanup test into mtest0.
Change-Id: I542425e5df1fb97d15030a681bc0e5173cf3c902
2017-01-07 23:21:53 +03:00
Leo Yuriev
478b7f00d9 mdbx: refine make ci target.
Change-Id: I4b50ded5cf4b03b7a10951e7d7ae2e08fd05d81b
2017-01-07 23:21:53 +03:00
Leo Yuriev
9c02fad4cd mdbx: support glibc < 2.18 for TLS cleanup on thread termination.
One more for https://github.com/ReOpen/ReOpenLDAP/issues/48
against https://sourceware.org/bugzilla/show_bug.cgi?id=21031
and https://sourceware.org/bugzilla/show_bug.cgi?id=21032

It is impossible to completely fix this issue for glibc prior to 2.18,
in such case this fix just minimizes the probability of a crash.

Change-Id: If2317275928e8f6d96c2682df99989da03aedaaa
2017-01-07 21:14:47 +03:00
Leo Yuriev
02de457f3c mdbx: more rework TLS cleanup on thread termination.
One more re-fix https://github.com/ReOpen/ReOpenLDAP/issues/48
Here is only part of the work for glibc >= 2.18

--

Unfortunately, the two bugs related to pthread_key_delete()
are present in all glibc versions:

1) The race condition between pthread_key_delete() and thread's
finalization path, from where a TSD-destructors are called.
Therefore some TSD-destructor(s) could be executed after that
the pthread_key_delete() was competed.

2) ld.so infrastructure does not tracks a TDS-destructors.
Therefore a lib.so could be unloaded while corresponding a
TSD-destructor(s) were even not completed or still were not called.

Change-Id: I47eba97df57fd4c7a5bf3a8f9f12d72ba898cae5
2017-01-06 18:39:03 +03:00
Leonid Yuriev
f42b6a982a mdbx: enable C99. 2017-01-04 20:09:31 +03:00
Leo Yuriev
ee4d5bb5d2 mdbx: rework TLS cleanup on thread termination.
Re-fix https://github.com/ReOpen/ReOpenLDAP/issues/48

Change-Id: Ie47d2ede0f47b382a30ab6a27546f249f56cf4f6
2017-01-04 00:09:50 +03:00
Leo Yuriev
855c60a554 mdbx: remote extra LNs (cosmetics).
Change-Id: I3ea352c9d088367756543f8313d6598de3b80bf0
2017-01-03 16:45:23 +03:00
Leo Yuriev
5b160be128 mdbx: assert_fail() when INDXSIZE(key) > nodemax.
Change-Id: I2fadc68a3e682dd3d8b3b8b5f48ed096e9a92288
2017-01-03 16:11:19 +03:00
Leo Yuriev
ddb3c32258 mdbx: HNY 2017!
Change-Id: Ie80fc1dc407ec45c828aa3b1bdc42933741a863a
2017-01-01 14:56:00 +03:00
Leo Yuriev
1edceae1a1 mdbx: adds travis-ci.
Change-Id: Ic7034ae538bcc70ad1584f4aeae857594ceeded1
2016-12-29 00:21:34 +03:00
Leo Yuriev
ec49580a84 mdbx: sync version timestamp with LMDB-0.9.19
Change-Id: I4a50b38042ebd57ea2f2fec5b837b16f8a2e3ff3
2016-12-28 23:52:14 +03:00
Leo Yuriev
dbc57d3eaf mdbx: fix cursor_count() for libfpta. 2016-12-23 15:35:42 +03:00
Leo Yuriev
68cac36832 mdbx: Merge branch 'devel' into 'pt' branch. 2016-12-23 05:03:27 +03:00
Leo Yuriev
598989c6a5 mdbx: Merge branch 'devel'. 2016-12-23 05:02:37 +03:00
Howard Chu
bb7d3b4639 mdbx: backport - More 0.9.19 updates.
Change-Id: I4571ba200677124ab41f80a9c0cf37d620d5d230
2016-12-23 05:00:55 +03:00
Hallvard Furuseth
5bed0413f3 mdbx: backport - More MDB_node doc.
Change-Id: I2a4d2596af8d2c551d891b567e4d3366b2d6ad8c
2016-12-23 04:47:38 +03:00
Hallvard Furuseth
ef00ee6095 mdbx: backport - Doxygen fixes. Use DISTRIBUTE_GROUP_DOC.
- DISTRIBUTE_GROUP_DOC makes doxygen give several fields the
  same doc: mn_hi + mn_lo in MDB_node.
- Don't hide a doxygen #name inside double quotes.

Change-Id: I173ff54a78349344d38e175cf9de741efab29e82
2016-12-23 04:45:52 +03:00
Leo Yuriev
ef375647c7 mdbx: fix mdbx_replace().
Always return `old_data`, even no changes.
2016-12-22 21:50:06 +03:00
Leo Yuriev
9b38d8d422 mdbx: adds mdbx_replace() for libfpta. 2016-12-22 16:28:57 +03:00
Leo Yuriev
91bb3ab9fa mdbx: mdb_chk - cosmetics (no extra \n). 2016-12-21 20:31:46 +03:00
Leo Yuriev
7e68254051 mdbx: mdb_chk - don't close dbi-handles, set_maxdbs() instead. 2016-12-21 20:30:33 +03:00
Leo Yuriev
92e8d32c7f mdbx: Merge branch 'devel'. 2016-12-20 09:00:33 +03:00
Leo Yuriev
a866d8b6c2 mdbx: Merge branch 'devel' into 'pt' branch. 2016-12-20 08:51:07 +03:00
Leo Yuriev
efcf60dfaa mdbx: fix MDB_GET_CURRENT for dupsort's subcursor. 2016-12-18 20:16:55 +03:00
Leo Yuriev
578fe9e258 mdbx: allows zero-length keys for libfpta. 2016-12-18 00:58:26 +03:00
Lorenz Bauer
b950e39c10 mdbx: backport - mdb_env_copyfd2(): Don't abort on SIGPIPE (ITS#8504).
Return EPIPE instead.
Never clear mc_error, we could lose a failure in the other thread.

Change-Id: Ief08803ed56293309f07be116e69123c10907e77
2016-12-16 08:27:52 +03:00
Hallvard Furuseth
70a138472b mdbx: backport - Mention MDB_PREV_MULTIPLE along with MDB_NEXT_MULTIPLE.
Change-Id: I0c216203c3aa2005ef254293c1c472c9b7f257f3
2016-12-16 08:08:25 +03:00
Leo Yuriev
2956095c6d mdbx: rework MDB_CURRENT handling for libfpta. 2016-12-15 22:06:06 +03:00
Leo Yuriev
b4dc91d276 mdbx: Merge branch 'devel' into 'pt' branch. 2016-12-15 22:05:45 +03:00
Leo Yuriev
5865c74876 mdbx: rework overwrite support for mdbx_put(). 2016-12-15 22:03:33 +03:00
Leo Yuriev
cbff647579 mdbx: fix ov-pages copying in cursor_put().
I think I just lost one line of code.
This bug was added by 09d7904317
2016-12-15 20:09:28 +03:00
Hallvard Furuseth
3627145129 mdbx: backport - catch mdb_cursor_sibling() error (ITS#7377).
Change-Id: I440ff1f9f92156e19935195d656f4d77b088f605
2016-12-11 08:43:13 +03:00
Hallvard Furuseth
fca2f4d929 mdbx: backport - clean up and comment C_UNTRACK.
Don't use it as a "cursor is tracked" hint in mdb_pages_xkeep().
It's been harmless so far, but would break after mdb_cursor_copy().
Checking m0 directly short-circuits better anyway.

Change-Id: Ibf180214db603e08ed11e298cff85866eb79f4bb
2016-12-11 08:31:50 +03:00
Hallvard Furuseth
fe4e9993d6 mdbx: backport - Pass cursor to mdb_page_get(), mdb_node_read().
No change in behavior.

Change-Id: I19054cfd96fa883970a0dc66a0088596a142ea07
2016-12-10 20:41:48 +03:00
Hallvard Furuseth
ca97abb7f3 mdbx: backport - mdb_dbi_open(): Protect mainDB cursors (ITS#8542).
Change-Id: I5bdd3727eddc16a518c4b88534a3e7253e9789fd
2016-12-10 16:21:22 +03:00
Hallvard Furuseth
7b773e6f2d mdbx: backport - Cleanup: Add flag DB_DUPDATA, drop DB_DIRTY hack.
Change-Id: I5d30367104d025c1d2f8c39d29455faca59d7f19
2016-12-10 16:18:26 +03:00
Hallvard Furuseth
b33fe4a3f0 mdbx: backport - note about reserved vs. actual mem/disk usage.
Change-Id: Ibd75bdafac646f4a577c7cbebda8173e5b7e5ef1
2016-12-10 15:57:00 +03:00
Leo Yuriev
c4f4d9ebf3 mdbx: rethink mdbx_cursor_eof() for libfpta. 2016-12-08 16:33:50 +03:00
Hallvard Furuseth
207f43003c mdbx: backport (comments) - MDB_CP_COMPACT comments.
Change-Id: I4965d5e511395fceafcd922f513dcf0d5050c9b8
2016-12-08 00:55:28 +03:00
Hallvard Furuseth
baf61da42b mdbx: backport (minor) - doxygen cleanup.
Change-Id: Ide60614f4fc631aa2bfba3609115f39ec294b3de
2016-12-08 00:55:11 +03:00
Hallvard Furuseth
ba688e63dc mdbx: backport (comments) - Note functions which must set MDB_TXN_ERROR on failure.
Other functions depend on them to do so.
For mdb_node_read(), instead remove such a dependence.

Change-Id: I49c1c8bbb1c20527cbf76ef004cb7a1300ef465c
2016-12-08 00:54:30 +03:00
Leo Yuriev
9775b409bc mdbx: Merge branch 'devel' into 'pt' branch. 2016-12-06 21:20:23 +03:00
Leo Yuriev
b980878b07 mdbx: adds mdbx_cursor_eof() for libfpta. 2016-12-06 20:32:24 +03:00