v16-0004-Check-whether-the-target-is-really-standby.patch
application/x-patch
Filename: v16-0004-Check-whether-the-target-is-really-standby.patch
Type: application/x-patch
Part: 1
Message:
Re: speed up a logical replica setup
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: format-patch
Series: patch v16-0004
Subject: Check whether the target is really standby
| File | + | − |
|---|---|---|
| src/bin/pg_basebackup/pg_createsubscriber.c | 15 | 0 |
From 9d9bf76ddbe400965c3a8ca42e26585703d78858 Mon Sep 17 00:00:00 2001
From: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Date: Fri, 2 Feb 2024 09:31:16 +0000
Subject: [PATCH v16 4/7] Check whether the target is really standby
---
src/bin/pg_basebackup/pg_createsubscriber.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c
index 135bb3e111..9530b11816 100644
--- a/src/bin/pg_basebackup/pg_createsubscriber.c
+++ b/src/bin/pg_basebackup/pg_createsubscriber.c
@@ -842,6 +842,21 @@ check_subscriber(LogicalRepInfo *dbinfo)
if (conn == NULL)
exit(1);
+ /* The target server must be a standby */
+ res = PQexec(conn, "SELECT pg_catalog.pg_is_in_recovery()");
+
+ if (PQresultStatus(res) != PGRES_TUPLES_OK)
+ {
+ pg_log_error("could not obtain recovery progress");
+ return false;
+ }
+
+ if (strcmp(PQgetvalue(res, 0, 0), "t") != 0)
+ {
+ pg_log_error("The target server was not a standby");
+ return false;
+ }
+
/*
* Subscriptions can only be created by roles that have the privileges of
* pg_create_subscription role and CREATE privileges on the specified
--
2.34.1