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

Commit9f284da

Browse files
committed
PBCKP-544: Replace macro COMP_CRC32C with wrapper function under windows
to avoid *pg_comp_crc32c import and influence on other extensions.Use COMP_CRC32C_COMMON for all systems.Tags: ptrack
1 parent42ea77d commit9f284da

File tree

2 files changed

+75
-29
lines changed

2 files changed

+75
-29
lines changed

‎engine.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@
3535
#endif
3636
#include"catalog/pg_tablespace.h"
3737
#include"miscadmin.h"
38+
#ifPG_VERSION_NUM >=160000
39+
#include"storage/checksum.h"
40+
#else
3841
#include"port/pg_crc32c.h"
42+
#endif
3943
#ifdefPGPRO_EE
4044
/* For file_is_in_cfs_tablespace() only. */
4145
#include"common/cfs_common.h"
@@ -81,7 +85,11 @@ ptrack_file_exists(const char *path)
8185
staticvoid
8286
ptrack_write_chunk(intfd,pg_crc32c*crc,char*chunk,size_tsize)
8387
{
88+
#ifPG_VERSION_NUM >=160000
89+
COMP_CRC32C_COMMON(*crc, (char*)chunk,size);
90+
#else
8491
COMP_CRC32C(*crc, (char*)chunk,size);
92+
#endif
8593

8694
if (write(fd,chunk,size)!=size)
8795
{
@@ -248,7 +256,11 @@ ptrackMapReadFromFile(const char *ptrack_path)
248256
pg_crc32c*file_crc;
249257

250258
INIT_CRC32C(crc);
259+
#ifPG_VERSION_NUM >=160000
260+
COMP_CRC32C_COMMON(crc, (char*)ptrack_map,PtrackCrcOffset);
261+
#else
251262
COMP_CRC32C(crc, (char*)ptrack_map,PtrackCrcOffset);
263+
#endif
252264
FIN_CRC32C(crc);
253265

254266
file_crc= (pg_crc32c*) ((char*)ptrack_map+PtrackCrcOffset);

‎patches/master-ptrack-core.diff

Lines changed: 63 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
diff --git a/src/backend/backup/basebackup.c b/src/backend/backup/basebackup.c
2-
index715428029b3..81f3218540a 100644
2+
index3fb9451643..3d528fd007 100644
33
--- a/src/backend/backup/basebackup.c
44
+++ b/src/backend/backup/basebackup.c
5-
@@ -197,6 +197,13 @@ static const struct exclude_list_item excludeFiles[] =
5+
@@ -199,6 +199,13 @@ static const struct exclude_list_item excludeFiles[] =
66
{"postmaster.pid", false},
77
{"postmaster.opts", false},
88

@@ -16,7 +16,7 @@ index 715428029b3..81f3218540a 100644
1616
/* end of list */
1717
{NULL, false}
1818
};
19-
@@ -212,6 +219,11 @@ static const struct exclude_list_item noChecksumFiles[] = {
19+
@@ -214,6 +221,11 @@ static const struct exclude_list_item noChecksumFiles[] = {
2020
{"pg_filenode.map", false},
2121
{"pg_internal.init", true},
2222
{"PG_VERSION", false},
@@ -29,7 +29,7 @@ index 715428029b3..81f3218540a 100644
2929
{"config_exec_params", true},
3030
#endif
3131
diff --git a/src/backend/storage/file/copydir.c b/src/backend/storage/file/copydir.c
32-
index658fd95ba95..eee38eba176 100644
32+
indexe04bc3941a..996b5de616 100644
3333
--- a/src/backend/storage/file/copydir.c
3434
+++ b/src/backend/storage/file/copydir.c
3535
@@ -27,6 +27,8 @@
@@ -41,7 +41,7 @@ index 658fd95ba95..eee38eba176 100644
4141
/*
4242
* copydir: copy a directory
4343
*
44-
@@ -78,6 +80,9 @@ copydir(char *fromdir, char *todir, bool recurse)
44+
@@ -75,6 +77,9 @@ copydir(constchar *fromdir, const char *todir, bool recurse)
4545
}
4646
FreeDir(xldir);
4747

@@ -52,7 +52,7 @@ index 658fd95ba95..eee38eba176 100644
5252
* Be paranoid here and fsync all files to ensure the copy is really done.
5353
* But if fsync is disabled, we're done.
5454
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
55-
index3deac496eed..07c4ee2ba03 100644
55+
index352958e1fe..9dc6bf29f4 100644
5656
--- a/src/backend/storage/smgr/md.c
5757
+++ b/src/backend/storage/smgr/md.c
5858
@@ -87,6 +87,8 @@ typedef struct _MdfdVec
@@ -64,7 +64,7 @@ index 3deac496eed..07c4ee2ba03 100644
6464

6565
/* Populate a file tag describing an md.c segment file. */
6666
#define INIT_MD_FILETAG(a,xx_rlocator,xx_forknum,xx_segno) \
67-
@@ -484,6 +486,9 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
67+
@@ -498,6 +500,9 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
6868
register_dirty_segment(reln, forknum, v);
6969

7070
Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE));
@@ -74,7 +74,7 @@ index 3deac496eed..07c4ee2ba03 100644
7474
}
7575

