1 LMDB 0.9 Change Log 2 3 LMDB 0.9.33 Release (2024/05/21) 4 ITS#9037 mdb_page_search: fix error code when DBI record is missing 5 ITS#10198 For win32, stop passing ignored parameter 6 ITS#10212 Fix meta page usage by read only tools 7 8 LMDB 0.9.32 Release (2024/01/29) 9 ITS#9378 - Add ability to replay log and replay log tool 10 ITS#10095 - partial revert of ITS#9278. The patch was incorrect and introduced numerous race conditions. 11 ITS#10125 - mdb_load: fix cursor reinit in Append mode 12 ITS#10137 - Allow users to define MDB_IDL_LOGN 13 14 LMDB 0.9.31 Release (2023/07/10) 15 ITS#8447 - Fix cursor_put(MDB_CURRENT) on DUPSORT DB with different sized data 16 17 LMDB 0.9.30 Release (2023/02/08) 18 ITS#9806 - LMDB page_split: key threshold depends on page size 19 ITS#9916 - avoid gcc optimization bug on sparc64 linux 20 ITS#9919 - Mark infrequently used functions as cold 21 ITS#9723 - clear C_EOF on cursor with MDB_FIRST_DUP 22 ITS#9030 - Use sys/cachectl.h rather than asm/cachectl.h on mips 23 24 LMDB 0.9.29 Release (2021/03/16) 25 ITS#9461 refix ITS#9376 26 ITS#9500 fix regression from ITS#8662 27 28 LMDB 0.9.28 Release (2021/02/04) 29 ITS#8662 add -a append option to mdb_load 30 31 LMDB 0.9.27 Release (2020/10/26) 32 ITS#9376 fix repeated DUPSORT cursor deletes 33 34 LMDB 0.9.26 Release (2020/08/11) 35 ITS#9278 fix robust mutex cleanup for FreeBSD 36 37 LMDB 0.9.25 Release (2020/01/30) 38 ITS#9068 fix mdb_dump/load backslashes in printable content 39 ITS#9118 add MAP_NOSYNC for FreeBSD 40 ITS#9155 free mt_spill_pgs in non-nested txn on end 41 42 LMDB 0.9.24 Release (2019/07/24) 43 ITS#8969 Tweak mdb_page_split 44 ITS#8975 WIN32 fix writemap set_mapsize crash 45 ITS#9007 Fix loose pages in WRITEMAP 46 47 LMDB 0.9.23 Release (2018/12/19) 48 ITS#8756 Fix loose pages in dirty list 49 ITS#8831 Fix mdb_load flag init 50 ITS#8844 Fix mdb_env_close in forked process 51 Documentation 52 ITS#8857 mdb_cursor_del doesn't invalidate cursor 53 ITS#8908 GET_MULTIPLE etc don't change passed in key 54 55 LMDB 0.9.22 Release (2018/03/22) 56 Fix MDB_DUPSORT alignment bug (ITS#8819) 57 Fix regression with new db from 0.9.19 (ITS#8760) 58 Fix liblmdb to build on Solaris (ITS#8612) 59 Fix delete behavior with DUPSORT DB (ITS#8622) 60 Fix mdb_cursor_get/mdb_cursor_del behavior (ITS#8722) 61 62 LMDB 0.9.21 Release (2017/06/01) 63 Fix xcursor after cursor_del (ITS#8622) 64 65 LMDB 0.9.20 (Withdrawn) 66 Fix mdb_load with escaped plaintext (ITS#8558) 67 Fix mdb_cursor_last / mdb_put interaction (ITS#8557) 68 69 LMDB 0.9.19 Release (2016/12/28) 70 Fix mdb_env_cwalk cursor init (ITS#8424) 71 Fix robust mutexes on Solaris 10/11 (ITS#8339) 72 Tweak Win32 error message buffer 73 Fix MDB_GET_BOTH on non-dup record (ITS#8393) 74 Optimize mdb_drop 75 Fix xcursors after mdb_cursor_del (ITS#8406) 76 Fix MDB_NEXT_DUP after mdb_cursor_del (ITS#8412) 77 Fix mdb_cursor_put resetting C_EOF (ITS#8489) 78 Fix mdb_env_copyfd2 to return EPIPE on SIGPIPE (ITS#8504) 79 Fix mdb_env_copy with empty DB (ITS#8209) 80 Fix behaviors with fork (ITS#8505) 81 Fix mdb_dbi_open with mainDB cursors (ITS#8542) 82 Fix robust mutexes on kFreeBSD (ITS#8554) 83 Fix utf8_to_utf16 error checks (ITS#7992) 84 Fix F_NOCACHE on MacOS, error is non-fatal (ITS#7682) 85 Build 86 Make shared lib suffix overridable (ITS#8481) 87 Documentation 88 Cleanup doxygen nits 89 Note reserved vs actual mem/disk usage 90 91 92 LMDB 0.9.18 Release (2016/02/05) 93 Fix robust mutex detection on glibc 2.10-11 (ITS#8330) 94 Fix page_search_root assert on FreeDB (ITS#8336) 95 Fix MDB_APPENDDUP vs. rewrite(single item) (ITS#8334) 96 Fix mdb_copy of large files on Windows 97 Fix subcursor move after delete (ITS#8355) 98 Fix mdb_midl_shirnk off-by-one (ITS#8363) 99 Check for utf8_to_utf16 failures (ITS#7992) 100 Catch strdup failure in mdb_dbi_open 101 Build 102 Additional makefile var tweaks (ITS#8169) 103 Documentation 104 Add Getting Started page 105 Update WRITEMAP description 106 107 108 LMDB 0.9.17 Release (2015/11/30) 109 Fix ITS#7377 catch calloc failure 110 Fix ITS#8237 regression from ITS#7589 111 Fix ITS#8238 page_split for DUPFIXED pages 112 Fix ITS#8221 MDB_PAGE_FULL on delete/rebalance 113 Fix ITS#8258 rebalance/split assert 114 Fix ITS#8263 cursor_put cursor tracking 115 Fix ITS#8264 cursor_del cursor tracking 116 Fix ITS#8310 cursor_del cursor tracking 117 Fix ITS#8299 mdb_del cursor tracking 118 Fix ITS#8300 mdb_del cursor tracking 119 Fix ITS#8304 mdb_del cursor tracking 120 Fix ITS#7771 fakepage cursor tracking 121 Fix ITS#7789 ensure mapsize >= pages in use 122 Fix ITS#7971 mdb_txn_renew0() new reader slots 123 Fix ITS#7969 use __sync_synchronize on non-x86 124 Fix ITS#8311 page_split from update_key 125 Fix ITS#8312 loose pages in nested txn 126 Fix ITS#8313 mdb_rebalance dummy cursor 127 Fix ITS#8315 dirty_room in nested txn 128 Fix ITS#8323 dirty_list in nested txn 129 Fix ITS#8316 page_merge cursor tracking 130 Fix ITS#8321 cursor tracking 131 Fix ITS#8319 mdb_load error messages 132 Fix ITS#8320 mdb_load plaintext input 133 Added mdb_txn_id() (ITS#7994) 134 Added robust mutex support 135 Miscellaneous cleanup/simplification 136 Build 137 Create install dirs if needed (ITS#8256) 138 Fix ThreadProc decl on Win32/MSVC (ITS#8270) 139 Added ssize_t typedef for MSVC (ITS#8067) 140 Use ANSI apis on Windows (ITS#8069) 141 Use O_SYNC if O_DSYNC,MDB_DSYNC are not defined (ITS#7209) 142 Allow passing AR to make (ITS#8168) 143 Allow passing mandir to make install (ITS#8169) 144 145 LMDB 0.9.16 Release (2015/08/14) 146 Fix cursor EOF bug (ITS#8190) 147 Fix handling of subDB records (ITS#8181) 148 Fix mdb_midl_shrink() usage (ITS#8200) 149 150 LMDB 0.9.15 Release (2015/06/19) 151 Fix txn init (ITS#7961,#7987) 152 Fix MDB_PREV_DUP (ITS#7955,#7671) 153 Fix compact of empty env (ITS#7956) 154 Fix mdb_copy file mode 155 Fix mdb_env_close() after failed mdb_env_open() 156 Fix mdb_rebalance collapsing root (ITS#8062) 157 Fix mdb_load with large values (ITS#8066) 158 Fix to retry writes on EINTR (ITS#8106) 159 Fix mdb_cursor_del on empty DB (ITS#8109) 160 Fix MDB_INTEGERDUP key compare (ITS#8117) 161 Fix error handling (ITS#7959,#8157,etc.) 162 Fix race conditions (ITS#7969,7970) 163 Added workaround for fdatasync bug in ext3fs 164 Build 165 Don't use -fPIC for static lib 166 Update .gitignore (ITS#7952,#7953) 167 Cleanup for "make test" (ITS#7841), "make clean", mtest*.c 168 Misc. Android/Windows cleanup 169 Documentation 170 Fix MDB_APPEND doc 171 Fix MDB_MAXKEYSIZE doc (ITS#8156) 172 Fix mdb_cursor_put,mdb_cursor_del EACCES description 173 Fix mdb_env_sync(MDB_RDONLY env) doc (ITS#8021) 174 Clarify MDB_WRITEMAP doc (ITS#8021) 175 Clarify mdb_env_open doc 176 Clarify mdb_dbi_open doc 177 178 LMDB 0.9.14 Release (2014/09/20) 179 Fix to support 64K page size (ITS#7713) 180 Fix to persist decreased as well as increased mapsizes (ITS#7789) 181 Fix cursor bug when deleting last node of a DUPSORT key 182 Fix mdb_env_info to return FIXEDMAP address 183 Fix ambiguous error code from writing to closed DBI (ITS#7825) 184 Fix mdb_copy copying past end of file (ITS#7886) 185 Fix cursor bugs from page_merge/rebalance 186 Fix to dirty fewer pages in deletes (mdb_page_loose()) 187 Fix mdb_dbi_open creating subDBs (ITS#7917) 188 Fix mdb_cursor_get(_DUP) with single value (ITS#7913) 189 Fix Windows compat issues in mtests (ITS#7879) 190 Add compacting variant of mdb_copy 191 Add BigEndian integer key compare code 192 Add mdb_dump/mdb_load utilities 193 194 LMDB 0.9.13 Release (2014/06/18) 195 Fix mdb_page_alloc unlimited overflow page search 196 Documentation 197 Re-fix MDB_CURRENT doc (ITS#7793) 198 Fix MDB_GET_MULTIPLE/MDB_NEXT_MULTIPLE doc 199 200 LMDB 0.9.12 Release (2014/06/13) 201 Fix MDB_GET_BOTH regression (ITS#7875,#7681) 202 Fix MDB_MULTIPLE writing multiple keys (ITS#7834) 203 Fix mdb_rebalance (ITS#7829) 204 Fix mdb_page_split (ITS#7815) 205 Fix md_entries count (ITS#7861,#7828,#7793) 206 Fix MDB_CURRENT (ITS#7793) 207 Fix possible crash on Windows DLL detach 208 Misc code cleanup 209 Documentation 210 mdb_cursor_put: cursor moves on error (ITS#7771) 211 212 213 LMDB 0.9.11 Release (2014/01/15) 214 Add mdb_env_set_assert() (ITS#7775) 215 Fix: invalidate txn on page allocation errors (ITS#7377) 216 Fix xcursor tracking in mdb_cursor_del0() (ITS#7771) 217 Fix corruption from deletes (ITS#7756) 218 Fix Windows/MSVC build issues 219 Raise safe limit of max MDB_MAXKEYSIZE 220 Misc code cleanup 221 Documentation 222 Remove spurious note about non-overlapping flags (ITS#7665) 223 224 LMDB 0.9.10 Release (2013/11/12) 225 Add MDB_NOMEMINIT option 226 Fix mdb_page_split() again (ITS#7589) 227 Fix MDB_NORDAHEAD definition (ITS#7734) 228 Fix mdb_cursor_del() positioning (ITS#7733) 229 Partial fix for larger page sizes (ITS#7713) 230 Fix Windows64/MSVC build issues 231 232 LMDB 0.9.9 Release (2013/10/24) 233 Add mdb_env_get_fd() 234 Add MDB_NORDAHEAD option 235 Add MDB_NOLOCK option 236 Avoid wasting space in mdb_page_split() (ITS#7589) 237 Fix mdb_page_merge() cursor fixup (ITS#7722) 238 Fix mdb_cursor_del() on last delete (ITS#7718) 239 Fix adding WRITEMAP on existing env (ITS#7715) 240 Fix nested txns (ITS#7515) 241 Fix mdb_env_copy() O_DIRECT bug (ITS#7682) 242 Fix mdb_cursor_set(SET_RANGE) return code (ITS#7681) 243 Fix mdb_rebalance() cursor fixup (ITS#7701) 244 Misc code cleanup 245 Documentation 246 Note that by default, readers need write access 247 248 249 LMDB 0.9.8 Release (2013/09/09) 250 Allow mdb_env_set_mapsize() on an open environment 251 Fix mdb_dbi_flags() (ITS#7672) 252 Fix mdb_page_unspill() in nested txns 253 Fix mdb_cursor_get(CURRENT|NEXT) after a delete 254 Fix mdb_cursor_get(DUP) to always return key (ITS#7671) 255 Fix mdb_cursor_del() to always advance to next item (ITS#7670) 256 Fix mdb_cursor_set(SET_RANGE) for tree with single page (ITS#7681) 257 Fix mdb_env_copy() retry open if O_DIRECT fails (ITS#7682) 258 Tweak mdb_page_spill() to be less aggressive 259 Documentation 260 Update caveats since mdb_reader_check() added in 0.9.7 261 262 LMDB 0.9.7 Release (2013/08/17) 263 Don't leave stale lockfile on failed RDONLY open (ITS#7664) 264 Fix mdb_page_split() ref beyond cursor depth 265 Fix read txn data race (ITS#7635) 266 Fix mdb_rebalance (ITS#7536, #7538) 267 Fix mdb_drop() (ITS#7561) 268 Misc DEBUG macro fixes 269 Add MDB_NOTLS envflag 270 Add mdb_env_copyfd() 271 Add mdb_txn_env() (ITS#7660) 272 Add mdb_dbi_flags() (ITS#7661) 273 Add mdb_env_get_maxkeysize() 274 Add mdb_env_reader_list()/mdb_env_reader_check() 275 Add mdb_page_spill/unspill, remove hard txn size limit 276 Use shorter names for semaphores (ITS#7615) 277 Build 278 Fix install target (ITS#7656) 279 Documentation 280 Misc updates for cursors, DB handles, data lifetime 281 282 LMDB 0.9.6 Release (2013/02/25) 283 Many fixes/enhancements 284 285 LMDB 0.9.5 Release (2012/11/30) 286 Renamed from libmdb to liblmdb 287 Many fixes/enhancements 288