From: Christoph Berg Date: Sat, 19 Mar 2016 16:52:28 +0000 (+0100) Subject: Support 9.5 and recognize more flags X-Git-Tag: REL9_5_0 X-Git-Url: http://git.postgresql.org/gitweb/static/%22display.php?a=commitdiff_plain;h=10d27139e296d8b660ac7e451b4d528ea5f9ce66;p=pg_filedump.git Support 9.5 and recognize more flags 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 --- diff --git a/Makefile b/Makefile index 675e68c..6e8a48c 100644 --- 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 diff --git a/pg_filedump.c b/pg_filedump.c index 3f770bc..2179103 100644 --- a/pg_filedump.c +++ b/pg_filedump.c @@ -24,7 +24,7 @@ #include "pg_filedump.h" -#include "utils/pg_crc_tables.h" +#include /* 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 ? diff --git a/pg_filedump.h b/pg_filedump.h index 3477a78..6979ce0 100644 --- a/pg_filedump.h +++ b/pg_filedump.h @@ -22,8 +22,8 @@ * Original Author: Patrick Macdonald */ -#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"