aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorAmit Kapila <akapila@postgresql.org>2021-02-15 07:28:02 +0530
committerAmit Kapila <akapila@postgresql.org>2021-02-15 07:28:02 +0530
commitd9b0767becf5f41e4f001d8381e6a89941efa5b2 (patch)
treebc5704047c69209269b7b683ed0aca8604c393cf /src/backend
parent637668fb1d17ad789e392a40ff09694ff1aabffb (diff)
downloadpostgresql-d9b0767becf5f41e4f001d8381e6a89941efa5b2.tar.gz
postgresql-d9b0767becf5f41e4f001d8381e6a89941efa5b2.zip
Fix the warnings introduced in commit ce0fdbfe97.
Author: Amit Kapila Reviewed-by: Tom Lane Discussion: https://postgr.es/m/1610789.1613170207@sss.pgh.pa.us
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/commands/subscriptioncmds.c15
-rw-r--r--src/backend/replication/logical/tablesync.c40
2 files changed, 29 insertions, 26 deletions
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index 5cf874e0b46..e5ae4534ae4 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -715,7 +715,8 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data)
* the origin might be already removed. For these reasons,
* passing missing_ok = true.
*/
- ReplicationOriginNameForTablesync(sub->oid, relid, originname);
+ ReplicationOriginNameForTablesync(sub->oid, relid, originname,
+ sizeof(originname));
replorigin_drop_by_name(originname, true, false);
}
@@ -749,7 +750,8 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data)
* dropped slots and fail. For these reasons, we allow
* missing_ok = true for the drop.
*/
- ReplicationSlotNameForTablesync(sub->oid, sub_remove_rels[off].relid, syncslotname);
+ ReplicationSlotNameForTablesync(sub->oid, sub_remove_rels[off].relid,
+ syncslotname, sizeof(syncslotname));
ReplicationSlotDropAtPubNode(wrconn, syncslotname, true);
}
}
@@ -1174,7 +1176,8 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
* worker so passing missing_ok = true. This can happen for the states
* before SUBREL_STATE_FINISHEDCOPY.
*/
- ReplicationOriginNameForTablesync(subid, relid, originname);
+ ReplicationOriginNameForTablesync(subid, relid, originname,
+ sizeof(originname));
replorigin_drop_by_name(originname, true, false);
}
@@ -1254,7 +1257,8 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
{
char syncslotname[NAMEDATALEN] = {0};
- ReplicationSlotNameForTablesync(subid, relid, syncslotname);
+ ReplicationSlotNameForTablesync(subid, relid, syncslotname,
+ sizeof(syncslotname));
ReplicationSlotDropAtPubNode(wrconn, syncslotname, true);
}
}
@@ -1532,7 +1536,8 @@ ReportSlotConnectionError(List *rstates, Oid subid, char *slotname, char *err)
{
char syncslotname[NAMEDATALEN] = {0};
- ReplicationSlotNameForTablesync(subid, relid, syncslotname);
+ ReplicationSlotNameForTablesync(subid, relid, syncslotname,
+ sizeof(syncslotname));
elog(WARNING, "could not drop tablesync replication slot \"%s\"",
syncslotname);
}
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c
index 19cc8046786..24a6ce5d8ed 100644
--- a/src/backend/replication/logical/tablesync.c
+++ b/src/backend/replication/logical/tablesync.c
@@ -314,7 +314,8 @@ process_syncing_tables_for_sync(XLogRecPtr current_lsn)
*/
ReplicationSlotNameForTablesync(MyLogicalRepWorker->subid,
MyLogicalRepWorker->relid,
- syncslotname);
+ syncslotname,
+ sizeof(syncslotname));
/*
* It is important to give an error if we are unable to drop the slot,
@@ -462,7 +463,8 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn)
*/
ReplicationOriginNameForTablesync(MyLogicalRepWorker->subid,
rstate->relid,
- originname);
+ originname,
+ sizeof(originname));
replorigin_drop_by_name(originname, true, false);
/*
@@ -871,27 +873,20 @@ copy_table(Relation rel)
* pg_%u_sync_%u_UINT64_FORMAT (3 + 10 + 6 + 10 + 20 + '\0'), the maximum
* length of slot_name will be 50.
*
- * The returned slot name is either:
- * - stored in the supplied buffer (syncslotname), or
- * - palloc'ed in current memory context (if syncslotname = NULL).
+ * The returned slot name is stored in the supplied buffer (syncslotname) with
+ * the given size.
*
* Note: We don't use the subscription slot name as part of tablesync slot name
* because we are responsible for cleaning up these slots and it could become
* impossible to recalculate what name to cleanup if the subscription slot name
* had changed.
*/
-char *
+void
ReplicationSlotNameForTablesync(Oid suboid, Oid relid,
- char syncslotname[NAMEDATALEN])
+ char *syncslotname, int szslot)
{
- if (syncslotname)
- sprintf(syncslotname, "pg_%u_sync_%u_" UINT64_FORMAT, suboid, relid,
- GetSystemIdentifier());
- else
- syncslotname = psprintf("pg_%u_sync_%u_" UINT64_FORMAT, suboid, relid,
- GetSystemIdentifier());
-
- return syncslotname;
+ snprintf(syncslotname, szslot, "pg_%u_sync_%u_" UINT64_FORMAT, suboid,
+ relid, GetSystemIdentifier());
}
/*
@@ -901,9 +896,9 @@ ReplicationSlotNameForTablesync(Oid suboid, Oid relid,
*/
void
ReplicationOriginNameForTablesync(Oid suboid, Oid relid,
- char originname[NAMEDATALEN])
+ char *originname, int szorgname)
{
- snprintf(originname, NAMEDATALEN, "pg_%u_%u", suboid, relid);
+ snprintf(originname, szorgname, "pg_%u_%u", suboid, relid);
}
/*
@@ -951,9 +946,11 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
}
/* Calculate the name of the tablesync slot. */
- slotname = ReplicationSlotNameForTablesync(MySubscription->oid,
- MyLogicalRepWorker->relid,
- NULL /* use palloc */ );
+ slotname = (char *) palloc(NAMEDATALEN);
+ ReplicationSlotNameForTablesync(MySubscription->oid,
+ MyLogicalRepWorker->relid,
+ slotname,
+ NAMEDATALEN);
/*
* Here we use the slot name instead of the subscription name as the
@@ -972,7 +969,8 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
/* Assign the origin tracking record name. */
ReplicationOriginNameForTablesync(MySubscription->oid,
MyLogicalRepWorker->relid,
- originname);
+ originname,
+ sizeof(originname));
if (MyLogicalRepWorker->relstate == SUBREL_STATE_DATASYNC)
{