3 Commits

Author SHA1 Message Date
10d27139e2 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
2016-03-19 17:52:28 +01:00
595225c836 Bump copyright year 2016-02-02 19:04:03 +01:00
9eb845b233 Use pg_config to determine include location
This seems to be the better default over hardcoding a random filesystem
location.
2016-02-02 19:03:55 +01:00
4 changed files with 24 additions and 14 deletions

View File

@ -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
@ -9,7 +9,8 @@ CFLAGS=-g -O -Wall -Wmissing-prototypes -Wmissing-declarations
# If working with a PG source directory, point PGSQL_INCLUDE_DIR to its
# src/include subdirectory. If working with an installed tree, point to
# the server include subdirectory, eg /usr/local/include/postgresql/server
PGSQL_INCLUDE_DIR=../../pgsql/src/include
PG_CONFIG=pg_config
PGSQL_INCLUDE_DIR=$(shell $(PG_CONFIG) --includedir-server)
DISTFILES= README.pg_filedump Makefile Makefile.contrib \
@ -18,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

View File

@ -2,7 +2,7 @@ pg_filedump - Display formatted contents of a PostgreSQL heap, index,
or control file.
Copyright (c) 2002-2010 Red Hat, Inc.
Copyright (c) 2011-2014, PostgreSQL Global Development Group
Copyright (c) 2011-2016, PostgreSQL Global Development Group
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -3,7 +3,7 @@
* formatting heap (data), index and control files.
*
* Copyright (c) 2002-2010 Red Hat, Inc.
* Copyright (c) 2011-2014, PostgreSQL Global Development Group
* Copyright (c) 2011-2016, PostgreSQL Global Development Group
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -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
@ -91,7 +91,7 @@ DisplayOptions(unsigned int validOptions)
printf
("\nVersion %s (for %s)"
"\nCopyright (c) 2002-2010 Red Hat, Inc."
"\nCopyright (c) 2011-2014, PostgreSQL Global Development Group\n",
"\nCopyright (c) 2011-2016, PostgreSQL Global Development Group\n",
FD_VERSION, FD_PG_VERSION);
printf
@ -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 ?

View File

@ -3,7 +3,7 @@
* formatting heap (data), index and control files.
*
* Copyright (c) 2002-2010 Red Hat, Inc.
* Copyright (c) 2011-2014, PostgreSQL Global Development Group
* Copyright (c) 2011-2016, PostgreSQL Global Development Group
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -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"