From 7685223bb9c311fabd5cb998dc7c33840c1c260c Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Sun, 20 Mar 2005 21:01:44 +0000
Subject: [PATCH] Add BDB 4.2.52 TXN patch

---
 build/BerkeleyDB42.patch | 51 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)
 create mode 100644 build/BerkeleyDB42.patch

diff --git a/build/BerkeleyDB42.patch b/build/BerkeleyDB42.patch
new file mode 100644
index 0000000000..ce203fb1bf
--- /dev/null
+++ b/build/BerkeleyDB42.patch
@@ -0,0 +1,51 @@
+Index: dbinc/db.in
+===================================================================
+RCS file: /var/CVSROOT/bdb42/dbinc/db.in,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -r1.1.1.1 -r1.2
+--- dbinc/db.in	25 Nov 2003 21:58:02 -0000	1.1.1.1
++++ dbinc/db.in	17 Jul 2004 16:07:23 -0000	1.2
+@@ -839,6 +839,7 @@
+ #define	TXN_NOWAIT	0x040		/* Do not wait on locks. */
+ #define	TXN_RESTORED	0x080		/* Transaction has been restored. */
+ #define	TXN_SYNC	0x100		/* Sync on prepare and commit. */
++#define	TXN_NOLOG	0x200		/* Do not log this transaction. */
+ 	u_int32_t	flags;
+ };
+ 
+Index: txn/txn.c
+===================================================================
+RCS file: /var/CVSROOT/bdb42/txn/txn.c,v
+retrieving revision 1.1.1.2
+retrieving revision 1.2
+diff -u -r1.1.1.2 -r1.2
+--- txn/txn.c	17 Dec 2003 21:43:53 -0000	1.1.1.2
++++ txn/txn.c	17 Jul 2004 16:07:27 -0000	1.2
+@@ -127,7 +127,7 @@
+ 	if ((ret = __db_fchk(dbenv,
+ 	    "txn_begin", flags,
+ 	    DB_DIRTY_READ | DB_TXN_NOWAIT |
+-	    DB_TXN_NOSYNC | DB_TXN_SYNC)) != 0)
++	    DB_TXN_NOSYNC | DB_TXN_SYNC | DB_TXN_NOT_DURABLE)) != 0)
+ 		return (ret);
+ 	if ((ret = __db_fcchk(dbenv,
+ 	    "txn_begin", flags, DB_TXN_NOSYNC, DB_TXN_SYNC)) != 0)
+@@ -193,6 +193,8 @@
+ 		F_SET(txn, TXN_SYNC);
+ 	if (LF_ISSET(DB_TXN_NOWAIT))
+ 		F_SET(txn, TXN_NOWAIT);
++	if (LF_ISSET(DB_TXN_NOT_DURABLE))
++		F_SET(txn, TXN_NOLOG);
+ 
+ 	if ((ret = __txn_begin_int(txn, 0)) != 0)
+ 		goto err;
+@@ -328,7 +330,7 @@
+ 	 * We should set this value when we write the first log record, not
+ 	 * here.
+ 	 */
+-	if (DBENV_LOGGING(dbenv))
++	if (DBENV_LOGGING(dbenv) && !F_ISSET(txn, TXN_NOLOG))
+ 		__log_txn_lsn(dbenv, &begin_lsn, NULL, NULL);
+ 	else
+ 		ZERO_LSN(begin_lsn);
-- 
GitLab