0003-refactor.patch
application/octet-stream
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
Series: patch 0003
| File | + | − |
|---|---|---|
| src/backend/replication/basebackup.c | 0 | 71 |
| src/common/backup.c | 85 | 0 |
| src/common/Makefile | 1 | 0 |
| src/include/common/backup.h | 45 | 0 |
| src/include/replication/basebackup.h | 1 | 24 |
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index a5c4a41..f01c136 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -81,14 +81,6 @@ static void SendXlogRecPtrResult(XLogRecPtr ptr, TimeLineID tli);
static int compareWalFileNames(const ListCell *a, const ListCell *b);
static void throttle(size_t increment);
static bool is_checksummed_file(const char *fullpath, const char *filename);
-static void initialize_manifest_checksum(ChecksumCtx *cCtx,
- ManifestCheckSum checksumAlgo);
-static void update_manifest_checksum(ChecksumCtx *cCtx,
- ManifestCheckSum checksumAlgo,
- const char *buf, off_t cnt);
-static int finalize_manifest_checksum(ChecksumCtx *cCtx,
- ManifestCheckSum checksumAlgo,
- char *checksumbuf);
/* Was the backup currently in-progress initiated in recovery mode? */
static bool backup_started_in_recovery = false;
@@ -2001,66 +1993,3 @@ throttle(size_t increment)
*/
throttled_last = GetCurrentTimestamp();
}
-
-/*
- * Initialize the manifest checksum context according to the provided algorithm.
- */
-static void
-initialize_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo)
-{
- switch (checksumAlgo)
- {
- case MC_SHA256:
- pg_sha256_init(&cCtx->sha256_ctx);
- break;
- case MC_CRC32C:
- INIT_CRC32C(cCtx->crc_ctx);
- break;
- case MC_NONE:
- break;
- }
-}
-
-static void
-update_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo,
- const char *buf, off_t cnt)
-{
- switch (checksumAlgo)
- {
- case MC_SHA256:
- pg_sha256_update(&cCtx->sha256_ctx, (uint8 *) buf, cnt);
- break;
- case MC_CRC32C:
- COMP_CRC32C(cCtx->crc_ctx, buf, cnt);
- break;
- case MC_NONE:
- break;
- }
-}
-
-/*
- * Function calculate the final checksum for the provided context and returns
- * the length of checksum.
- */
-static int
-finalize_manifest_checksum(ChecksumCtx *cCtx,
- ManifestCheckSum checksumAlgo,
- char *checksumbuf)
-{
- int checksumlen = 0;
- switch (checksumAlgo)
- {
- case MC_SHA256:
- pg_sha256_final(&cCtx->sha256_ctx, (uint8 *)checksumbuf);
- checksumlen = PG_SHA256_DIGEST_LENGTH;
- break;
- case MC_CRC32C:
- FIN_CRC32C(cCtx->crc_ctx);
- pg_ltoa(cCtx->crc_ctx, checksumbuf);
- checksumlen = strlen(checksumbuf);
- break;
- case MC_NONE:
- break;
- }
- return checksumlen;
-}
diff --git a/src/common/Makefile b/src/common/Makefile
index ffb0f6e..b34ef41 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -47,6 +47,7 @@ LIBS += $(PTHREAD_LIBS)
# If you add objects here, see also src/tools/msvc/Mkvcbuild.pm
OBJS_COMMON = \
+ backup.o \
base64.o \
config_info.o \
controldata_utils.o \
diff --git a/src/common/backup.c b/src/common/backup.c
new file mode 100644
index 0000000..e6f3c37
--- /dev/null
+++ b/src/common/backup.c
@@ -0,0 +1,85 @@
+/*-------------------------------------------------------------------------
+ *
+ * backup.c
+ * backup handling helpers
+ *
+ *
+ * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ *
+ * IDENTIFICATION
+ * src/common/backup.c
+ *
+ *-------------------------------------------------------------------------
+ */
+
+
+#ifndef FRONTEND
+#include "postgres.h"
+#else
+#include "postgres_fe.h"
+#endif
+
+#include "common/backup.h"
+
+/*
+ * Initialize the manifest checksum context according to the provided algorithm.
+ */
+void
+initialize_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo)
+{
+ switch (checksumAlgo)
+ {
+ case MC_SHA256:
+ pg_sha256_init(&cCtx->sha256_ctx);
+ break;
+ case MC_CRC32C:
+ INIT_CRC32C(cCtx->crc_ctx);
+ break;
+ case MC_NONE:
+ break;
+ }
+}
+
+void
+update_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo, const char *buf, off_t cnt)
+{
+ switch (checksumAlgo)
+ {
+ case MC_SHA256:
+ pg_sha256_update(&cCtx->sha256_ctx, (uint8 *) buf, cnt);
+ break;
+ case MC_CRC32C:
+ COMP_CRC32C(cCtx->crc_ctx, buf, cnt);
+ break;
+ case MC_NONE:
+ break;
+ }
+}
+
+/*
+ * Function calculate the final checksum for the provided context and returns
+ * the length of checksum.
+ */
+int
+finalize_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo, char *checksumbuf)
+{
+ int checksumlen = 0;
+
+ switch (checksumAlgo)
+ {
+ case MC_SHA256:
+ pg_sha256_final(&cCtx->sha256_ctx, (uint8 *)checksumbuf);
+ checksumlen = PG_SHA256_DIGEST_LENGTH;
+ break;
+ case MC_CRC32C:
+ FIN_CRC32C(cCtx->crc_ctx);
+ sprintf(checksumbuf, "%u", cCtx->crc_ctx);
+ checksumlen = strlen(checksumbuf);
+ break;
+ case MC_NONE:
+ break;
+ }
+ return checksumlen;
+}
diff --git a/src/include/common/backup.h b/src/include/common/backup.h
new file mode 100644
index 0000000..98ca6b2
--- /dev/null
+++ b/src/include/common/backup.h
@@ -0,0 +1,45 @@
+/*
+ * backup.h
+ * backup handling helpers
+ *
+ * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/common/string.h
+ */
+#ifndef COMMON_BACKUP_H
+#define COMMON_BACKUP_H
+
+#include "common/sha2.h"
+#include "port/pg_crc32c.h"
+#include "lib/stringinfo.h"
+
+/* Checksum algorithm option for manifest */
+typedef enum ManifestCheckSum
+{
+ MC_NONE = 0,
+ MC_SHA256,
+ MC_CRC32C
+} ManifestCheckSum;
+
+/* checksum algorithm context */
+typedef union checksumCtx
+{
+ pg_sha256_ctx sha256_ctx;
+ pg_crc32c crc_ctx;
+} ChecksumCtx;
+
+/* Backup manifest info */
+typedef struct
+{
+ ManifestCheckSum checksumAlgo;
+ char checksum_label[10];
+ ChecksumCtx cCtx;
+ StringInfo manifest;
+} manifestinfo;
+
+extern void initialize_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo);
+extern void update_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo, const char *buf, off_t cnt);
+extern int finalize_manifest_checksum(ChecksumCtx *cCtx, ManifestCheckSum checksumAlgo, char *checksumbuf);
+
+#endif /* COMMON_BACKUP_H */
diff --git a/src/include/replication/basebackup.h b/src/include/replication/basebackup.h
index 0b165e8..93fdb05 100644
--- a/src/include/replication/basebackup.h
+++ b/src/include/replication/basebackup.h
@@ -12,6 +12,7 @@
#ifndef _BASEBACKUP_H
#define _BASEBACKUP_H
+#include "common/backup.h"
#include "common/sha2.h"
#include "lib/stringinfo.h"
#include "nodes/replnodes.h"
@@ -31,30 +32,6 @@ typedef struct
int64 size;
} tablespaceinfo;
-/* Checksum algorithm option for manifest */
-typedef enum ManifestCheckSum
-{
- MC_NONE = 0,
- MC_SHA256,
- MC_CRC32C
-} ManifestCheckSum;
-
-/* checksum algorithm context */
-typedef union checksumCtx
-{
- pg_sha256_ctx sha256_ctx;
- pg_crc32c crc_ctx;
-} ChecksumCtx;
-
-/* Backup manifest info */
-typedef struct
-{
- ManifestCheckSum checksumAlgo;
- char checksum_label[10];
- ChecksumCtx cCtx;
- StringInfo manifest;
-} manifestinfo;
-
extern void SendBaseBackup(BaseBackupCmd *cmd);
extern int64 sendTablespace(char *path, char *oid, bool sizeonly,