7676
/*
77-
@@ -773,6 +778,9 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
77+
@@ -787,6 +792,9 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
7878

7979
if (!skipFsync && !SmgrIsTemp(reln))
8080
register_dirty_segment(reln, forknum, v);
@@ -85,7 +85,7 @@ index 3deac496eed..07c4ee2ba03 100644
8585

8686
/*
8787
diff --git a/src/backend/storage/sync/sync.c b/src/backend/storage/sync/sync.c
88-
index9d6a9e91090..990d0722229 100644
88+
index768d1dbfc4..17cbc6bb2a 100644
8989
--- a/src/backend/storage/sync/sync.c
9090
+++ b/src/backend/storage/sync/sync.c
9191
@@ -81,6 +81,8 @@ static MemoryContext pendingOpsCxt; /* context for the above */
@@ -108,7 +108,7 @@ index 9d6a9e91090..990d0722229 100644
108108
sync_in_progress = false;
109109
}
110110
diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c
111-
index324ccf77834..e82cae5f325 100644
111+
indexaa21007497..96fe58ee3e 100644
112112
--- a/src/bin/pg_checksums/pg_checksums.c
113113
+++ b/src/bin/pg_checksums/pg_checksums.c
114114
@@ -118,6 +118,11 @@ static const struct exclude_list_item skip[] = {
@@ -124,7 +124,7 @@ index 324ccf77834..e82cae5f325 100644
124124
{"config_exec_params", true},
125125
#endif
126126
diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c
127-
indexd4772a29650..3318f64359d 100644
127+
indexe7ef2b8bd0..ca7f8cdbc2 100644
128128
--- a/src/bin/pg_resetwal/pg_resetwal.c
129129
+++ b/src/bin/pg_resetwal/pg_resetwal.c
130130
@@ -85,6 +85,7 @@ static void RewriteControlFile(void);
@@ -143,7 +143,7 @@ index d4772a29650..3318f64359d 100644
143143
WriteEmptyXLOG();
144144

145145
printf(_("Write-ahead log reset\n"));
146-
@@ -1036,6 +1038,41 @@ KillExistingArchiveStatus(void)
146+
@@ -1029,6 +1031,41 @@ KillExistingArchiveStatus(void)
147147
pg_fatal("could not close directory \"%s\": %m", ARCHSTATDIR);
148148
}
149149

@@ -186,7 +186,7 @@ index d4772a29650..3318f64359d 100644
186186
/*
187187
* Write an empty XLOG file, containing only the checkpoint record
188188
diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c
189-
index269ed6446e6..6318a8c1f55 100644
189+
indexbd5c598e20..a568156c5f 100644
190190
--- a/src/bin/pg_rewind/filemap.c
191191
+++ b/src/bin/pg_rewind/filemap.c
192192
@@ -157,6 +157,10 @@ static const struct exclude_list_item excludeFiles[] =
@@ -200,21 +200,55 @@ index 269ed6446e6..6318a8c1f55 100644
200200
/* end of list */
201201
{NULL, false}
202202
};
203-
diff --git a/src/include/port/pg_crc32c.h b/src/include/port/pg_crc32c.h
204-
indexd7668651ba8..33994a27f5f 100644
205-
--- a/src/include/port/pg_crc32c.h
206-
+++ b/src/include/port/pg_crc32c.h
207-
@@ -69,7 +69,7 @@ extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t le
208-
#defineFIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF)
203+
diff --git a/src/include/storage/checksum.h b/src/include/storage/checksum.h
204+
index4afd25a0af..c2afee20b5 100644
205+
--- a/src/include/storage/checksum.h
206+
+++ b/src/include/storage/checksum.h
207+
@@ -14,6 +14,7 @@
208+
#defineCHECKSUM_H
209209

