A ref change was pushed to the OpenLDAP (openldap.git) repository. It will be available in the public mirror shortly.
The annotated tag, LMDB_0.9.18 has been created at 627c85175007bdd95c87054e4816dcf46ddff75c (tag) tagging ad8488cfac644d7a289e428ab3c403c859d844cb (commit) tagged by Howard Chu on Fri Feb 5 21:23:36 2016 +0000
- Log ----------------------------------------------------------------- Release 0.9.18
Alexey Naumov (1): Fix possible crash in DLL_THREAD_DETACH (explodes in .Net Framework)
Chris Mikkelson (2): ITS#7363 Use posix semaphores on apple and bsd systems. ITS#7364 Remove POSIX semaphores when the last user closes the mdb environment.
Claude Brisson (3): bugfix for mdb_cursor_put with MDB_MULTIPLE ITS#7570 fix MDB_GET_MULTIPLE and MDB_NEXT_MULTIPLE ITS#7681 fix mdb_cursor_set behaviour for MDB_SET_RANGE
David Barbour (1): ITS#7994 Access to current transaction ID.
David Wilson (1): ITS#7734 Add MDB_NORDAHEAD to CHANGELESS.
Hallvard B Furuseth (19): .gitignore Makefile DPRINTF(): Fix format, handle non-gcc, simplify. Fix memncmp(): Do not memcmp twice Compact memnrcmp, just for fun Fix formats, reduce PAGEHDRSZ size_t->unsigned. Fix P_INVALID signedness Warning cleanup: Drop unneeded 'unsigned >= 0' Warning cleanup: if(rc = mdb_<func>()) & co Warning cleanup: printf(%p, struct*) Warning cleanup: Make parent index unsigned Drop unused vars #define _XOPEN_SOURCE for random() Private: make.sh Drop gcc extension ,##__VA_ARGS__. Add DPUTS(). Macro cleanup: Parenthesize, simplify, remove a ; Simplify: Replace IDL*_CMP() with CMP() Wrap O_DSYNC in MDB_DSYNC. Avoid cast-away-const for errstr[]
Hallvard Furuseth (308): libmdb/.gitignore += test[45], Doxygen output Cleanup mdb macros. C90 compatibility cleanup in mdb. Put MDB_node.<mn_lo,mn_hi> in host byte order. Check some mdb integer type assumptions Fix memn(r)cmp of key sizes > INT_MAX. Simplify. explain mdl_midl_sort() istack size mdb type cleanup: Consistent reader count types. Add mdb.c:txnid_t for readability. Drop ULONG in favor of size_t. mdb integer type cleanup: Use MDB_dbi consistently. Restore missing LAZY_LOCKS semicolon. Fix mdb debug formats libmdb IDL cleanup. ITS#7191 Fix mdb_xcursor_init1() unaligned access Remove development file libmdb/make.sh Fix libmdb comments ITS#7191 Align dirty MDB pages on the stack Clean up MAP_FAILED handling in mdb. Fix valgrind call after malloc failure in mdb. Tweak mdb comment with conflicting spec of 'ID' Fix MDB_txninfo.mt2 padding on Windows/Apple Fix MDB_DEBUG in last ITS#7299 commit. libmdb: Do not use the MDB_txbody.mtb_txnid field. libmdb: Set close-on-exec flag on lockfile libmdb: Don't open datafile twice when not needed. libmdb: Add C++ 'extern "C" {}' to *.h libmdb: MDB_FDATASYNC code cleanup. libmdb: signed meets unsigned warning cleanup libmdb: Simplify mdb_default_cmp. No real change. libmdb: Simplify pick_meta() from read_meta(). libmdb: midl.h namespace cleanup. libmdb: Check sem_open() against SEM_FAILED. libmdb: Fix P_INVALID when pgno_t != unsigned long ITS#7363 Preprocessor namespace cleanup. MDB_WRITEMAP needs no DSYNC descriptor (me_mfd) Save pid in MDB_env instead of repeating getpid(). Remove mdb data races. Use (txnid_t)-1 as "no ID". ITS#7377 Wrap sem_wait & file locks in EINTR loops ITS#7364 Always sem_unlink() in mdb_env_open(). ITS#7364 Limit mdb lock upgrade before sem_unlink. ITS#7377 Catch MDB setup errors and clean up. ITS#7377 Catch MDB user errors. ITS#7377 Document caveats/troubeshooting. ITS#7377 Catch ftruncate() error ITS#7377 Wrap fcntl F_SETLK in EINTR loop too. Fix mdb_open() off-by-one error in maxdbs check Tweak MDB restrictions Fix last commit. More for mdb_env_copy(). mdb_env_open(): Keep mdb_env_set_flags() flags. Explicitly unlock the MDB lockfile on Windows. ITS#7377 Errorcheck Windows calls and thread keys. Renumber MDB_NOSUBDIR. Check mdb_env_open() flags. Tweak MDB_FIXEDMAP handling. ITS#7453 Fix reset of MDB_NOSYNC/MDB_NOMETASYNC. API change: mdb_env_set_maxdbs(, *named* DBs). API change: mdb_drop() only accepts del=0 or 1. mdb_cursor_dbi(): Assume valid args. mdb_env_sync(,force=1): Override MDB_MAPASYNC. Delete liblmdb/mfree. It has moved into mdb_stat. Update MDB comments: Caveats, flags, etc. ITS#7512 Fix MDB page leak when malloc error. Freelist cleanup/streamlining ITS#7455 Save freelist in single-page chunks Add error code MDB_MAP_RESIZED. mdb_stat -ff[f]: show contiguous page spans. ITS#7517 Don't save dropped dirty MDB databases. ITS#7377 Catch MDB failure updating root pointers. ITS#7515 Fix MDB parent/child txn interaction. Revert "ITS#7515 update parent's mt_next_pgno on child commit" ITS#7485 Document key/data size limits in lmdb.h. ITS#7517 Document that dirty DBs may not be closed mdb_page_alloc(): Handle freeDB txnid range holes. ITS#7515 mdb_dbi_open(): Also open in parent txns. mdb_cursor_prev,mdb_cursor_next: Fix return value. Check DB flags when refreshing a stale MDB DBI. ITS#7512 Plug mdb_txn_abort(nested txn) page leaks. ITS#7515 Fix mdb_txn_commit(nested txn). Tweak prev commit: Restore if-test as an assert Tweak MDB_INCOMPATIBLE description Fix MDB_DEBUG compile when no varargs macros. Silence signedness warning Plug MDB memory leak of DB names. Clean up MDB_env setup. Cleanup for TLS key and read-only filesystem. Support mdb_txn_abort(a reset txn). Catch MDB txn reuse/sync errors. Tweak comments/readability. Plug mdb_cursor_renew() memleak Update fixes for dbi_open/close, ITS#7515. Cleaner "Support mdb_txn_abort(a reset txn)". Plug txn leak and MDB_NOTLS slot leaks on error. Close cursors when commit(writer). Factor out code. Allow mdb_cursor_close() after readonly txn ends. Update MDB doc: Cursors, DB handles, data lifetime mdb_dcmp(): Assume the database has MDB_DUPSORT. MDB warning cleanup. Simplify/cleanup mdb_cursor_init, C_ALLOCD. Fix mdb_env_close(unopened MDB_env). ITS#7515 Fix nested transaction error handling. ITS#7589 mdb_cursor_put(): Update ovpage nodesize. More ITS#7589: Fix prev commit. More ITS#7589 followup: OVPAGES() -> mp_pages. Tweak mdb_page_malloc(),mdb_page_get() semantics. ITS#7515 Fix nested txn touch of subpage/ovpage. ITS#7598 mdb_dbi_open(named DB): Check mainDB flags. ITS#7598 Tweak MDB_<NEXT/PREV>_NODUP,fix mdb_stat. mdb_stat cleanup. Factor out mdb_find_oldest,mdb_dlist_free,dirty_list. Drop unused liblmdb MIDL-range support. Drop me_pgfree, add mdb_freelist_save(). More for ITS#7620 Fix mdb_ovpage_free(). Don't #define _GNU_SOURCE if already defined. ITS#7594 Invalidate a dropped MDB DB's cursors. ITS#7594 Fix MDB cursor tracking with subDBs. Clean up mdb_page_touch(), mdb_page_copy(). ITS#7515 Nested MDB txns: Inherit txn flags. ITS#7620: Keep empty IDLs. Tweak mdb_page_alloc(). Simplify mdb_page_alloc(). Rearrange MDB dirty page code. Factor out MDB variables/expressions, cleanup. Tweak MIDLs, catch errors. Catch more MDB errors. DPRINTF in mdb_env_reset0. Fix Windows I/O. Improve MDB error handling, drop seek calls. Tweak I/O, fix last commit. Makefile/user-macro comments. Factor out some vars, simplify. Fix alloc/free issues. Silence more uninit warnings Simplify MDB_cursor: Drop flags C_ALLOCD,C_SHADOW. ITS#7515 Fix tracking of parent txn's cursors. ITS#7515 Reject conflicting page versions. Do not follow uninited cursors' page pointers. Save freelist using proper mdb_cursor_put(). Simplify: Always set C_UNTRACK for tracked cursors. Also set/clear P_KEEP in parent txn's cursors Clarify doc: mdb_copy, nested txns, mdb_drop(). Tweak comments Silence warnings Fix mdb_reader_pid(). MDB_LOCK_VERSION -> MDB_LOCK_FORMAT. Factor out MDB_env. Set MDB_TXN_ERROR when inconsistent txn state Fix page spilling when MDB_WRITEMAP. Fix mdb_ovpage_free() vs. spill. mdb_cursorpages_mark: Mark current txn and no more. Re-fix reader-pid code Replace unpredictable EINVAL error returns. mdb_txn_commit(): Always commit if MDB_TXN_SPILLS. Replace EINVALs with generalized MDB_INCOMPATIBLE. Refuse ops on bad txns Avoid compiling debug args with C90 compilers. Tweak ITS#7615 fix: Obey strict-aliasing rules. Simplify last commits mdb_page_spill(): Fix nested txn mt_dirty_room mdb_page_unspill(): Fix dirty_room in nested txn ITS#7682 mdb_env_copy(): Avoid Linux O_DIRECT bug. Update MDB documentation and comments. mdb_pages_xkeep(): Reformat, use common flag mask ITS#7515 mdb_pages_xkeep(): Careful about xcursors. ITS#7515 Fix mt_dirty_room in nested txns. ITS#7515 Fix mdb_txn_commit(nested txn with spills). ITS#7515 Fix mdb_page_unspill() in nested txn. mdb_page_unspill(): Rename local vars. Rename SWAP() to avoid conflict with sqlightning. Tweak MDB_DEBUG output Clean up and simplify mdb_page_search(). Drop unneeded code. Set subDB DBI=parent DBI, fix MDB_DUPSORT delete. Set MDB_xcursor DB_DIRTY, clear md_name. Optimize code holding reader mutex mdb_node_add(): Plug page leak when MDB_PAGE_FULL. mdb_cursor_sibling(): Fix error result Maintain MDB_cursor.mc_top Add Caveat: Readers need write access. Whitespace. mdb_cursor_put(): Factor out code. Kill a label. ITS#7713 Handle bigger OS page sizes Fix MDB_MAXKEYSIZE doc: Account for MDB_DUPSORT. Add MDB_CLEANMEM option. Clean up mdb_copy. Warning cleanup. Add EVEN(): Micro-optimize "up to multiple of 2". put(MDB_MULTIPLE): Skip existing item cleanly. ITS#7589 Fix delete(uneven-sized MDB_DUPFIXED data). ITS#7589 Fix me_nodemax and related node sizes. Relax MDB_MAXKEYSIZE for existing data. Raise safe max MDB_MAXKEYSIZE. Support dynamic max MDB keysize. Fix mdb_reader_list() and its spec. Comment MDB_node, mdb_page_unspill, mdb_update_key Replace MDB_node.mn_offset[], to ease debugging. Fix commit "Raise safe max MDB_MAXKEYSIZE." Drop UNLOCK_MUTEX_R() on mdb_reader_pid() error ITS#7515 has been fixed. ITS#7665 Drop lmdb.h doc on non-overlapping flags. ITS#7772 Reduce spurious sub-page growth. Add mdb_dbg_pgno(): (sub)pagenum for debug output. sprintf format: pid_t need not be an int. ITS#7771 mdb_cursor_del0(): Fix xcursor tracking. mdb_page_malloc(): Move VGMEMP_ALLOC before memset Invalidate the txn on corruption/internal errors Wrap __func__ in mdb_func_ ITS#7377 Invalidate txn on page-allocation errors Add mdb_env_<set,get>_userctx() ITS#7775 Add mdb_env_set_assert() ITS#7775 Drop <assert.h>, drop/replace assert()s. Revert "ITS#7772 Reduce spurious sub-page growth." ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT. mtest[46]: Use different DBs when different flags. mtest*.c, sample-*.c: Add/note error checks. Doxygen fixes mdb_txn_renew0(): Fix un-mutexed me_flags update. mdb_page_list(): Support & display all page types More checks for closed DBIs and invalidated txns. Move code out of mdb_cursor_del0() and mdb_del(). Don't use non-existent node info in branch/leaf2 Handle more errors. Invalidate txn if needed. mtest: Accept an MDB_NOTFOUND case Tweak mdb_mid2l_insert() call from ITS#7775. Update MDB_PANIC description Revert "Update MDB_PANIC description" (thinko). ITS#7829 Simplify last commit More ITS#7793 Check key->mv_size with MDB_CURRENT. Document DBI issues, extend MDB_BAD_VALSIZE. ITS#7771 mdb_cursor_put doc: Cursor moves on error ITS#7861 Re-fix MDB_db.md_entries. ITS#7834 Fix MDB_MULTIPLE writing multiple keys. Simplify MDB_MULTIPLE Factor out MDB_TXN_ERROR More for big MDB_MAXKEYSIZE with MDB_DUPSORT. Factor out mdb_cmp_clong() Comment ~MDB_APPEND, from earlier commit message. Fix MDB_GET_MULTIPLE/MDB_NEXT_MULTIPLE doc. ITS#7793 Re-fix MDB_CURRENT doc: Match current item Fix mdb_page_loose() vs. mdb_page_flush(). Fixes for loose pages ITS#7713 cleanups ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment. MDB_DEVEL doxygen fix MDB_MAXKEYSIZE = 0 (dynamic value) when MDB_DEVEL ITS#7789 Fix mdb_env_write_meta(). Fix mdb_copy & co when MDB pagesize < OS pagesize Split out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN Fix loose pages in mdb_freelist_save(). Microoptimize loose pages ITS#7961,#7987 Re-fix txn init. Simplify recent changes a bit. Fix comments mdb_strerror: Silence warning @ Windows Fix WIN32 -> _WIN32 make clean: remove *.lo ITS#8021 doc: Don't mix MDB_WRITEMAP + non-WRITEMAP Restrictive mdb_copy file mode. Fix EACCES description mdb_txn_renew(): Clear error from previous txn Reformat mdb_dbi_open() doc for clarity Cleanup mtest* and sample-*. ITS#8117 Fix MDB_INTEGERDUP keysize doc + md_dcmp mtest*.c: Fix MDB_NOOVERWRITE, plug cursor leak ITS#8157 mdb_txn_renew0(): init after error checks ITS#8157 ITS#8156 Fix MDB_MAXKEYSIZE doc ITS#8156 more CHANGES Clarify mdb_env_open() doc of 'mode' param Update for mdb_env_open ITS#8181 Verify that records are/aren't DBs. ITS#8200 Fix mdb_midl_shrink() usage, return void ITS#7377 mdb_env_init_meta(): Catch calloc error ITS#8263 streamline prev patch For ITS#7789: Ensure mapsize >= pages in use. Try to avoid an invalid datafile after failed init Copy some env flags to txn. Factor out flags. Cleanup MDB_env.me_txn0. Set/clear mp_pad, md_pad (MDB_DUPFIXED data size). Whitespace (align with mdb.master) Add MDB_USE_POSIX_MUTEX. Support robust mutexes/locks. Add mdb_mutex_t etc. mdb_env_get_flags(): Hide internal flags Use mdb_cmp_long() for FREE_DBI mdb_drop0(): Omit scanning DUPSORT sub-DB leaves mdb_txn_begin() cleanup Simpler mdb_txn_commit(). Simpler mdb_node_shrink() Simpler mdb_drop(). Simpler flag/DBI checks and MDB_DEBUG Add DB_USRVALID, to avoid 'dbi == FREE_DBI' tests More ESECT declarations Simpler mdb_node_add() Factor me_metas[toggle] out to mdb_env_pick_meta() Move code into mdb_txn_end(). Was mdb_txn_reset0. Catch most uses of finished/parent txns. Cleanup: Drop !mt_dbxs hack, use MDB_TXN_FINISHED ITS#7377 Always notice env error on txn startup. ITS#7377 Catch mdb_put() to blocked/read-only txns Kill magic numbers for NUM_METAS, databases Simpler mdb_env_write_meta() Fix typo in mdb_tassert(). ITS#7209 Default MDB_DSYNC = O_SYNC if no O_DSYNC ITS#7209 ITS#8312 Fix loose pages in commit(nested txn) CURSOR_TMP_[UN]TRACK() -> WITH_CURSOR_TRACKING() mdb_dbi_open(): Catch strdup failure ITS#8334 Fix MDB_APPENDDUP vs. rewrite(single item) ITS#8334, mdb_copy ITS#7992 Fix memleak in prev change
Heiko Becker (2): ITS#8168 Allow passing AR to make ITS#8169 Allow passing mandir to make install
Howard Chu (702): Checkpoint Use header when some fields are unspecified Use NOSYNC flag Return statistics for a DB Fix splits, cursor navigation, newpage flags Cursor testing Fix P_INVALID def Add locking support Use shmat for lock region instead of mmap Use toggling meta page instead of always appending Log txnID in msgs meta init Save a byte in nodesz More cursor tests, fail... Drop header page Re-use old pages More fixes for seeking Fix db_stat stuff No longer need -lssl Use an environment directory Tweak comment about overflow allocations More prep for subdatabases Replace ulong with ULONG macro Start DB restructuring More subDBs, compiles now Tweaks to txn handling Fixup metapage writes Fix free page re-use Tweak mt_dbxs array More subdb stuff, add cursor_last() Use STAILQ instead of SIMPLEQ More sub-db stuff Save free-list in DB Additional debug, fixes Add some legalese Use BDB cursor terminology Add cursor_prev Add explicit md_dirty flag to dbxs Setup context for sorted dups Don't malloc the free_pgs list every time Fix reader txn locking Add mdb_put for sorted dups Add mdb_del for sorted dups Add mdb_get for sorted dups Added cursor_get for sorted dups Sorted dups basically completed, needs testing Make sure subDB info is saved after writes More subDB stuff Valgrind complaints Parameter cleanup More subDB fixes Header cleanup Consolidate stat functions More DB checks Cleanup, add mdb_cursor_count() Allow setting DB flags on main DB Add MDB_INTEGERKEY db flag Sorted dup fixes Start using as a library Make a shared library too Portability tweak Add mtest2 and 3 Add another FIXME comment Rename idl to midl Tweak MDB_val to match struct berval Move MDB_VERSION to mdb.h, use major/minor/patch Rationalize mdbenv namespace Add mdb_version() Silence stupid warning Better defs for locker structures Minor cleanup Use O_DSYNC on metafd. Use IDL2 for dirty page list Get rid of AC_MEMCPY Error cleanup Protect err codes allow silent commit of read-only TXNs Add mdb_strerror(), mdb_env_set_flags() Update DB tables on commit even if no dirty pages More txn/cursor cleanup Fix dupsort fetch Sub-DB init/dirty fixes Fix overflow page read Fix multi-page commits Don't alloc in cursor_push/pop Sorted dups fix Fix cursor_set for dups Keep re-using dpages instead of freeing them Set MINKEYS to 2 First cut at DUPFIXED support Add txn_reset / txn_renew More debug output More debug, fix MDB_DEL_DUP Fix free page reclaim and dbs table update Fix update of big data items Fix mdb_split, tweak split_indx if space is tight Reduce excessive memcpy in mdb_split Tweak locks, fix race conditions Cleanup, fix freelist alloc API cleanup, doxygen docs for public API Ugly-as-sin initial Windows port Tweak docs Cleanup midl, start documenting internals Fix mdb_split, fix MDB_GET_BOTH Add MDB_{FIRST,LAST}_DUP for cursor_get Begin reimplementing basic ops as cursor ops Use cursor->mc_flags Cursors in-progress, broken Cursor stuff working, no major perf gain mdb_cmp refactoring Use mdb_midl_append/sort instead of _insert Minor cleanup Fix for mdb_cmp refactoring Change MDB_node to depend on 2-byte alignment Guarantee nodes are 2-byte aligned Fix search_node, add cintcmp Fix mdb_move_node again Cleanup unused code Further cursor-based restructuring Forgot to commit this Forgot to commit this Merge branch 'mdb.cursor' into mdb.master Fix previous commit Speedup cintcmp More docs More docs Partial revert, fix MDB_page definition Minor typos, additional clarification If put(NOOVERWRITE) exists, return existing data Fix 2e3bc39fa94f21d692d8e94183f57aef9122c487 Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap into mdb.master One more sub-cursor fix More cursor_init cleanup Minor tweaks, update relfunc behavior cursor_set/search_node tweaks, use intcmp when possible Tweak search_node inner loop to avoid LEAF2 checks Namespace cleanup More docs Minor doc cleanup Add MacOSX support MacOSX semaphore names are limited to 31 chars Doc tweak - txn flags Use FNV-1A hash to generate unique mutex names New sorted-dup subpage support API change, consistency check Add mdb_drop() for deleting a DB Fix typo, minor cleanup Fix mdb_drop() if not deleting the DB record Fix 09006ccec7928c9cf53bca6abe741e8d4d466c98 Fix last delete from a subpage Make sure 2 subpages fit in one real page Additional fix for prev commit Add support for nested transactions. Track changes to all cursors. Only free malloc'd cursors txn_abort/commit free all their cursors now. assert cleanup Reader table notes Add MDB_NOSUBDIR option Doc for the MDB_NOSUBDIR env option Make sure mdb_open actually got a sub-db record Tweak cursor adjustment code Add MDB_RESERVE mode Add mdb_cursor_txn() and mdb_cursor_dbi() for querying the cursor Fix 6e05ca17e988754ae90fde1921765ba130bb90b2 Add MDB_APPEND to avoid splitting full pages Add rudimentary MDB_MULTIPLE support for puts Fix freelist bug on page split Don't use Append mode when splits are caused by sub-page inserts Fix subcursor initialization Fix page_split with MDB_RESERVE Android/ARM portability Fix mdb_drop return Add Solaris byte-order detection Add dummy DKEY define More pgno alignment tweaks More Solaris warning cleanup Fix size check Use <inttypes.h> instead of <stdint.h> Add MDB_FDATASYNC to allow override to fsync if needed. s/DEBUG/MDB_DEBUG/ Alignment fixes for debug msgs More s/DEBUG/MDB_DEBUG/ Add $(SOLIBS) macro for shared lib dependencies ITS#7121 fix page splits when data+key size is too large Happy New Year! ITS#7126 fix cursor tracking code ITS#7121 fix page splits when newindx == 0 txn_commit must abort txn before returning errors Add valgrind support with -DUSE_VALGRIND Fix typo in e8e57be42107a877f604d0c4e67115ef37681a1b ITS#7160 get BYTE_ORDER def for HPUX (and Solaris) ITS#7196 use IOV_MAX if it's defined and small ITS#7190 fix merging of branch pages in deletes Fix typo in 7bc62c512824c0d54cc6885ea876c2764510eca2 ITS#7191 more alignment tweaks Update overflow page count when freeing overflow page ITS#7213 fix page_split with MDB_APPEND ITS#7210 partial fix ITS#7210 additional freelist fixes Add mfree utility to show the freelist Fix uninit'd xcursor index Fix entry counts in cursor_put Partial revert of prev commit ITS#7210 fix leak of overflow pages in freelist ITS#7219 fix for odd-aligned keys in mdb_update_key() ITS#7219 fixup keysize in previous commit ITS#7229 more mdb_page_split fixes ITS#7230 check and strip 0 length IDLs from freelist ITS#7229 additional tweaks ITS#7238 doc clarification ITS#7210 fix check for freelist changes ITS#7229 more mdb_page_split tweaks ITS#7251 fix Apple/Windows shared mutex naming Further clarification of mdb_open() More freelist tweaks, avoid referencing freed page ITS#7266 fix rebalance for LEAF2 pages Fix mdb_open, re-use closed dbi slots Tweak prev commit, use first unused slot Partial revert of 13c663f666ac28d7a72cbe644d393fc8d2dd9881 Tweak b802bcf7040110e1f0768d9d9ffa88dabd4bd5e7 Add MDB_NOMETASYNC env option. Fix: avoid direct reference to meta pages Revert "libmdb: Do not use the MDB_txbody.mtb_txnid field." Drop me_toggle, unused Windows thread callback support Fix ID -> MDB_ID due to 20baad4a207db5d0e84fc3a7409f216aefa59385 Fix darwin sem_open() names Don't use env-private copy of DB root nodes. Make sure cursor's DB is init'd if STALE. Append tweaks, page_split fixes Append mode still needs to detect duplicates Leave extra space when creating a fake page Skip unneeded calls to mdb_page_get in mdb_page_search Fix root split check in mdb_page_split Append mode should also detect keys that are too small Update sub-DBs before updating free list Fix 205bb17793e27be67098ccc80ee919165d7cb993 Fix txn_commit error check Write optimization: avoid copying unused portions of pages. Minor cleanup Loop thru all DBs and show their stats ITS#7364 also close the mutexes as needed ITS#7369 abort txn before exiting Fix mdb_audit() In mdb_audit, change assert to fprintf More for 57b5fbea491c956ed7a4ab7d12d802de2b29455d Add MDB_WRITEMAP to use a writable mmap Add msync support for WRITEMAP option msync should default to fully synchronous Update comments, bump version ITS#7385 fix mdb_page_split (again) ITS#7383 More explicit error codes Add MDB_SET_KEY cursor op Shared lib should depend on pthread Add mdb_cursor_renew() More for ab04c50a32275e216b82edaeeed50208cf49336b More for ab04c50a32275e216b82edaeeed50208cf49336b More for 48ef27b6f5c804eca6a9d27f8dd2b4ded376f8af ITS#7394 ignore WRITEMAP if RDONLY Add MDB_GET_CURRENT ITS#7385, check further for bad splits Fix mdb_drop Fix prev commit Add mdb_copy for backing up a DB environment Silence warning in prev commit Support read access on read-only media Make sure increases of mapsize are persisted Merge mdb_stata into mdb_stat Add mdb_env_info() to retrieve interesting env params Tweak output, add free page info Fix MDB_PREV Minor cleanup Make sure mdb_open flags are committed on main DB fix Windows mdb_env_copy(), WriteFile overflow Fix flag checks in mdb_open MDB_DEBUG tweak for old compilers Revert "MDB_DEBUG tweak for old compilers" Better fix for MDB_DEBUG tweak -- from hbf ITS#7432 fix typo in mdb_midl_sort Doc layout tweaks Drop unneeded #include <time.h> ITS#7455 use freelist for overflow pages Rename libmdb to liblmdb, lmdb.h Add install target Rename libmdb to liblmdb More retries for overflow page scan Fix mdb_midl_shrink Fix 5c1ee7f7ba9580d5ff29e74cbb02eee335c33d94 Rename mdb_open/close mdb_dbi_open/close Fix mdb_env_copy Freelist fixes Yet more retries for overflow page scan ITS#7465 fail if both -a and -s specified ITS#7467 add verbose freelist info ITS#7455 simplify Add error checks to txn_commit FIx prev commit Partially revert 65d40eb5d2c7c28df05e2c1d9b21d90e2a82e0b5 More for prev commit Make sure init_meta is at beginning of file Update version date init_meta should write mapsize Add initial mdb utility manpages Fix typo ITS#7455 don't give up so soon Happy New Year ITS#7491 check for filled dirty page list One more rename ITS#7485 check maxkeysize in mdb_cursor_put ITS#7485 more size checks ITS#7485 data sizes limited to 32 bits Fix MDB_CURRENT updating for dupsort items ITS#7505 Fix mdb_update_key when key is too big ITS#7505 fix prev commit, partial revert ITS#7511 make sure cursor is marked valid after successful put ITS#7515 fix mdb_dbi_open/close NULL key is allowed for MDB_CURRENT Revert "ITS#7515 fix mdb_dbi_open/close" Don't memmove freelist entry when chunking it Don't limit retries when coalescing freelist ITS#7515 update parent's mt_next_pgno on child commit Update error code instances Add $(DESTDIR) to make install target Add sample apps for comparison/education purposes Delete obsolete @todo Install manpages too Use CC/LDFLAGS to link the shared lib ITS#7536 fix mdb_rebalance Turn off readahead on main mmap ITS#7377 Fix c0f3d9b9a8864e744a8d1eaffc99bc86026d5351 Check for MADV_RANDOM Fix f97552a83abb085bc44b1b578e550d64c1313a4b Precalculate max size of a node ITS#7538 fallout from ITS#7536 fix. Silence stupid warnings ITS#7553 deinit cursor after deleting last node ITS#7553 better fix Fix CURSOR_LAST/CURSOR_PREV MSVC doesn't define mode_t Tweak mode_t def per Hallvard's suggestion ITS#7556 fix cursor_sibling for PREV More fixes for MDB_LAST Fix rebalance when collapsing root page Fix d3990eb2f8b2944782604a2ca7bd52e08c58fc3e Fix 6beaad52129da5353fd40c0ec48e6a78c4f71a2e ITS#7561 Fix mdb_drop bugs Fixes for dbi_open/close, ITS#7515 Revert "Fix 6beaad52129da5353fd40c0ec48e6a78c4f71a2e" Fix 227329c8e1fb818548f1936f5dc1349ffd73352 Revert "ITS#7570 fix MDB_GET_MULTIPLE and MDB_NEXT_MULTIPLE" Fix mdb_rebalance fix prev commit ITS#7574 blind fix Fix mdb_rebalance Add MDB_NOTLS envflag. Fix typo from 7aba5f5ab92a3fa92de001edb2c5ff4b04fd7d0d Fix MDB_LAST, reset cursor index Avoid assert Allow reading freelist while working on it Refactor mdb_midl_append, add mdb_midl_grow() Fix 66c839f0292d9aea12bf93ef6568ac2bd2ca0fc8 Doxygen cleanup Fix mdb_page_split - nested split Include <netinet/in.h> for Solaris 8 ITS#7594 De-init other subcursors in page_touch Add _M_IX86 macro for MSVC Add mdb_env_copyfd() Fix prev commit Add warning about interrupting copy Windows portability fixes for prev commit tweak mdb_copy, trap signals ITS#7594 better fix ITS#7594 more for subDB cursor fix Return fresh overflow pages to current pghead Make sure mdb_stat() gets valid data Fix CURSOR_NEXT/PREV on emptied DB Partial revert c2cac4588a40480c020d320b544bc5f8e72adb11 ITS#7623 Clear P_SUBP on conversion from fake page Fix uninit warnings, lseek usage ITS#7635 fix read txn potential data race ITS#7635 simplify 9474c1a0b62cad57b62855d09a201670385caa80 Tweaks for MDB_MULTIPLE Silence uninit warning in prev commit Fixup other cursors after delete op Cursors: Clear C_EOF when clearing C_INITIALIZED Fix rebalance/cursor adjust Fix env_read_header() on Windows Factor out parent Move code out to mdb_page_dirty() Delay touching pages until cursor is positioned. Spill pages, take 3 Bump version to 0.9.7 Tweak comments, defaults should be OK already Fix stale sub-cursor C_INIT flag More for stale sub-cursor flags Fix child txn dirty_room counts in spill/unspill Add mdb_dbi_flags() Add mdb_reader_list() Tweak mdb_stat(1) Tweak reader_list Split MDB_VERSION to MDB_DATA/MDB_LOCK VERSION Add mdb_reader_check() Tweak reader checks Get pid lock outside of rmutex Tweak reader_pid check ITS#7615 use shorter names for semaphores Tweak mdb_envinfo numreaders ITS#7652 fix I/O error checks Cleanup prev commit Fix typo in Win32 branch Tweak prev commit again Use proper printf format on Windows Add mdb_env_get_maxkeysize() Point to mdb.c for docs on macros in Makefile Fix obscure MDB_MULTIPLE bug Tweak NODUPDATA flag check Fix uninit'd mem ref in mdb_page_split ITS#7664 delete lockfile if there is no environment Revert "ITS#7664 delete lockfile if there is no environment" ITS#7664 better fix Silence warnings Update caveats now that mdb_reader_check exists Less aggressive page_spill Tweak prev commit ITS#7670 Tweak cursor_del0 ITS#7671 always return the key for a dup val Speedup deletion from spill_pgs Cleanup prev commit Another take on spill_pgs and deletes ITS#7672 fix mdb_dbi_flags Allow mdb_env_set_mapsize() on an open environment Bump version to 0.9.8 Add a changelog Remember if last cursor op was a delete More for 5f6fa8c04204888c4ff7ac6be1868d81ff4410a8 updates Release 0.9.8 ITS#7701 fix mdb_rebalance ITS#7681 fix 18a07eb7c2dc33372455a6040984cd6b699b41a5 Add MDB_NORDLOCK to omit all reader table usage More doc for MDB_NORDLOCK s/MDB_NORDLOCK/MDB_NOLOCK/ ITS#7715 always set filesize for WRITEMAP Fix mdb_env_set_mapsize() ITS#7718 invalidate cursor when DB gets emptied ITS#7722 fix page_merge for collapsing root Add MDB_USE_HASH ITS#7589 avoid wasting space in mdb_page_split ITS#7589 Cleanup unneeded vars in prev patch ITS#7589 Fix typo in prev commit ITS#7589 silence warnings ITS#7725 add MDB_NORDAHEAD flag for env_open Fix 01dfb2083dd690707a062cabb03801bfad1a6859 Add mdb_env_get_fd() Bump to 0.9.9 ITS#7733 check cursor index before cursor_del ITS#7736 fix regression in ITS#7733 patch ITS#7589 another mdb_page_split fix More for #7589 Fix cursor_del0 cursor fixup Fix prev commit, cursor depth comparison Change default mem init behavior Clarify WRITEMAP / NOMEMINIT Windows/Win64/MSVC tweaks Bump to 0.9.10 Doc tweak ITS#7756 keysizes were wrong in mdb_update_key Fix GET_BOTH_RANGE ITS#7775 cleanup unnecessary assert()s ITS#7775 Cleanup mdb_node_del() Make sure mapsize changes take effect on Windows. Note changes for LMDB 0.9.11 Bump version to 0.9.11 ITS#7815 fix mdb_page_split ITS#7815 more for page_split Rename samples Revert "ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT." ITS#7828, #7793 More for ITS#7793/7828 ITS#7793/7828 ITS#7829 fix rebalance ITS#7829 more for prev commit ITS#7829 more for mdb_rebalance Fix mdb_rebalance collapsing root ITS#7875 fix #7681 regression Bump version to 0.9.12 Remove bogus file Shorten search for ovpage space Tweak prev patch for ovpage search Fix some overwrite quirks Tweak ovpage search Bump to 0.9.13 Bump to 0.9.13 Add mdb_dump, update copyrights Add mdb_load Fix unhex Fix multiple subDBs Fix lineno count Fix mdb_node_move Fix mdb_page_merge Handle loose pages Silence ptr arithmetic warnings More cleanup for page_merge, page_loosen More for page_loosen Flesh out mdb_cmp_cint for BigEndians ITS#7879 Windows build compatibility Doc updates More MDB -> LMDB renames More for mdb_page_loose Setup for gcov/coverage testing Trap signals ITS#7886 fix mdb_copy write size More gcov setup tweaks All diagnostics should go to stderr dump/load need mapsize etc. Add mdb_env_copy2() Don't check LEAF2 pages for subnodes Larger WBUF still better on large DB Fix subDB/ovpage copying Windows compat Fix envinfo to return fixed map address More copyfd2 tweaks More tweaks to copyfd2 Rationalize mdb_env_copy2 API Play games with object file layout Windows fixes Compacting copy doesn't need to snapshot metas Set xcursor EOF after deleting last entry ITS#7713 handle 65536 byte page size Re-fix cursor EOF ITS#7892 Fix MacOSX section name Update LMDB version date/info ITS#7789 persist mapsize changes ITS#7789 update RESIZED errmsg text ITS#7825 add MDB_BAD_DBI error code ITS#7825 tweak prev commit ITS#7825 more Updates #7789, #7825 ITS#7825 more Revert "ITS#7789 update RESIZED errmsg text" ITS#7789 more Fix loading of printable dump Windows compat Windows fixes Zero-init copy2 writebuf More for cursor EOF ITS#7896 fix for mdb_env_map Typo Silence prototype warnings Fix mdb_cursor_count, reject uninit'd cursor Fix env_open mode bits Revert ITS#7789 commits, let's try this again. ITS#7789 doc updates more for mdb_cursor_count Update date Fix MIPS cache coherency on Linux ITS#7913 mdb_cursor_get(*_DUP) cleanup More for MIPS ITS#7793 update branch key if needed ITS#7793 doc update, again ITS#7793 more for branch key update More for MIPS Just use memalign, not posix_memalign ITS#7917 fix mdb_dbi_open ITS#7917 Partially revert ada26306992babeccad0c5443fbd76e28dd24cd6 More for MIPS ITS#7913 cleanup Use a single write txn Remember oldest reader txnid More for me_pgoldest Release 0.9.14 Silence some clang warnings Plug leak in 4d02c741b120786df1b87ee9ed49c1d3f9bc7522 ITS#7943 reinit txn flags new date Android also only has memalign Free write mutex earlier in txn_reset0 Must do dlist_free before releasing Wmutex Don't use -fPIC for static lib ITS#7952 .gitignore mdb_dump/load ITS#7953 .gitignore *.lo ITS#7955, #7671 fix MDB_PREV_DUP ITS#7956 fix compact of empty env ITS#7961 fix txn init ITS#7959 fix prev commit Clarify mdb_dbi_open doc Fix MDB_APPEND doc Update for 0.9.15 Hack for potential ext3/ext4 corruption issue Update for fsync hack Fix prev commit for env_sync0 Tweak fdatasync hack description Revert "Fix prev commit for env_sync0" fdatasync hack, again ITS#8021 env_sync is invalid in RDONLY env Tweak conditionals for fdatasync hack More cleanup for fdatasync hack Fix potential null deref (coverity) ITS#8066 fix mdb_load with large values ITS#8062 fix rebalance ITS#8062 ITS#8062 also handle subcursors ITS#8062 fix uninit'd cursor index ITS#8106 retry writes on EINTR ITS#8106 ITS#8109 fix mdb_cursor_del0 on empty DB ITS#8109 ITS#8117 fix INTEGERDUP compare ITS#8117 cleanup prev commit ITS#8117 Revert "ITS#8117 cleanup prev commit" ITS#8117 better fix Release 0.9.15 Return to Release Engineering ITS#8190 fix cursor EOF bug Updated for ITS#8181, #8190, #8200 ITS#8192 fix reference to EINTR on WIN32 from ITS#8106 Release 0.9.16 Another MDB_APPEND doc tweak Return to release engineering Doc tweak - MDB_RESERVE / DUPSORT incompat ITS#8237 fix ITS#7589 regression ITS#7377, 8237 ITS#8221 don't merge branch pages needlessly ITS#8221, #8256 ITS#8221 fix typos ITS#8259 fix usage ordering ITS#8258 fix rebalance/split ITS#8258 ITS#8264 fix cursor_del cursor tracking ITS#8263 fix cursor tracking in cursor_put ITS#7771 fix cursor tracking on fake pages ITS#8263, 8264, 7771, 8270 More misc updates Add MDB_NO_ROBUST to disable Robust Mutexes Use MDB_USE_ROBUST not MDB_NO_ROBUST ITS#8299 fix page_merge cursor fixup ITS#8238 fix DUPFIXED page_split ITS#8238, #8299 ITS#8300 fix rebalance after node_move ITS#8300 fix node_move ITS#8300 ITS#8300 more for node_move fixups ITS#8300 simplify ITS#8300 more for node_move ITS#8304 fix page_merge ITS#8304 Tweak robust mutex detection for glibc ITS#8310 fix mdb_rebalance cursor fixup ITS#8310 ITS#8311 fix page_split from update_key ITS#8311 add comment ITS#8311 ITS#8313 more for ITS#8062 ITS#8315 fix ovpage_free ITS#8312, 8313, 8315 ITS#8316 cursor fixup in page_merge Refix root split check from 5da67968afb599697d7557c13b65fb961ec408dd Silence some valgrind uninit warnings ITS#8300 more for prev commit ITS#8321 Fix del/dupsort ITS#8321 don't skip fixups on splitting cursors ITS#8321 fix mdb_cursor_chk() ITS#8321 fix mdb_cursor_shadow() ITS#8321 fix mdb_cursor_put ITS#8321 track temporary cursors ITS#8321 simplify page_split fixups ITS#8321 reorganize page_split fixups ITS#8316, 8321 ITS#8319, 8320 ITS#8323 Fix nested commit ITS#8321 deinit empty cursors ITS#8321 Fix mdb_cursor_set ITS#8321 mdb_put cursor needs tracking too ITS#8321 page_touch - don't fixup the cursor we just touched ITS#8321 More cursor fixup Cleanup C_DEL flag usage ITS#8321 fix ambiguity in cursor_put fixup ITS#8323 ITS#8168, 8169 ITS#8321 cleanup unused var Release 0.9.17 Return to releng ITS#8169 more Makefile tweaks ITS#8169, #8330 ITS#7992 cleanup Add Getting Started doc ITS#7992 cleanup, new docs, mdb_dbi_open cleanup MDB_RESERVE doc ITS#8336 fix page_search_root assert on FreeDB ITS#8336 MinGW warning cleanup: _MSC_VER -> _WIN32. Fixups for env_copy with large files Update WRITEMAP doc ITS#8355 fix subcursors ITS#8355, doc update ITS#8363 Fix off-by-one in mdb_midl_shrink ITS#8363 Happy New Year Release 0.9.18
Ignacio Casal Quinteiro (1): ITS#8270 win32: fix conversion error with MSVC
Jean-Christophe DUBOIS (1): ITS#7959 Check fstat return value
John Hewson (1): ITS#7656 fix install target
Kurt Zeilenga (1): Happy New Year!
Leo Yuriev (2): ITS#7841 trivial cleanup ITS#7987 fix excessive space for single write txn
Luke Yeager (1): ITS#8256 Create install directories if needed
Ondrej Kuznik (1): ITS#7369 mdb_stat: cleanup in case something went wrong.
Orivej Desh (2): ITS#8319 mdb_load: explain readline and mdb_cursor_put errors ITS#8320 mdb_load: fix loading data from simple text files
Oskari Timperi (1): ITS#7992 assume Windows paths are UTF-8
Pavel Medvedev (2): ITS#8067 add ssize_t typedef for MSVC ITS#8069 char* strings on Windows are ASCII
Quanah Gibson-Mount (4): Change retry to num times 60. Testing shows that on a known dataset, this has the same growth behavior as 2.4.39, while num times 20 resulted in significant growth. Happy New Year Happy New Year ITS#8066
Salvador Ortiz (4): mdb_del must ignore data if db not opened with MDB_DUPSORT ITS#7661 mdb_dbi_flags(): Allow main DBI ITS#7660 Add mdb_txn_env to API ITS#7682 In mdb_env_copy retry open if O_DIRECT fails
Sebastien Launay (1): ITS#8330 Fix robust mutex detection for glibc 2.10 and 2.11
leo@yuriev.ru (4): ITS#7969 LMDB: volatile. ITS#7970 LMDB: Critical Heisenbug ITS#7971 mdb_txn_renew0(): Fix new readers slots. ITS#7969 Use __sync_synchronize()
-----------------------------------------------------------------------