postgresql/src
Heikki Linnakangas 5028f22f6e Switch to CRC-32C in WAL and other places.
The old algorithm was found to not be the usual CRC-32 algorithm, used by
Ethernet et al. We were using a non-reflected lookup table with code meant
for a reflected lookup table. That's a strange combination that AFAICS does
not correspond to any bit-wise CRC calculation, which makes it difficult to
reason about its properties. Although it has worked well in practice, seems
safer to use a well-known algorithm.

Since we're changing the algorithm anyway, we might as well choose a
different polynomial. The Castagnoli polynomial has better error-correcting
properties than the traditional CRC-32 polynomial, even if we had
implemented it correctly. Another reason for picking that is that some new
CPUs have hardware support for calculating CRC-32C, but not CRC-32, let
alone our strange variant of it. This patch doesn't add any support for such
hardware, but a future patch could now do that.

The old algorithm is kept around for tsquery and pg_trgm, which use the
values in indexes that need to remain compatible so that pg_upgrade works.
While we're at it, share the old lookup table for CRC-32 calculation
between hstore, ltree and core. They all use the same table, so might as
well.
2014-11-04 11:39:48 +02:00
..
backend Switch to CRC-32C in WAL and other places. 2014-11-04 11:39:48 +02:00
bin Switch to CRC-32C in WAL and other places. 2014-11-04 11:39:48 +02:00
common Small message fixes 2014-08-09 00:07:00 -04:00
include Switch to CRC-32C in WAL and other places. 2014-11-04 11:39:48 +02:00
interfaces Make ECPG test programs depend on "ecpg$(X)", not "ecpg". 2014-11-02 21:43:25 -05:00
makefiles MinGW: Use -static-libgcc when linking a DLL. 2014-10-21 22:55:47 -04:00
pl Re-remove dependency on the DLL of pythonxx.def file. 2014-11-02 21:43:30 -05:00
port Fix win32setlocale.c const-related warnings. 2014-11-02 21:43:20 -05:00
template Remove Alpha and Tru64 support. 2014-06-28 21:46:15 +02:00
test Add configure --enable-tap-tests option 2014-11-02 09:17:26 -05:00
timezone Support timezone abbreviations that sometimes change. 2014-10-16 15:22:10 -04:00
tools Add valgrind suppression for padding bytes in twophase records. 2014-09-01 15:59:44 +02:00
tutorial Adjust blank lines around PG_MODULE_MAGIC defines, for consistency 2014-07-10 14:02:08 -04:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
bcc32.mak Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Create libpgcommon, and move pg_malloc et al to it 2013-02-12 11:21:05 -03:00
Makefile.global.in Add configure --enable-tap-tests option 2014-11-02 09:17:26 -05:00
Makefile.shlib Clarify .def file comments. 2014-11-02 21:43:33 -05:00
nls-global.mk Setup error context callback for transaction lock waits 2014-03-19 15:10:36 -03:00
win32.mak Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00