210-
extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len);
211-
-extern pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len);
212-
+extern PGDLLIMPORT pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len);
210+
#include "storage/block.h"
211+
+#include "port/pg_crc32c.h"
213212

214-
#ifdef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK
215-
extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len);
213+
/*
214+
* Compute the checksum for a Postgres page. The page must be aligned on a
215+
@@ -21,4 +22,18 @@
216+
*/
217+
extern uint16 pg_checksum_page(char *page, BlockNumber blkno);
218+
219+
+#ifdef WIN32
220+
+/*
221+
+ * Wrapper function for COMP_CRC32C macro. Was added to avoid
222+
+ * FRONTEND macro use for pg_comp_crc32c pointer in windows build.
223+
+ */
224+
+extern void
225+
+comp_crc32c(pg_crc32c *crc, const void *data, size_t len);
226+
+
227+
+#define COMP_CRC32C_COMMON(crc, data, len)\
228+
+comp_crc32c(&(crc), data, len)
229+
+#else
230+
+#define COMP_CRC32C_COMMONCOMP_CRC32C
231+
+#endif/* WIN32 */
232+
+
233+
#endif/* CHECKSUM_H */
234+
diff --git a/src/include/storage/checksum_impl.h b/src/include/storage/checksum_impl.h
235+
index 7b157161a2..a69425f6cc 100644
236+
--- a/src/include/storage/checksum_impl.h
237+
+++ b/src/include/storage/checksum_impl.h
238+
@@ -213,3 +213,11 @@ pg_checksum_page(char *page, BlockNumber blkno)
239+
*/
240+
return (uint16) ((checksum % 65535) + 1);
241+
}
242+
+
243+
+#ifdef WIN32
244+
+void
245+
+comp_crc32c(pg_crc32c *crc, const void *data, size_t len)
246+
+{
247+
+COMP_CRC32C(*crc, data, len);
248+
+}
249+
+#endif
216250
diff --git a/src/include/storage/copydir.h b/src/include/storage/copydir.h
217-
index50a26edeb06..af1602f5154 100644
251+
indexa8be5b21e0..020874f96c 100644
218252
--- a/src/include/storage/copydir.h
219253
+++ b/src/include/storage/copydir.h
220254
@@ -13,6 +13,9 @@
@@ -224,11 +258,11 @@ index 50a26edeb06..af1602f5154 100644
224258
+typedef void (*copydir_hook_type) (const char *path);
225259
+extern PGDLLIMPORT copydir_hook_type copydir_hook;
226260
+
227-
extern void copydir(char *fromdir, char *todir, bool recurse);
228-
extern void copy_file(char *fromfile, char *tofile);
261+
extern void copydir(constchar *fromdir, const char *todir, bool recurse);
262+
extern void copy_file(constchar *fromfile, const char *tofile);
229263

230264
diff --git a/src/include/storage/md.h b/src/include/storage/md.h
231-
index10aa1b0109b..1415675824e 100644
265+
index8f32af9ef3..f8b427ceca 100644
232266
--- a/src/include/storage/md.h
233267
+++ b/src/include/storage/md.h
234268
@@ -19,6 +19,13 @@
@@ -246,7 +280,7 @@ index 10aa1b0109b..1415675824e 100644
246280
extern void mdinit(void);
247281
extern void mdopen(SMgrRelation reln);
248282
diff --git a/src/include/storage/sync.h b/src/include/storage/sync.h
249-
index049af878dec..7689d49a24e 100644
283+
indexcfbcfa6797..2a432440db 100644
250284
--- a/src/include/storage/sync.h
251285
+++ b/src/include/storage/sync.h
252286
@@ -55,6 +55,9 @@ typedef struct FileTag

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp