From 699c941b0b53318ecbcbe75014cc7e6eb538e363 Mon Sep 17 00:00:00 2001 From: zhaobingyu <1783692558@qq.com> Date: Mon, 14 Nov 2022 10:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E6=9C=89false=E7=8A=B6=E6=80=81=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E6=A7=BD=E6=AE=8B=E7=95=99=E6=97=B6=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E5=87=86=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bin/pg_probackup/backup.cpp | 2 +- src/bin/pg_probackup/ptrack.cpp | 25 +++++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/bin/pg_probackup/backup.cpp b/src/bin/pg_probackup/backup.cpp index 886983735..8d147ed54 100644 --- a/src/bin/pg_probackup/backup.cpp +++ b/src/bin/pg_probackup/backup.cpp @@ -1177,7 +1177,7 @@ pg_start_backup(const char *label, bool smooth, pgBackup *backup, securec_check_for_sscanf_s(ret, 2, "\0", "\0"); repslotLsn = ((uint64) lsn_hi )<< 32 | lsn_lo; startLsn = Min(startLsn, repslotLsn); - + char* slotname = pg_strdup(PQgetvalue(res, i, 0)); parray_append(logical_replslot, slotname); } diff --git a/src/bin/pg_probackup/ptrack.cpp b/src/bin/pg_probackup/ptrack.cpp index a9dd5158a..f0fae365d 100644 --- a/src/bin/pg_probackup/ptrack.cpp +++ b/src/bin/pg_probackup/ptrack.cpp @@ -101,10 +101,27 @@ pg_ptrack_get_pagemapset(PGconn *backup_conn, XLogRecPtr lsn) PQclear(res); elog(INFO, "change bitmap end lsn location is %s", params[1]); - res = pgut_execute(backup_conn, - "SELECT path,changed_block_number,changed_block_list " - "FROM pg_cbm_get_changed_block($1, $2)", - 2, (const char **) params); + const char *query = "SELECT path,changed_block_number,changed_block_list FROM \ + pg_cbm_get_changed_block($1, $2)"; + + + res = pgut_execute_extended(backup_conn, query, + 2, (const char **) params, true, true); + + switch (PQresultStatus(res)) + { + case PGRES_TUPLES_OK: + case PGRES_COMMAND_OK: + case PGRES_COPY_IN: + break; + default: + elog(ERROR, "query failed: %s query was: %s\n" + "Please check the replication slots, if it has slots useless," + "delete it and try again.", + PQerrorMessage(backup_conn), query); + break; + } + pfree(params[0]); pfree(params[1]);