SSI patch renumbered existing 2PC resource managers??

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Heikki Linnakangas <heikki@enterprisedb.com>, Kevin Grittner <Kevin.Grittner@wicourts.gov>, drkp@csail.mit.edu
Cc: pgsql-hackers@postgreSQL.org
Date: 2011-06-13T18:31:23Z
Lists: pgsql-hackers
So I finally started actually reading the SSI changes, and I am a tad
distressed by this:

diff --git a/src/include/access/twophase_rmgr.h b/src/include/access/twophase_rmgr.h
index a541d0f..1c7d8bb 100644
--- a/src/include/access/twophase_rmgr.h
+++ b/src/include/access/twophase_rmgr.h
@@ -23,8 +23,9 @@ typedef uint8 TwoPhaseRmgrId;
  */
 #define TWOPHASE_RM_END_ID			0
 #define TWOPHASE_RM_LOCK_ID			1
-#define TWOPHASE_RM_PGSTAT_ID		2
-#define TWOPHASE_RM_MULTIXACT_ID	3
+#define TWOPHASE_RM_PREDICATELOCK_ID	2
+#define TWOPHASE_RM_PGSTAT_ID		3
+#define TWOPHASE_RM_MULTIXACT_ID	4
 #define TWOPHASE_RM_MAX_ID			TWOPHASE_RM_MULTIXACT_ID
 
 extern const TwoPhaseCallback twophase_recover_callbacks[];

What was the rationale for changing the assignments of existing 2PC IDs?
So far as I can tell, that breaks pg_upgrade (if there are any open
prepared transactions) for no redeeming social benefit.  Is there a
reason why TWOPHASE_RM_PREDICATELOCK_ID has to be 2 and not at the end?

			regards, tom lane