diff options
author | Amit Kapila <akapila@postgresql.org> | 2021-02-15 07:28:02 +0530 |
---|---|---|
committer | Amit Kapila <akapila@postgresql.org> | 2021-02-15 07:28:02 +0530 |
commit | d9b0767becf5f41e4f001d8381e6a89941efa5b2 (patch) | |
tree | bc5704047c69209269b7b683ed0aca8604c393cf /src/backend | |
parent | 637668fb1d17ad789e392a40ff09694ff1aabffb (diff) | |
download | postgresql-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.c | 15 | ||||
-rw-r--r-- | src/backend/replication/logical/tablesync.c | 40 |
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) { |