To get CRC functionality in a client program, you now need to link with
libpgcommon instead of libpgport. The CRC code has nothing to do with
portability, so libpgcommon is a better home. (libpgcommon didn't exist
when pg_crc.c was originally moved to src/port.)
Remove the possibility to get CRC functionality by just #including
pg_crc_tables.h. I'm not aware of any extensions that actually did that and
couldn't simply link with libpgcommon.
This also moves the pg_crc.h header file from src/include/utils to
src/include/common, which will require changes to any external programs
that currently does #include "utils/pg_crc.h". That seems acceptable, as
include/common is clearly the right home for it now, and the change needed
to any such programs is trivial.
#include "access/gist.h"
#include "access/skey.h"
#include "catalog/pg_type.h"
#include "access/gist.h"
#include "access/skey.h"
#include "catalog/pg_type.h"
-#include "utils/pg_crc.h"
+#include "common/pg_crc.h"
#define TOLOWER(x) (x)
#endif
#define TOLOWER(x) (x)
#endif
-#include "utils/pg_crc.h"
+#include "common/pg_crc.h"
#include "crc32.h"
unsigned int
#include "crc32.h"
unsigned int
+#include "common/pg_crc.h"
#include "libpq/pqformat.h"
#include "miscadmin.h"
#include "tsearch/ts_locale.h"
#include "libpq/pqformat.h"
#include "miscadmin.h"
#include "tsearch/ts_locale.h"
override CPPFLAGS := -DFRONTEND $(CPPFLAGS)
LIBS += $(PTHREAD_LIBS)
override CPPFLAGS := -DFRONTEND $(CPPFLAGS)
LIBS += $(PTHREAD_LIBS)
-OBJS_COMMON = exec.o pg_lzcompress.o pgfnames.o psprintf.o relpath.o \
+OBJS_COMMON = exec.o pg_crc.o pg_lzcompress.o pgfnames.o psprintf.o relpath.o \
rmtree.o string.o username.o wait_error.o
OBJS_FRONTEND = $(OBJS_COMMON) fe_memutils.o
rmtree.o string.o username.o wait_error.o
OBJS_FRONTEND = $(OBJS_COMMON) fe_memutils.o
/*-------------------------------------------------------------------------
*
/*-------------------------------------------------------------------------
*
- * pg_crc_tables.h
- * Polynomial lookup tables for CRC macros
- *
- * We make these tables available as a .h file so that programs not linked
- * with libpgport can still use the macros in pg_crc.h. They just need
- * to #include this header as well.
+ * pg_crc.c
+ * PostgreSQL CRC support
*
* See Ross Williams' excellent introduction
* A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS, available from
* http://www.ross.net/crc/download/crc_v3.txt or several other net sites.
*
*
* See Ross Williams' excellent introduction
* A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS, available from
* http://www.ross.net/crc/download/crc_v3.txt or several other net sites.
*
- * These lookup tables are for normal, not "reflected", in Williams' terms,
- * CRC.
- *
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * src/include/utils/pg_crc_tables.h
+ *
+ * IDENTIFICATION
+ * src/common/pg_crc.c
*
*-------------------------------------------------------------------------
*/
*
*-------------------------------------------------------------------------
*/
-#ifndef PG_CRC_TABLES_H
-#define PG_CRC_TABLES_H
/*
* This table is based on the so-called Castagnoli polynomial (the same
/*
* This table is based on the so-called Castagnoli polynomial (the same
- * that is used e.g. in iSCSI).
+ * that is used e.g. in iSCSI). It is for normal, not "reflected", in
+ * Williams' terms, CRC.
*/
const uint32 pg_crc32c_table[256] = {
0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4,
*/
const uint32 pg_crc32c_table[256] = {
0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4,
* This table is based on the polynomial
* x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
* (This is the same polynomial used in Ethernet checksums, for instance.)
* This table is based on the polynomial
* x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
* (This is the same polynomial used in Ethernet checksums, for instance.)
+ * It is for normal, not "reflected", in Williams' terms, CRC.
*/
const uint32 pg_crc32_table[256] = {
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
*/
const uint32 pg_crc32_table[256] = {
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
};
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
};
-
-#endif /* PG_CRC_TABLES_H */
#include "access/rmgr.h"
#include "access/xlogdefs.h"
#include "access/rmgr.h"
#include "access/xlogdefs.h"
+#include "common/pg_crc.h"
#include "storage/block.h"
#include "storage/relfilenode.h"
#include "storage/block.h"
#include "storage/relfilenode.h"
-#include "utils/pg_crc.h"
/*
* The overall layout of an XLOG record is:
/*
* The overall layout of an XLOG record is:
#define PG_CONTROL_H
#include "access/xlogdefs.h"
#define PG_CONTROL_H
#include "access/xlogdefs.h"
+#include "common/pg_crc.h"
#include "pgtime.h" /* for pg_time_t */
#include "pgtime.h" /* for pg_time_t */
-#include "utils/pg_crc.h"
/* Version identifier for this pg_control format */
/* Version identifier for this pg_control format */
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * src/include/utils/pg_crc.h
+ * src/include/common/pg_crc.h
*/
#ifndef PG_CRC_H
#define PG_CRC_H
*/
#ifndef PG_CRC_H
#define PG_CRC_H
#include "fmgr.h"
#include "utils/memutils.h"
#include "fmgr.h"
#include "utils/memutils.h"
-#include "utils/pg_crc.h"
LIBS += $(PTHREAD_LIBS)
OBJS = $(LIBOBJS) chklocale.o dirmod.o erand48.o fls.o inet_net_ntop.o \
LIBS += $(PTHREAD_LIBS)
OBJS = $(LIBOBJS) chklocale.o dirmod.o erand48.o fls.o inet_net_ntop.o \
- noblock.o path.o pgcheckdir.o pg_crc.o pgmkdirp.o pgsleep.o \
+ noblock.o path.o pgcheckdir.o pgmkdirp.o pgsleep.o \
pgstrcasecmp.o pqsignal.o \
qsort.o qsort_arg.o quotes.o sprompt.o tar.o thread.o
pgstrcasecmp.o pqsignal.o \
qsort.o qsort_arg.o quotes.o sprompt.o tar.o thread.o
+++ /dev/null
-/*-------------------------------------------------------------------------
- *
- * pg_crc.c
- * PostgreSQL CRC support
- *
- * This file simply #includes the CRC table definitions so that they are
- * available to programs linked with libpgport.
- *
- * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * src/port/pg_crc.c
- *
- *-------------------------------------------------------------------------
- */
-
-#include "c.h"
-
-#include "utils/pg_crc_tables.h"