Hello community, here is the log from the commit of package lmdb for openSUSE:Factory checked in at 2019-04-01 12:32:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lmdb (Old) and /work/SRC/openSUSE:Factory/.lmdb.new.25356 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lmdb" Mon Apr 1 12:32:32 2019 rev:15 rq:688581 version:0.9.23 Changes: -------- --- /work/SRC/openSUSE:Factory/lmdb/lmdb.changes 2018-10-12 13:07:41.167557088 +0200 +++ /work/SRC/openSUSE:Factory/.lmdb.new.25356/lmdb.changes 2019-04-01 12:32:36.233786395 +0200 @@ -1,0 +2,15 @@ +Mon Mar 25 21:10:07 UTC 2019 - Stefan BrĂ¼ns <stefan.bru...@rwth-aachen.de> + +- LMDB 0.9.23 Release (2018/12/19) + * ITS#8756 Fix loose pages in dirty list + * ITS#8831 Fix mdb_load flag init + * ITS#8844 Fix mdb_env_close in forked process + * Documentation + + ITS#8857 mdb_cursor_del doesn't invalidate cursor + + ITS#8908 GET_MULTIPLE etc don't change passed in key +- Drop upstream 0001-ITS-8756-remove-loose-pg-from-dirty-list-in-freelist.patch +- Cleanup: + * Use %license, drop %defattr + * Use https for Url tag + +------------------------------------------------------------------- Old: ---- 0001-ITS-8756-remove-loose-pg-from-dirty-list-in-freelist.patch LMDB_0.9.22.tar.gz New: ---- LMDB_0.9.23.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lmdb.spec ++++++ --- /var/tmp/diff_new_pack.6KMDc1/_old 2019-04-01 12:32:36.701786515 +0200 +++ /var/tmp/diff_new_pack.6KMDc1/_new 2019-04-01 12:32:36.705786516 +0200 @@ -1,7 +1,7 @@ # # spec file for package lmdb # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,10 +20,10 @@ Summary: Lightning Memory-Mapped Database Manager License: OLDAP-2.8 Group: Productivity/Databases/Tools -%define lname liblmdb-0_9_22 -Version: 0.9.22 +%define lname liblmdb-0_9_23 +Version: 0.9.23 Release: 0 -Url: http://symas.com/mdb/ +Url: https://symas.com/mdb/ #Git-Clone: git://git.openldap.org/openldap mdb.master Source: https://github.com/LMDB/lmdb/archive/LMDB_%version.tar.gz @@ -35,8 +35,6 @@ Patch2: liblmdb-implicit-decl.patch # PATCH-FIX-OPENSUSE - Build and link to shared library Patch3: Makefile-build-use-shared-lib.patch -# PATCH-FIX-UPSTREAM - Fix crash due to failed assertion, freed pages ended up on the dirty page list twice -Patch4: 0001-ITS-8756-remove-loose-pg-from-dirty-list-in-freelist.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?rhel_version} == 700 @@ -89,7 +87,6 @@ %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 %build cd libraries/liblmdb @@ -109,19 +106,16 @@ %postun -n %lname -p /sbin/ldconfig %files -%defattr(-,root,root) %doc libraries/liblmdb/CHANGES %doc libraries/liblmdb/COPYRIGHT -%doc libraries/liblmdb/LICENSE +%license libraries/liblmdb/LICENSE %{_bindir}/* %doc %{_mandir}/man1/*.1.gz %files -n %lname -%defattr(-,root,root) %_libdir/liblmdb-%version.so %files devel -%defattr(-,root,root) %_includedir/* %_libdir/liblmdb.so ++++++ LMDB_0.9.22.tar.gz -> LMDB_0.9.23.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lmdb-LMDB_0.9.22/libraries/liblmdb/CHANGES new/lmdb-LMDB_0.9.23/libraries/liblmdb/CHANGES --- old/lmdb-LMDB_0.9.22/libraries/liblmdb/CHANGES 2018-03-22 16:23:05.000000000 +0100 +++ new/lmdb-LMDB_0.9.23/libraries/liblmdb/CHANGES 2018-12-19 16:51:03.000000000 +0100 @@ -1,6 +1,14 @@ LMDB 0.9 Change Log -LMDB 0.9.22 Release (2018-03-22) +LMDB 0.9.23 Release (2018/12/19) + ITS#8756 Fix loose pages in dirty list + ITS#8831 Fix mdb_load flag init + ITS#8844 Fix mdb_env_close in forked process + Documentation + ITS#8857 mdb_cursor_del doesn't invalidate cursor + ITS#8908 GET_MULTIPLE etc don't change passed in key + +LMDB 0.9.22 Release (2018/03/22) Fix MDB_DUPSORT alignment bug (ITS#8819) Fix regression with new db from 0.9.19 (ITS#8760) Fix liblmdb to build on Solaris (ITS#8612) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lmdb-LMDB_0.9.22/libraries/liblmdb/lmdb.h new/lmdb-LMDB_0.9.23/libraries/liblmdb/lmdb.h --- old/lmdb-LMDB_0.9.22/libraries/liblmdb/lmdb.h 2018-03-22 16:23:05.000000000 +0100 +++ new/lmdb-LMDB_0.9.23/libraries/liblmdb/lmdb.h 2018-12-19 16:51:03.000000000 +0100 @@ -200,7 +200,7 @@ /** Library minor version */ #define MDB_VERSION_MINOR 9 /** Library patch version */ -#define MDB_VERSION_PATCH 22 +#define MDB_VERSION_PATCH 23 /** Combine args a,b,c into a single integer for easy version comparisons */ #define MDB_VERINT(a,b,c) (((a) << 24) | ((b) << 16) | (c)) @@ -210,7 +210,7 @@ MDB_VERINT(MDB_VERSION_MAJOR,MDB_VERSION_MINOR,MDB_VERSION_PATCH) /** The release date of this library version */ -#define MDB_VERSION_DATE "March 21, 2018" +#define MDB_VERSION_DATE "December 19, 2018" /** A stringifier for the version info */ #define MDB_VERSTR(a,b,c,d) "LMDB " #a "." #b "." #c ": (" d ")" @@ -370,7 +370,7 @@ MDB_GET_BOTH, /**< Position at key/data pair. Only for #MDB_DUPSORT */ MDB_GET_BOTH_RANGE, /**< position at key, nearest data. Only for #MDB_DUPSORT */ MDB_GET_CURRENT, /**< Return key/data at current cursor position */ - MDB_GET_MULTIPLE, /**< Return key and up to a page of duplicate data items + MDB_GET_MULTIPLE, /**< Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for #MDB_NEXT_MULTIPLE. Only for #MDB_DUPFIXED */ MDB_LAST, /**< Position at last key/data item */ @@ -379,7 +379,7 @@ MDB_NEXT, /**< Position at next data item */ MDB_NEXT_DUP, /**< Position at next data item of current key. Only for #MDB_DUPSORT */ - MDB_NEXT_MULTIPLE, /**< Return key and up to a page of duplicate data items + MDB_NEXT_MULTIPLE, /**< Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for #MDB_NEXT_MULTIPLE. Only for #MDB_DUPFIXED */ MDB_NEXT_NODUP, /**< Position at first data item of next key */ @@ -390,7 +390,7 @@ MDB_SET, /**< Position at specified key */ MDB_SET_KEY, /**< Position at specified key, return key + data */ MDB_SET_RANGE, /**< Position at first key greater than or equal to specified key. */ - MDB_PREV_MULTIPLE /**< Position at previous page and return key and up to + MDB_PREV_MULTIPLE /**< Position at previous page and return up to a page of duplicate data items. Only for #MDB_DUPFIXED */ } MDB_cursor_op; @@ -1510,6 +1510,10 @@ /** @brief Delete current key/data pair * * This function deletes the key/data pair to which the cursor refers. + * This does not invalidate the cursor, so operations such as MDB_NEXT + * can still be used on it. + * Both MDB_NEXT and MDB_GET_CURRENT will return the same record after + * this operation. * @param[in] cursor A cursor handle returned by #mdb_cursor_open() * @param[in] flags Options for this operation. This parameter * must be set to 0 or one of the values described here. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lmdb-LMDB_0.9.22/libraries/liblmdb/mdb.c new/lmdb-LMDB_0.9.23/libraries/liblmdb/mdb.c --- old/lmdb-LMDB_0.9.22/libraries/liblmdb/mdb.c 2018-03-22 16:23:05.000000000 +0100 +++ new/lmdb-LMDB_0.9.23/libraries/liblmdb/mdb.c 2018-12-19 16:51:03.000000000 +0100 @@ -3094,10 +3094,41 @@ * we may be unable to return them to me_pghead. */ MDB_page *mp = txn->mt_loose_pgs; + MDB_ID2 *dl = txn->mt_u.dirty_list; + unsigned x; if ((rc = mdb_midl_need(&txn->mt_free_pgs, txn->mt_loose_count)) != 0) return rc; - for (; mp; mp = NEXT_LOOSE_PAGE(mp)) + for (; mp; mp = NEXT_LOOSE_PAGE(mp)) { mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno); + /* must also remove from dirty list */ + if (txn->mt_flags & MDB_TXN_WRITEMAP) { + for (x=1; x<=dl[0].mid; x++) + if (dl[x].mid == mp->mp_pgno) + break; + mdb_tassert(txn, x <= dl[0].mid); + } else { + x = mdb_mid2l_search(dl, mp->mp_pgno); + mdb_tassert(txn, dl[x].mid == mp->mp_pgno); + } + dl[x].mptr = NULL; + mdb_dpage_free(env, mp); + } + { + /* squash freed slots out of the dirty list */ + unsigned y; + for (y=1; dl[y].mptr && y <= dl[0].mid; y++); + if (y <= dl[0].mid) { + for(x=y, y++;;) { + while (!dl[y].mptr && y <= dl[0].mid) y++; + if (y > dl[0].mid) break; + dl[x++] = dl[y++]; + } + dl[0].mid = x-1; + } else { + /* all slots freed */ + dl[0].mid = 0; + } + } txn->mt_loose_pgs = NULL; txn->mt_loose_count = 0; } @@ -5063,7 +5094,7 @@ if (env->me_fd != INVALID_HANDLE_VALUE) (void) close(env->me_fd); if (env->me_txns) { - MDB_PID_T pid = env->me_pid; + MDB_PID_T pid = getpid(); /* Clearing readers is done in this function because * me_txkey with its destructor must be disabled first. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lmdb-LMDB_0.9.22/libraries/liblmdb/mdb_load.c new/lmdb-LMDB_0.9.23/libraries/liblmdb/mdb_load.c --- old/lmdb-LMDB_0.9.22/libraries/liblmdb/mdb_load.c 2018-03-22 16:23:05.000000000 +0100 +++ new/lmdb-LMDB_0.9.23/libraries/liblmdb/mdb_load.c 2018-12-19 16:51:03.000000000 +0100 @@ -68,6 +68,7 @@ { char *ptr; + flags = 0; while (fgets(dbuf.mv_data, dbuf.mv_size, stdin) != NULL) { lineno++; if (!strncmp(dbuf.mv_data, "VERSION=", STRLENOF("VERSION="))) { @@ -374,7 +375,6 @@ while(!Eof) { MDB_val key, data; int batch = 0; - flags = 0; if (!dohdr) { dohdr = 1; ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.6KMDc1/_old 2019-04-01 12:32:36.805786542 +0200 +++ /var/tmp/diff_new_pack.6KMDc1/_new 2019-04-01 12:32:36.805786542 +0200 @@ -1 +1 @@ -liblmdb-0_9_22 +liblmdb-0_9_23