Commit afa5780e authored by Michael Meskes's avatar Michael Meskes

Imported Upstream version 9.2.0

parent 878ac33a
# View README.pg_filedump first # View README.pg_filedump first
# note this must match macro in pg_filedump.h # note this must match version macros in pg_filedump.h
FD_VERSION=9.1.0 FD_VERSION=9.2.0
CC=gcc CC=gcc
CFLAGS=-g -O -Wall -Wmissing-prototypes -Wmissing-declarations CFLAGS=-g -O -Wall -Wmissing-prototypes -Wmissing-declarations
# PGSQL MUST POINT TO pgsql SOURCE DIRECTORY # If working with a PG source directory, point PGSQL_INCLUDE_DIR to its
PGSQL=../../pgsql # 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
CRC_SRC_DIR=${PGSQL}/src/backend/utils/hash
INCLUDE_DIR=${PGSQL}/src/include
DISTFILES= README.pg_filedump Makefile Makefile.contrib \ DISTFILES= README.pg_filedump Makefile Makefile.contrib \
pg_filedump.h pg_filedump.c pg_filedump.h pg_filedump.c
all: pg_filedump all: pg_filedump
pg_filedump: pg_filedump.o pg_crc.o pg_filedump: pg_filedump.o
${CC} ${CFLAGS} -o pg_filedump pg_filedump.o pg_crc.o ${CC} ${CFLAGS} -o pg_filedump pg_filedump.o
pg_filedump.o: pg_filedump.c pg_filedump.o: pg_filedump.c
${CC} ${CFLAGS} -I${INCLUDE_DIR} pg_filedump.c -c ${CC} ${CFLAGS} -I${PGSQL_INCLUDE_DIR} pg_filedump.c -c
pg_crc.o: ${CRC_SRC_DIR}/pg_crc.c
${CC} ${CFLAGS} -I${INCLUDE_DIR} ${CRC_SRC_DIR}/pg_crc.c -c
dist: dist:
rm -rf pg_filedump-${FD_VERSION} pg_filedump-${FD_VERSION}.tar.gz rm -rf pg_filedump-${FD_VERSION} pg_filedump-${FD_VERSION}.tar.gz
......
PROGRAM = pg_filedump PROGRAM = pg_filedump
OBJS = pg_filedump.o pg_crc.o OBJS = pg_filedump.o
EXTRA_CLEAN = pg_crc.c
DOCS = README.pg_filedump DOCS = README.pg_filedump
...@@ -15,6 +13,3 @@ top_builddir = ../.. ...@@ -15,6 +13,3 @@ top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk include $(top_srcdir)/contrib/contrib-global.mk
endif endif
pg_crc.c: $(top_srcdir)/src/backend/utils/hash/pg_crc.c
rm -f $@ && $(LN_S) $< .
...@@ -2,7 +2,7 @@ pg_filedump - Display formatted contents of a PostgreSQL heap, index, ...@@ -2,7 +2,7 @@ pg_filedump - Display formatted contents of a PostgreSQL heap, index,
or control file. or control file.
Copyright (c) 2002-2010 Red Hat, Inc. Copyright (c) 2002-2010 Red Hat, Inc.
Copyright (c) 2011, PostgreSQL Global Development Group Copyright (c) 2011-2012, PostgreSQL Global Development Group
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
...@@ -36,22 +36,24 @@ corrupt, you need a method of forcing a block size. ...@@ -36,22 +36,24 @@ corrupt, you need a method of forcing a block size.
Compile/Installation: Compile/Installation:
To compile pg_filedump, you will need to have a properly configured To compile pg_filedump, you will need to have a properly configured
PostgreSQL source tree for the appropriate PostgreSQL major version. PostgreSQL source tree or complete install tree (with include files)
of the appropriate PostgreSQL major version.
There are two makefiles included in this package. Makefile is a There are two makefiles included in this package. Makefile is a standalone
standalone makefile for pg_filedump. Alter the PGSQL variable to point makefile for pg_filedump. Alter its PGSQL_INCLUDE_DIR variable to point to
to the PostgreSQL source tree. Makefile.contrib can be used if this the PostgreSQL include files. Makefile.contrib can be used if this package
package was untarred in the contrib directory of a PostgreSQL build tree. was untarred in the contrib directory of a PostgreSQL build tree.
make make
make install (if in the contrib directory) make install (if using Makefile.contrib)
It is also possible to use Makefile.contrib without being in the contrib It is also possible to use Makefile.contrib without being in the contrib
directory: directory:
make -f Makefile.contrib USE_PGXS=1 make -f Makefile.contrib USE_PGXS=1
This will not eliminate the need to have a complete source tree, though. This method requires that the pg_config program be in your PATH, but should
not require any manual adjustments of the Makefile.
------------------------------------------------------------------------ ------------------------------------------------------------------------
...@@ -85,3 +87,6 @@ The following options are valid for control files: ...@@ -85,3 +87,6 @@ The following options are valid for control files:
-c Interpret the file listed as a control file -c Interpret the file listed as a control file
-f Display formatted content dump along with interpretation -f Display formatted content dump along with interpretation
-S Force block size to [blocksize] -S Force block size to [blocksize]
In most cases it's recommended to use the -i and -f options to get
the most useful dump output.
This diff is collapsed.
/* /*
* pg_filedump.h - PostgreSQL file dump utility for dumping and * pg_filedump.h - PostgreSQL file dump utility for dumping and
* formatting heap (data), index and control files. * formatting heap (data), index and control files.
* *
* Copyright (c) 2002-2010 Red Hat, Inc. * Copyright (c) 2002-2010 Red Hat, Inc.
* Copyright (c) 2011, PostgreSQL Global Development Group * Copyright (c) 2011-2012, PostgreSQL Global Development Group
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
...@@ -19,24 +19,24 @@ ...@@ -19,24 +19,24 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
* Original Author: Patrick Macdonald <patrickm@redhat.com> * Original Author: Patrick Macdonald <patrickm@redhat.com>
*/ */
#define FD_VERSION "9.1.0" /* version ID of pg_filedump */ #define FD_VERSION "9.2.0" /* version ID of pg_filedump */
#define FD_PG_VERSION "PostgreSQL 9.1.x" /* PG version it works with */ #define FD_PG_VERSION "PostgreSQL 9.2.x" /* PG version it works with */
#include "postgres.h" #include "postgres.h"
#include <time.h> #include <time.h>
#include <ctype.h> #include <ctype.h>
#include "access/gin.h"
#include "access/gin_private.h" #include "access/gin_private.h"
#include "access/gist.h" #include "access/gist.h"
#include "access/hash.h" #include "access/hash.h"
#include "access/htup.h" #include "access/htup.h"
#include "access/itup.h" #include "access/itup.h"
#include "access/nbtree.h" #include "access/nbtree.h"
#include "access/spgist_private.h"
#include "catalog/pg_control.h" #include "catalog/pg_control.h"
#include "storage/bufpage.h" #include "storage/bufpage.h"
...@@ -53,16 +53,18 @@ typedef enum ...@@ -53,16 +53,18 @@ typedef enum
} }
blockSwitches; blockSwitches;
static int blockStart = -1; // -R [start]: Block range start static int blockStart = -1; // -R [start]: Block range start
static int blockEnd = -1; // -R [end]: Block range end static int blockEnd = -1; // -R [end]: Block range end
// Options for Item formatting operations // Options for Item formatting operations
static unsigned int itemOptions = 0; static unsigned int itemOptions = 0;
typedef enum typedef enum
{ {
ITEM_DETAIL = 0x00000001, // -i: Display interpreted items ITEM_DETAIL = 0x00000001, // -i: Display interpreted items
ITEM_HEAP = 0x00000002, // -y: Blocks contain heap items ITEM_HEAP = 0x00000002, // -y: Blocks contain HeapTuple items
ITEM_INDEX = 0x00000004 // -x: Blocks contain index items ITEM_INDEX = 0x00000004, // -x: Blocks contain IndexTuple items
ITEM_SPG_INNER = 0x00000008, // Blocks contain SpGistInnerTuple items
ITEM_SPG_LEAF = 0x00000010 // Blocks contain SpGistLeafTuple items
} }
itemSwitches; itemSwitches;
...@@ -80,12 +82,13 @@ controlSwitches; ...@@ -80,12 +82,13 @@ controlSwitches;
typedef enum typedef enum
{ {
SPEC_SECT_NONE, // No special section on block SPEC_SECT_NONE, // No special section on block
SPEC_SECT_SEQUENCE, // Sequence info in special section SPEC_SECT_SEQUENCE, // Sequence info in special section
SPEC_SECT_INDEX_BTREE, // BTree index info in special section SPEC_SECT_INDEX_BTREE, // BTree index info in special section
SPEC_SECT_INDEX_HASH, // Hash index info in special section SPEC_SECT_INDEX_HASH, // Hash index info in special section
SPEC_SECT_INDEX_GIST, // GIST index info in special section SPEC_SECT_INDEX_GIST, // GIST index info in special section
SPEC_SECT_INDEX_GIN, // GIN index info in special section SPEC_SECT_INDEX_GIN, // GIN index info in special section
SPEC_SECT_ERROR_UNKNOWN, // Unknown error SPEC_SECT_INDEX_SPGIST, // SP-GIST index info in special section
SPEC_SECT_ERROR_UNKNOWN, // Unknown error
SPEC_SECT_ERROR_BOUNDARY // Boundary error SPEC_SECT_ERROR_BOUNDARY // Boundary error
} }
specialSectionTypes; specialSectionTypes;
...@@ -105,7 +108,7 @@ typedef enum ...@@ -105,7 +108,7 @@ typedef enum
optionReturnCodes; optionReturnCodes;
// Simple macro to check for duplicate options and then set // Simple macro to check for duplicate options and then set
// an option flag for later consumption // an option flag for later consumption
#define SET_OPTION(_x,_y,_z) if (_x & _y) \ #define SET_OPTION(_x,_y,_z) if (_x & _y) \
{ \ { \
rc = OPT_RC_DUPLICATE; \ rc = OPT_RC_DUPLICATE; \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment