Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4f700bc

Browse files
committed
Reorganize our CRC source files again.
Now that we use CRC-32C in WAL and the control file, the "traditional" and"legacy" CRC-32 variants are not used in any frontend programs anymore.Move the code for those back from src/common to src/backend/utils/hash.Also move the slicing-by-8 implementation (back) to src/port. This is inpreparation for next patch that will add another implementation that usesIntel SSE 4.2 instructions to calculate CRC-32C, where available.
1 parentd577bb8 commit4f700bc

File tree

25 files changed

+211
-181
lines changed

25 files changed

+211
-181
lines changed

‎contrib/hstore/hstore_gist.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include"access/gist.h"
77
#include"access/skey.h"
88
#include"catalog/pg_type.h"
9-
#include"common/pg_crc.h"
9+
#include"utils/pg_crc.h"
1010

1111
#include"hstore.h"
1212

‎contrib/ltree/crc32.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#defineTOLOWER(x)(x)
2121
#endif
2222

23-
#include"common/pg_crc.h"
23+
#include"utils/pg_crc.h"
2424
#include"crc32.h"
2525

2626
unsignedint

‎contrib/pg_trgm/trgm_op.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include"catalog/pg_type.h"
1111
#include"tsearch/ts_locale.h"
1212
#include"utils/memutils.h"
13+
#include"utils/pg_crc.h"
1314

1415
PG_MODULE_MAGIC;
1516

‎src/backend/access/transam/twophase.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,8 +1023,8 @@ EndPrepare(GlobalTransaction gxact)
10231023
TwoPhaseFileHeader*hdr;
10241024
charpath[MAXPGPATH];
10251025
StateFileChunk*record;
1026-
pg_crc32statefile_crc;
1027-
pg_crc32bogus_crc;
1026+
pg_crc32cstatefile_crc;
1027+
pg_crc32cbogus_crc;
10281028
intfd;
10291029

10301030
/* Add the end sentinel to the list of 2PC records */
@@ -1034,7 +1034,7 @@ EndPrepare(GlobalTransaction gxact)
10341034
/* Go back and fill in total_len in the file header record */
10351035
hdr= (TwoPhaseFileHeader*)records.head->data;
10361036
Assert(hdr->magic==TWOPHASE_MAGIC);
1037-
hdr->total_len=records.total_len+sizeof(pg_crc32);
1037+
hdr->total_len=records.total_len+sizeof(pg_crc32c);
10381038

10391039
/*
10401040
* If the file size exceeds MaxAllocSize, we won't be able to read it in
@@ -1082,7 +1082,7 @@ EndPrepare(GlobalTransaction gxact)
10821082
*/
10831083
bogus_crc= ~statefile_crc;
10841084

