diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/pg_controldata/README.pg_controldata | 32 | ||||
-rw-r--r-- | contrib/pg_controldata/pg_controldata.c | 147 |
2 files changed, 0 insertions, 179 deletions
diff --git a/contrib/pg_controldata/README.pg_controldata b/contrib/pg_controldata/README.pg_controldata deleted file mode 100644 index 85ca0e1467a..00000000000 --- a/contrib/pg_controldata/README.pg_controldata +++ /dev/null @@ -1,32 +0,0 @@ -I had a need to read such things as the backend locale and the catalog -version number from the current database, and couldn't find any existing -program to do that. - -The attached utility produces output like this: - -$ pg_controldata -pg_control version number: 71 -Catalog version number: 200101061 -Database state: IN_PRODUCTION -pg_control last modified: Sat Mar 10 00:07:55 2001 -Current log file id: 0 -Next log file segment: 9 -Latest checkpoint location: 0/88CAA20 -Prior checkpoint location: 0/70A5D48 -Latest checkpoint's REDO location: 0/88CAA20 -Latest checkpoint's UNDO location: 0/0 -Latest checkpoint's StartUpID: 22 -Latest checkpoint's NextXID: 4711 -Latest checkpoint's NextOID: 444704 -Time of latest checkpoint: Sat Mar 10 00:07:52 2001 -Database block size: 8192 -Blocks per segment of large relation: 131072 -LC_COLLATE: C -LC_CTYPE: C - - -To access the pg_control file, the program must be run as the Postgres user, -and PGDATA must be set correctly in its environment. - --- -Oliver Elphick <olly@lfix.co.uk> diff --git a/contrib/pg_controldata/pg_controldata.c b/contrib/pg_controldata/pg_controldata.c deleted file mode 100644 index b1ac873d241..00000000000 --- a/contrib/pg_controldata/pg_controldata.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * pg_controldata - * - * reads the data from $PGDATA/global/pg_control - * - * copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001; - * licence: BSD - * - * $Header: /cvsroot/pgsql/contrib/pg_controldata/Attic/pg_controldata.c,v 1.7 2002/08/14 03:01:43 momjian Exp $ - */ -#include "postgres.h" - -#include <unistd.h> -#include <time.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> - -#include "catalog/pg_control.h" - - -static const char * -dbState(DBState state) -{ - switch (state) - { - case DB_STARTUP: - return "STARTUP"; - case DB_SHUTDOWNED: - return "SHUTDOWNED"; - case DB_SHUTDOWNING: - return "SHUTDOWNING"; - case DB_IN_RECOVERY: - return "IN_RECOVERY"; - case DB_IN_PRODUCTION: - return "IN_PRODUCTION"; - } - return "unrecognized status code"; -} - - -int -main(int argc, char *argv[]) -{ - ControlFileData ControlFile; - int fd; - char ControlFilePath[MAXPGPATH]; - char *DataDir; - crc64 crc; - char pgctime_str[32]; - char ckpttime_str[32]; - - if (argc > 1) - DataDir = argv[1]; - else - DataDir = getenv("PGDATA"); - if (DataDir == NULL) - { - fprintf(stderr, "no data directory specified\n"); - exit(1); - } - - snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir); - - if ((fd = open(ControlFilePath, O_RDONLY)) == -1) - { - perror("Failed to open $PGDATA/global/pg_control for reading"); - exit(2); - } - - if (read(fd, &ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData)) - { - perror("Failed to read $PGDATA/global/pg_control"); - exit(2); - } - close(fd); - - /* Check the CRC. */ - INIT_CRC64(crc); - COMP_CRC64(crc, - (char *) &ControlFile + sizeof(crc64), - sizeof(ControlFileData) - sizeof(crc64)); - FIN_CRC64(crc); - - if (!EQ_CRC64(crc, ControlFile.crc)) - printf("WARNING: Calculated CRC checksum does not match value stored in file.\n" - "Either the file is corrupt, or it has a different layout than this program\n" - "is expecting. The results below are untrustworthy.\n\n"); - - strftime(pgctime_str, 32, "%c", - localtime(&(ControlFile.time))); - strftime(ckpttime_str, 32, "%c", - localtime(&(ControlFile.checkPointCopy.time))); - - printf("pg_control version number: %u\n" - "Catalog version number: %u\n" - "Database state: %s\n" - "pg_control last modified: %s\n" - "Current log file id: %u\n" - "Next log file segment: %u\n" - "Latest checkpoint location: %X/%X\n" - "Prior checkpoint location: %X/%X\n" - "Latest checkpoint's REDO location: %X/%X\n" - "Latest checkpoint's UNDO location: %X/%X\n" - "Latest checkpoint's StartUpID: %u\n" - "Latest checkpoint's NextXID: %u\n" - "Latest checkpoint's NextOID: %u\n" - "Time of latest checkpoint: %s\n" - "Database block size: %u\n" - "Blocks per segment of large relation: %u\n" - "Maximum length of names: %u\n" - "Maximum number of function arguments: %u\n" - "Date/time type storage: %s\n" - "Maximum length of locale name: %u\n" - "LC_COLLATE: %s\n" - "LC_CTYPE: %s\n", - - ControlFile.pg_control_version, - ControlFile.catalog_version_no, - dbState(ControlFile.state), - pgctime_str, - ControlFile.logId, - ControlFile.logSeg, - ControlFile.checkPoint.xlogid, - ControlFile.checkPoint.xrecoff, - ControlFile.prevCheckPoint.xlogid, - ControlFile.prevCheckPoint.xrecoff, - ControlFile.checkPointCopy.redo.xlogid, - ControlFile.checkPointCopy.redo.xrecoff, - ControlFile.checkPointCopy.undo.xlogid, - ControlFile.checkPointCopy.undo.xrecoff, - ControlFile.checkPointCopy.ThisStartUpID, - ControlFile.checkPointCopy.nextXid, - ControlFile.checkPointCopy.nextOid, - ckpttime_str, - ControlFile.blcksz, - ControlFile.relseg_size, - ControlFile.nameDataLen, - ControlFile.funcMaxArgs, - (ControlFile.enableIntTimes ? - "64-bit integers" : "Floating point"), - ControlFile.localeBuflen, - ControlFile.lc_collate, - ControlFile.lc_ctype); - - return (0); -} |