From 4ca50e071024421e3b75bf7e48fda08141360636 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Tue, 25 Jun 2013 16:36:29 -0400
Subject: [PATCH] Avoid inconsistent type declaration

Clang 3.3 correctly complains that a variable of type enum
MultiXactStatus cannot hold a value of -1, which makes sense.  Change
the declared type of the variable to int instead, and apply casting as
necessary to avoid the warning.

Per notice from Andres Freund
---
 src/backend/access/heap/heapam.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index e88dd30c648..1531f3b479a 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -116,12 +116,15 @@ static bool ConditionalMultiXactIdWait(MultiXactId multi,
  * update them).  This table (and the macros below) helps us determine the
  * heavyweight lock mode and MultiXactStatus values to use for any particular
  * tuple lock strength.
+ *
+ * Don't look at lockstatus/updstatus directly!  Use get_mxact_status_for_lock
+ * instead.
  */
 static const struct
 {
 	LOCKMODE	hwlock;
-	MultiXactStatus lockstatus;
-	MultiXactStatus updstatus;
+	int			lockstatus;
+	int			updstatus;
 }
 
 			tupleLockExtraInfo[MaxLockTupleMode + 1] =
@@ -3847,7 +3850,7 @@ simple_heap_update(Relation relation, ItemPointer otid, HeapTuple tup)
 static MultiXactStatus
 get_mxact_status_for_lock(LockTupleMode mode, bool is_update)
 {
-	MultiXactStatus retval;
+	int		retval;
 
 	if (is_update)
 		retval = tupleLockExtraInfo[mode].updstatus;
@@ -3858,7 +3861,7 @@ get_mxact_status_for_lock(LockTupleMode mode, bool is_update)
 		elog(ERROR, "invalid lock tuple mode %d/%s", mode,
 			 is_update ? "true" : "false");
 
-	return retval;
+	return (MultiXactStatus) retval;
 }
 
 
-- 
GitLab