Support 9.5 and recognize more flags REL9_5_0
authorChristoph Berg <myon@debian.org>
Sat, 19 Mar 2016 16:52:28 +0000 (17:52 +0100)
committerChristoph Berg <myon@debian.org>
Sat, 19 Mar 2016 16:52:28 +0000 (17:52 +0100)
This follows the CRC32 macro renames in 9.5 (we do not attempt to
maintain support for the older versions), adds support for the
DB_SHUTDOWNED_IN_RECOVERY dbState, and adds support for missing BTree
and GIN page flags.

Satoshi Nagayasu

Makefile
pg_filedump.c
pg_filedump.h

index 675e68cca8e9c8377fb280210a7410a4601ad76b..6e8a48c947065470e57600845cc2207da2b65a0e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 # View README.pg_filedump first
 
 # note this must match version macros in pg_filedump.h
-FD_VERSION=9.3.0
+FD_VERSION=9.5.0
 
 CC=gcc
 CFLAGS=-g -O -Wall -Wmissing-prototypes -Wmissing-declarations
@@ -19,7 +19,7 @@ DISTFILES= README.pg_filedump Makefile Makefile.contrib \
 all: pg_filedump
 
 pg_filedump: pg_filedump.o
-       ${CC} ${CFLAGS} -o pg_filedump pg_filedump.o
+       ${CC} ${CFLAGS} -o pg_filedump pg_filedump.o -lpgport
 
 pg_filedump.o: pg_filedump.c
        ${CC} ${CFLAGS} -I${PGSQL_INCLUDE_DIR} pg_filedump.c -c
index 3f770bc9c008c34985b52d5f10e7958b7cf30894..2179103ad06c6acbbe02d0141d1c89cc91a7ea86 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "pg_filedump.h"
 
-#include "utils/pg_crc_tables.h"
+#include <utils/pg_crc.h>
 
 /*     checksum_impl.h uses Assert, which doesn't work outside the server */
 #undef Assert
@@ -1132,6 +1132,8 @@ FormatSpecial()
                                        strcat(flagString, "SPLITEND|");
                                if (btreeSection->btpo_flags & BTP_HAS_GARBAGE)
                                        strcat(flagString, "HASGARBAGE|");
+                               if (btreeSection->btpo_flags & BTP_INCOMPLETE_SPLIT)
+                                       strcat(flagString, "INCOMPLETESPLIT|");
                                if (strlen(flagString))
                                        flagString[strlen(flagString) - 1] = '\0';
 
@@ -1216,6 +1218,10 @@ FormatSpecial()
                                        strcat(flagString, "LIST|");
                                if (ginSection->flags & GIN_LIST_FULLROW)
                                        strcat(flagString, "FULLROW|");
+                               if (ginSection->flags & GIN_INCOMPLETE_SPLIT)
+                                       strcat(flagString, "INCOMPLETESPLIT|");
+                               if (ginSection->flags & GIN_COMPRESSED)
+                                       strcat(flagString, "COMPRESSED|");
                                if (strlen(flagString))
                                        flagString[strlen(flagString) - 1] = '\0';
                                printf(" GIN Index Section:\n"
@@ -1340,9 +1346,9 @@ FormatControl()
                char       *dbState;
 
                /* Compute a local copy of the CRC to verify the one on disk */
-               INIT_CRC32(crcLocal);
-               COMP_CRC32(crcLocal, buffer, offsetof(ControlFileData, crc));
-               FIN_CRC32(crcLocal);
+               INIT_CRC32C(crcLocal);
+               COMP_CRC32C(crcLocal, buffer, offsetof(ControlFileData, crc));
+               FIN_CRC32C(crcLocal);
 
                /* Grab a readable version of the database state */
                switch (controlData->state)
@@ -1353,6 +1359,9 @@ FormatControl()
                        case DB_SHUTDOWNED:
                                dbState = "SHUTDOWNED";
                                break;
+                       case DB_SHUTDOWNED_IN_RECOVERY:
+                               dbState = "SHUTDOWNED_IN_RECOVERY";
+                               break;
                        case DB_SHUTDOWNING:
                                dbState = "SHUTDOWNING";
                                break;
@@ -1400,7 +1409,7 @@ FormatControl()
                           "           Maximum Index Keys: %u\n"
                           "             TOAST Chunk Size: %u\n"
                           "   Date and Time Type Storage: %s\n\n",
-                          EQ_CRC32(crcLocal,
+                          EQ_CRC32C(crcLocal,
                                                controlData->crc) ? "Correct" : "Not Correct",
                           controlData->pg_control_version,
                           (controlData->pg_control_version == PG_CONTROL_VERSION ?
index 3477a78a26933a0328f231793765b82a4f35f6e8..6979ce06775d05e67fd189a3f40e6f038ad386b3 100644 (file)
@@ -22,8 +22,8 @@
  * Original Author: Patrick Macdonald <patrickm@redhat.com>
  */
 
-#define FD_VERSION     "9.4.0"         /* version ID of pg_filedump */
-#define FD_PG_VERSION  "PostgreSQL 9.4.x"              /* PG version it works with */
+#define FD_VERSION     "9.5.0"         /* version ID of pg_filedump */
+#define FD_PG_VERSION  "PostgreSQL 9.5.x"              /* PG version it works with */
 
 #include "postgres.h"