Code review for multixact bugfix
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 28 Apr 2015 17:52:29 +0000 (14:52 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 28 Apr 2015 17:52:29 +0000 (14:52 -0300)
Reword messages, rename a confusingly named function.

Per Robert Haas.

src/backend/access/transam/multixact.c

index 7a5095723fc69180c89b99229c1d03f8000ec3c4..c8faa17703065eddf334584ef10596b6d05f9fcb 100644 (file)
@@ -347,7 +347,7 @@ static void ExtendMultiXactMember(MultiXactOffset offset, int nmembers);
 static void DetermineSafeOldestOffset(MultiXactId oldestMXact);
 static bool MultiXactOffsetWouldWrap(MultiXactOffset boundary,
                         MultiXactOffset start, uint32 distance);
-static MultiXactOffset read_offset_for_multi(MultiXactId multi);
+static MultiXactOffset find_multixact_start(MultiXactId multi);
 static void WriteMZeroPageXlogRec(int pageno, uint8 info);
 
 
@@ -1074,12 +1074,12 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
        ereport(ERROR,
                (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
                 errmsg("multixact \"members\" limit exceeded"),
-                errdetail_plural("This command would create a multixact with %u members, which exceeds remaining space (%u member.)",
-                                 "This command would create a multixact with %u members, which exceeds remaining space (%u members.)",
+                errdetail_plural("This command would create a multixact with %u members, but the remaining space is only enough for %u member.",
+                                 "This command would create a multixact with %u members, but the remaining space is only enough for %u members.",
                            MultiXactState->offsetStopLimit - nextOffset - 1,
                                  nmembers,
                           MultiXactState->offsetStopLimit - nextOffset - 1),
-                errhint("Execute a database-wide VACUUM in database with OID %u, with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings.",
+                errhint("Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings.",
                         MultiXactState->oldestMultiXactDB)));
    else if (MultiXactOffsetWouldWrap(MultiXactState->offsetStopLimit,
                                      nextOffset,
@@ -1089,7 +1089,7 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
                 errmsg("database with OID %u must be vacuumed before %d more multixact members are used",
                        MultiXactState->oldestMultiXactDB,
                    MultiXactState->offsetStopLimit - nextOffset + nmembers),
-                errhint("Execute a database-wide VACUUM in that database, with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings.")));
+                errhint("Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings.")));
 
    ExtendMultiXactMember(nextOffset, nmembers);
 
@@ -2487,7 +2487,7 @@ DetermineSafeOldestOffset(MultiXactId oldestMXact)
     * one-segment hole at a minimum.  We start spewing warnings a few
     * complete segments before that.
     */
-   oldestOffset = read_offset_for_multi(oldestMXact);
+   oldestOffset = find_multixact_start(oldestMXact);
    /* move back to start of the corresponding segment */
    oldestOffset -= oldestOffset / MULTIXACT_MEMBERS_PER_PAGE * SLRU_PAGES_PER_SEGMENT;
 
@@ -2543,20 +2543,16 @@ MultiXactOffsetWouldWrap(MultiXactOffset boundary, MultiXactOffset start,
     *-----------------------------------------------------------------------
     */
    if (start < boundary)
-   {
        return finish >= boundary || finish < start;
-   }
    else
-   {
        return finish >= boundary && finish < start;
-   }
 }
 
 /*
- * Read the offset of the first member of the given multixact.
+ * Find the starting offset of the given MultiXactId.
  */
 static MultiXactOffset
-read_offset_for_multi(MultiXactId multi)
+find_multixact_start(MultiXactId multi)
 {
    MultiXactOffset offset;
    int         pageno;
@@ -2709,7 +2705,7 @@ TruncateMultiXact(void)
     * First, compute the safe truncation point for MultiXactMember. This is
     * the starting offset of the oldest multixact.
     */
-   oldestOffset = read_offset_for_multi(oldestMXact);
+   oldestOffset = find_multixact_start(oldestMXact);
 
    /*
     * To truncate MultiXactMembers, we need to figure out the active page