1085-
if ((write(fd,&bogus_crc,sizeof(pg_crc32)))!=sizeof(pg_crc32))
1085+
if ((write(fd,&bogus_crc,sizeof(pg_crc32c)))!=sizeof(pg_crc32c))
10861086
{
10871087
CloseTransientFile(fd);
10881088
ereport(ERROR,
@@ -1091,7 +1091,7 @@ EndPrepare(GlobalTransaction gxact)
10911091
}
10921092

10931093
/* Back up to prepare for rewriting the CRC */
1094-
if (lseek(fd,-((off_t)sizeof(pg_crc32)),SEEK_CUR)<0)
1094+
if (lseek(fd,-((off_t)sizeof(pg_crc32c)),SEEK_CUR)<0)
10951095
{
10961096
CloseTransientFile(fd);
10971097
ereport(ERROR,
@@ -1135,7 +1135,7 @@ EndPrepare(GlobalTransaction gxact)
11351135
/* If we crash now, we have prepared: WAL replay will fix things */
11361136

11371137
/* write correct CRC and close file */
1138-
if ((write(fd,&statefile_crc,sizeof(pg_crc32)))!=sizeof(pg_crc32))
1138+
if ((write(fd,&statefile_crc,sizeof(pg_crc32c)))!=sizeof(pg_crc32c))
11391139
{
11401140
CloseTransientFile(fd);
11411141
ereport(ERROR,
@@ -1223,7 +1223,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
12231223
intfd;
12241224
structstatstat;
12251225
uint32crc_offset;
1226-
pg_crc32calc_crc,
1226+
pg_crc32ccalc_crc,
12271227
file_crc;
12281228

12291229
TwoPhaseFilePath(path,xid);
@@ -1258,14 +1258,14 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
12581258

12591259
if (stat.st_size< (MAXALIGN(sizeof(TwoPhaseFileHeader))+
12601260
MAXALIGN(sizeof(TwoPhaseRecordOnDisk))+
1261-
sizeof(pg_crc32))||
1261+
sizeof(pg_crc32c))||
12621262
stat.st_size>MaxAllocSize)
12631263
{
12641264
CloseTransientFile(fd);
12651265
returnNULL;
12661266
}
12671267

1268-
crc_offset=stat.st_size-sizeof(pg_crc32);
1268+
crc_offset=stat.st_size-sizeof(pg_crc32c);
12691269
if (crc_offset!=MAXALIGN(crc_offset))
12701270
{
12711271
CloseTransientFile(fd);
@@ -1302,7 +1302,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
13021302
COMP_CRC32C(calc_crc,buf,crc_offset);
13031303
FIN_CRC32C(calc_crc);
13041304

1305-
file_crc=*((pg_crc32*) (buf+crc_offset));
1305+
file_crc=*((pg_crc32c*) (buf+crc_offset));
13061306

13071307
if (!EQ_CRC32C(calc_crc,file_crc))
13081308
{
@@ -1545,7 +1545,7 @@ void
15451545
RecreateTwoPhaseFile(TransactionIdxid,void*content,intlen)
15461546
{
15471547
charpath[MAXPGPATH];
1548-
pg_crc32statefile_crc;
1548+
pg_crc32cstatefile_crc;
15491549
intfd;
15501550

15511551
/* Recompute CRC */
@@ -1572,7 +1572,7 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
15721572
(errcode_for_file_access(),
15731573
errmsg("could not write two-phase state file: %m")));
15741574
}
1575-
if (write(fd,&statefile_crc,sizeof(pg_crc32))!=sizeof(pg_crc32))
1575+
if (write(fd,&statefile_crc,sizeof(pg_crc32c))!=sizeof(pg_crc32c))
15761576
{
15771577
CloseTransientFile(fd);
15781578
ereport(ERROR,

‎src/backend/access/transam/xlog.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,7 @@ XLogRecPtr
862862
XLogInsertRecord(XLogRecData*rdata,XLogRecPtrfpw_lsn)
863863
{
864864
XLogCtlInsert*Insert=&XLogCtl->Insert;
865-
pg_crc32rdata_crc;
865+
pg_crc32crdata_crc;
866866
boolinserted;
867867
XLogRecord*rechdr= (XLogRecord*)rdata->data;
868868
boolisLogSwitch= (rechdr->xl_rmid==RM_XLOG_ID&&
@@ -4179,7 +4179,7 @@ WriteControlFile(void)
41794179
staticvoid
41804180
ReadControlFile(void)
41814181
{
4182-
pg_crc32crc;
4182+
pg_crc32ccrc;
41834183
intfd;
41844184

41854185
/*
@@ -4681,7 +4681,7 @@ BootStrapXLOG(void)
46814681
booluse_existent;
46824682
uint64sysidentifier;
46834683
structtimevaltv;
4684-
pg_crc32crc;
4684+
pg_crc32ccrc;
46854685

46864686
/*
46874687
* Select a hopefully-unique system identifier code for this installation.

‎src/backend/access/transam/xloginsert.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
459459
XLogRecData*rdt;
460460
uint32total_len=0;
461461
intblock_id;
462-
pg_crc32rdata_crc;
462+
pg_crc32crdata_crc;
463463
registered_buffer*prev_regbuf=NULL;
464464
XLogRecData*rdt_datas_last;
465465
XLogRecord*rechdr;

‎src/backend/access/transam/xlogreader.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ ValidXLogRecordHeader(XLogReaderState *state, XLogRecPtr RecPtr,
665665
staticbool
666666
ValidXLogRecord(XLogReaderState*state,XLogRecord*record,XLogRecPtrrecptr)
667667
{
668-
pg_crc32crc;
668+
pg_crc32ccrc;
669669

670670
/* Calculate the CRC */
671671
INIT_CRC32C(crc);

‎src/backend/replication/logical/snapbuild.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ typedef struct SnapBuildOnDisk
13911391

13921392
/* data not covered by checksum */
13931393
uint32magic;
1394-
pg_crc32checksum;
1394+
pg_crc32cchecksum;
13951395

13961396
/* data covered by checksum */
13971397

@@ -1634,7 +1634,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
16341634
charpath[MAXPGPATH];
16351635
Sizesz;
16361636
intreadBytes;
1637-
pg_crc32checksum;
1637+
pg_crc32cchecksum;
16381638

16391639
/* no point in loading a snapshot if we're already there */
16401640
if (builder->state==SNAPBUILD_CONSISTENT)

‎src/backend/replication/slot.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ typedef struct ReplicationSlotOnDisk
5656

5757
/* data not covered by checksum */
5858
uint32magic;
59-
pg_crc32checksum;
59+
pg_crc32cchecksum;
6060

6161
/* data covered by checksum */
6262
uint32version;
@@ -1075,7 +1075,7 @@ RestoreSlotFromDisk(const char *name)
10751075
intfd;
10761076
boolrestored= false;
10771077
intreadBytes;
1078-
pg_crc32checksum;
1078+
pg_crc32cchecksum;
10791079

10801080
/* no need to lock here, no concurrent access allowed yet */
10811081

‎src/backend/utils/adt/tsgistidx.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include"access/gist.h"
1818
#include"access/tuptoaster.h"
1919
#include"tsearch/ts_utils.h"
20+
#include"utils/pg_crc.h"
2021

2122

2223
#defineSIGLENINT 31/* >121 => key will toast, so it will not work

‎src/backend/utils/adt/tsquery.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414

1515
#include"postgres.h"
1616

17-
#include"common/pg_crc.h"
1817
#include"libpq/pqformat.h"
1918
#include"miscadmin.h"
2019
#include"tsearch/ts_locale.h"
2120
#include"tsearch/ts_utils.h"
2221
#include"utils/builtins.h"
2322
#include"utils/memutils.h"
23+
#include"utils/pg_crc.h"
2424

2525

2626
structTSQueryParserStateData

‎src/backend/utils/cache/relmapper.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ typedef struct RelMapFile
8686
int32magic;/* always RELMAPPER_FILEMAGIC */
8787
int32num_mappings;/* number of valid RelMapping entries */
8888
RelMappingmappings[MAX_MAPPINGS];
89-
pg_crc32crc;/* CRC of all above */
89+
pg_crc32ccrc;/* CRC of all above */
9090
int32pad;/* to make the struct size be 512 exactly */
9191
}RelMapFile;
9292

@@ -626,7 +626,7 @@ load_relmap_file(bool shared)
626626
{
627627
RelMapFile*map;
628628
charmapfilename[MAXPGPATH];
629-
pg_crc32crc;
629+
pg_crc32ccrc;
630630
intfd;
631631

632632
if (shared)

‎src/backend/utils/hash/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ subdir = src/backend/utils/hash
1212
top_builddir = ../../../..
1313
include$(top_builddir)/src/Makefile.global
1414

15-
OBJS = dynahash.o hashfn.o
15+
OBJS = dynahash.o hashfn.o pg_crc.o
1616

1717
include$(top_srcdir)/src/backend/common.mk

‎src/backend/utils/hash/pg_crc.c

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* pg_crc.c
4+
* PostgreSQL CRC support
5+
*
6+
* See Ross Williams' excellent introduction
7+
* A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS, available from
8+
* http://www.ross.net/crc/download/crc_v3.txt or several other net sites.
9+
*
10+
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
11+
* Portions Copyright (c) 1994, Regents of the University of California
12+
*
13+
*
14+
* IDENTIFICATION
15+
* src/backend/utils/hash/pg_crc.c
16+
*
17+
*-------------------------------------------------------------------------
18+
*/
19+
20+
#include"c.h"
21+
22+
#include"utils/pg_crc.h"
23+
24+
/*
25+
* Lookup table for calculating CRC-32 using Sarwate's algorithm.
26+
*
27+
* This table is based on the polynomial
28+
*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.
29+
* (This is the same polynomial used in Ethernet checksums, for instance.)
30+
* Using Williams' terms, this is the "normal", not "reflected" version.
31+
*/
32+
constuint32pg_crc32_table[256]= {
33+
0x00000000,0x77073096,0xEE0E612C,0x990951BA,
34+
0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,
35+
0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,
36+
0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,
37+
0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,
38+
0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7,
39+
0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,
40+
0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,
41+
0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,
42+
0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,
43+
0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,
44+
0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,
45+
0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,
46+
0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
47+
0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,
48+
0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D,
49+
0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,
50+
0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433,
51+
0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,
52+
0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01,
53+
0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,
54+
0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,
55+
0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,
56+
0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,
57+
0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,
58+
0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,
59+
0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,
60+
0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
61+
0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,
62+
0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F,
63+
0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,
64+
0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD,
65+
0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,
66+
0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683,
67+
0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,
68+
0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,
69+
0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,
70+
0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,
71+
0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,
72+
0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,
73+
0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,
74+
0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
75+
0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,
76+
0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79,
77+
0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,
78+
0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F,
79+
0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,
80+
0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,
81+
0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,
82+
0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,
83+
0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,
84+
0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,
85+
0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,
86+
0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,
87+
0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,
88+
0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
89+
0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,
90+
0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB,
91+
0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,
92+
0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9,
93+
0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,
94+
0xBAD03605,0xCDD70693,0x54DE5729,0x23D967BF,
95+
0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,
96+
0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D
97+
};

‎src/bin/pg_controldata/pg_controldata.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ main(int argc, char *argv[])
9292
intfd;
9393
charControlFilePath[MAXPGPATH];
9494
char*DataDir=NULL;
95-
pg_crc32crc;
95+
pg_crc32ccrc;
9696
time_ttime_tmp;
9797
charpgctime_str[128];
9898
charckpttime_str[128];

‎src/bin/pg_resetxlog/pg_resetxlog.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ ReadControlFile(void)
465465
intfd;
466466
intlen;
467467
char*buffer;
468-
pg_crc32crc;
468+
pg_crc32ccrc;
469469

470470
if ((fd=open(XLOG_CONTROL_FILE,O_RDONLY |PG_BINARY,0))<0)
471471
{
@@ -1062,7 +1062,7 @@ WriteEmptyXLOG(void)
10621062
XLogPageHeaderpage;
10631063
XLogLongPageHeaderlongpage;
10641064
XLogRecord*record;
1065-
pg_crc32crc;
1065+
pg_crc32ccrc;
10661066
charpath[MAXPGPATH];
10671067
intfd;
10681068
intnbytes;

‎src/bin/pg_rewind/pg_rewind.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ createBackupLabel(XLogRecPtr startpoint, TimeLineID starttli, XLogRecPtr checkpo
508508
staticvoid
509509
checkControlFile(ControlFileData*ControlFile)
510510
{
511-
pg_crc32crc;
511+
pg_crc32ccrc;
512512

513513
/* Calculate CRC */
514514
INIT_CRC32C(crc);

‎src/common/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ include $(top_builddir)/src/Makefile.global
2323
overrideCPPFLAGS := -DFRONTEND$(CPPFLAGS)
2424
LIBS +=$(PTHREAD_LIBS)
2525

26-
OBJS_COMMON = exec.opg_crc.opg_lzcompress.o pgfnames.o psprintf.o relpath.o\
26+
OBJS_COMMON = exec.o pg_lzcompress.o pgfnames.o psprintf.o relpath.o\
2727
rmtree.o string.o username.o wait_error.o
2828

2929
OBJS_FRONTEND =$(OBJS_COMMON) fe_memutils.o restricted_token.o

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp