From 10d27139e296d8b660ac7e451b4d528ea5f9ce66 Mon Sep 17 00:00:00 2001 From: Christoph Berg Date: Sat, 19 Mar 2016 17:52:28 +0100 Subject: [PATCH] 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 --- Makefile | 4 ++-- pg_filedump.c | 19 ++++++++++++++----- pg_filedump.h | 4 ++-- 3 files changed, 18 insertions(+), 9 deletions(-) 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"