From 1bd08f6ba56ac9b23dc46ab634d82327395e882e Mon Sep 17 00:00:00 2001 From: David Rowley Date: Fri, 18 Apr 2025 12:15:08 +1200 Subject: [PATCH] Fixup various older misuses of appendPQExpBuffer Use appendPQExpBufferStr when there are no parameters and appendPQExpBufferChar when the string length is 1. Unlike 3fae25cbb, which fixed this issue for code that was new to v18, this one fixes up instances which exist in the backbranches. We've historically tried to maintain this standard and if we're going to continue doing that, then we won't be doing that selectively based on when the code was introduced. Now seems like a good time to flush out the existing misuses. Waiting until v19 just prolongs their existence in terms of released versions that the misuses exist in. Author: David Rowley Discussion: https://postgr.es/m/CAApHDvoARMvPeXTTC0HnpARBHn-WgVstc8XFCyMGOzvgu_1HvQ@mail.gmail.com --- src/bin/initdb/initdb.c | 4 ++-- src/bin/pg_basebackup/pg_createsubscriber.c | 24 ++++++++++----------- src/bin/pg_dump/pg_dump.c | 24 ++++++++++----------- src/bin/pg_dump/pg_dumpall.c | 2 +- src/bin/pg_upgrade/pg_upgrade.c | 8 +++---- src/bin/psql/common.c | 2 +- src/bin/scripts/vacuumdb.c | 16 +++++++------- 7 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index c17fda2bc81..2087690449d 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -1620,9 +1620,9 @@ bootstrap_template1(void) printfPQExpBuffer(&cmd, "\"%s\" --boot %s %s", backend_exec, boot_options, extra_options); appendPQExpBuffer(&cmd, " -X %d", wal_segment_size_mb * (1024 * 1024)); if (data_checksums) - appendPQExpBuffer(&cmd, " -k"); + appendPQExpBufferStr(&cmd, " -k"); if (debug) - appendPQExpBuffer(&cmd, " -d 5"); + appendPQExpBufferStr(&cmd, " -d 5"); PG_CMD_OPEN(cmd.data); diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c index b92a978a426..f65acc7cb11 100644 --- a/src/bin/pg_basebackup/pg_createsubscriber.c +++ b/src/bin/pg_basebackup/pg_createsubscriber.c @@ -1247,20 +1247,20 @@ setup_recovery(const struct LogicalRepInfo *dbinfo, const char *datadir, const c * targets (name, time, xid, LSN). */ recoveryconfcontents = GenerateRecoveryConfig(conn, NULL, NULL); - appendPQExpBuffer(recoveryconfcontents, "recovery_target = ''\n"); - appendPQExpBuffer(recoveryconfcontents, - "recovery_target_timeline = 'latest'\n"); - appendPQExpBuffer(recoveryconfcontents, - "recovery_target_inclusive = true\n"); - appendPQExpBuffer(recoveryconfcontents, - "recovery_target_action = promote\n"); - appendPQExpBuffer(recoveryconfcontents, "recovery_target_name = ''\n"); - appendPQExpBuffer(recoveryconfcontents, "recovery_target_time = ''\n"); - appendPQExpBuffer(recoveryconfcontents, "recovery_target_xid = ''\n"); + appendPQExpBufferStr(recoveryconfcontents, "recovery_target = ''\n"); + appendPQExpBufferStr(recoveryconfcontents, + "recovery_target_timeline = 'latest'\n"); + appendPQExpBufferStr(recoveryconfcontents, + "recovery_target_inclusive = true\n"); + appendPQExpBufferStr(recoveryconfcontents, + "recovery_target_action = promote\n"); + appendPQExpBufferStr(recoveryconfcontents, "recovery_target_name = ''\n"); + appendPQExpBufferStr(recoveryconfcontents, "recovery_target_time = ''\n"); + appendPQExpBufferStr(recoveryconfcontents, "recovery_target_xid = ''\n"); if (dry_run) { - appendPQExpBuffer(recoveryconfcontents, "# dry run mode"); + appendPQExpBufferStr(recoveryconfcontents, "# dry run mode"); appendPQExpBuffer(recoveryconfcontents, "recovery_target_lsn = '%X/%X'\n", LSN_FORMAT_ARGS((XLogRecPtr) InvalidXLogRecPtr)); @@ -1484,7 +1484,7 @@ start_standby_server(const struct CreateSubscriberOptions *opt, bool restricted_ appendPQExpBuffer(pg_ctl_cmd, "\"%s\" start -D ", pg_ctl_path); appendShellString(pg_ctl_cmd, subscriber_dir); - appendPQExpBuffer(pg_ctl_cmd, " -s -o \"-c sync_replication_slots=off\""); + appendPQExpBufferStr(pg_ctl_cmd, " -s -o \"-c sync_replication_slots=off\""); /* Prevent unintended slot invalidation */ appendPQExpBufferStr(pg_ctl_cmd, " -o \"-c idle_replication_slot_timeout=0\""); diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 8ef9c6a021a..105e917aa7b 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1777,7 +1777,7 @@ expand_table_name_patterns(Archive *fout, */ if (with_child_tables) { - appendPQExpBuffer(query, "WITH RECURSIVE partition_tree (relid) AS (\n"); + appendPQExpBufferStr(query, "WITH RECURSIVE partition_tree (relid) AS (\n"); } appendPQExpBuffer(query, @@ -1804,13 +1804,13 @@ expand_table_name_patterns(Archive *fout, if (with_child_tables) { - appendPQExpBuffer(query, "UNION" - "\nSELECT i.inhrelid" - "\nFROM partition_tree p" - "\n JOIN pg_catalog.pg_inherits i" - "\n ON p.relid OPERATOR(pg_catalog.=) i.inhparent" - "\n)" - "\nSELECT relid FROM partition_tree"); + appendPQExpBufferStr(query, "UNION" + "\nSELECT i.inhrelid" + "\nFROM partition_tree p" + "\n JOIN pg_catalog.pg_inherits i" + "\n ON p.relid OPERATOR(pg_catalog.=) i.inhparent" + "\n)" + "\nSELECT relid FROM partition_tree"); } ExecuteSqlStatement(fout, "RESET search_path"); @@ -5034,8 +5034,8 @@ getSubscriptions(Archive *fout) appendPQExpBufferStr(query, " s.subfailover\n"); else - appendPQExpBuffer(query, - " false AS subfailover\n"); + appendPQExpBufferStr(query, + " false AS subfailover\n"); appendPQExpBufferStr(query, "FROM pg_subscription s\n"); @@ -5257,7 +5257,7 @@ dumpSubscriptionTable(Archive *fout, const SubRelInfo *subrinfo) if (subrinfo->srsublsn && subrinfo->srsublsn[0] != '\0') appendPQExpBuffer(query, ", '%s'", subrinfo->srsublsn); else - appendPQExpBuffer(query, ", NULL"); + appendPQExpBufferStr(query, ", NULL"); appendPQExpBufferStr(query, ");\n"); } @@ -5352,7 +5352,7 @@ dumpSubscription(Archive *fout, const SubscriptionInfo *subinfo) appendPQExpBufferStr(query, ", disable_on_error = true"); if (!subinfo->subpasswordrequired) - appendPQExpBuffer(query, ", password_required = false"); + appendPQExpBufferStr(query, ", password_required = false"); if (subinfo->subrunasowner) appendPQExpBufferStr(query, ", run_as_owner = true"); diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 3395d559518..946a6d0fafc 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -1246,7 +1246,7 @@ dumpRoleMembership(PGconn *conn) { if (optbuf->data[0] != '\0') appendPQExpBufferStr(optbuf, ", "); - appendPQExpBuffer(optbuf, "SET FALSE"); + appendPQExpBufferStr(optbuf, "SET FALSE"); } if (optbuf->data[0] != '\0') fprintf(OPF, " WITH %s", optbuf->data); diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c index d9db48dba0d..536e49d2616 100644 --- a/src/bin/pg_upgrade/pg_upgrade.c +++ b/src/bin/pg_upgrade/pg_upgrade.c @@ -999,11 +999,11 @@ create_logical_replication_slots(void) LogicalSlotInfo *slot_info = &slot_arr->slots[slotnum]; /* Constructs a query for creating logical replication slots */ - appendPQExpBuffer(query, - "SELECT * FROM " - "pg_catalog.pg_create_logical_replication_slot("); + appendPQExpBufferStr(query, + "SELECT * FROM " + "pg_catalog.pg_create_logical_replication_slot("); appendStringLiteralConn(query, slot_info->slotname, conn); - appendPQExpBuffer(query, ", "); + appendPQExpBufferStr(query, ", "); appendStringLiteralConn(query, slot_info->plugin, conn); appendPQExpBuffer(query, ", false, %s, %s);", diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 5249336bcf2..5382a07b74d 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -1404,7 +1404,7 @@ DescribeQuery(const char *query, double *elapsed_msec) char *escname; if (i > 0) - appendPQExpBufferStr(&buf, ","); + appendPQExpBufferChar(&buf, ','); name = PQfname(result, i); escname = PQescapeLiteral(pset.db, name, strlen(name)); diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index 935e6da3c17..22067faaf7d 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -896,11 +896,11 @@ retrieve_objects(PGconn *conn, vacuumingOptions *vacopts, if (objects_listed) { if (objfilter & OBJFILTER_SCHEMA_EXCLUDE) - appendPQExpBuffer(&catalog_query, - " AND listed_objects.object_oid IS NULL\n"); + appendPQExpBufferStr(&catalog_query, + " AND listed_objects.object_oid IS NULL\n"); else - appendPQExpBuffer(&catalog_query, - " AND listed_objects.object_oid IS NOT NULL\n"); + appendPQExpBufferStr(&catalog_query, + " AND listed_objects.object_oid IS NOT NULL\n"); } /* @@ -911,10 +911,10 @@ retrieve_objects(PGconn *conn, vacuumingOptions *vacopts, */ if ((objfilter & OBJFILTER_TABLE) == 0) { - appendPQExpBuffer(&catalog_query, - " AND c.relkind OPERATOR(pg_catalog.=) ANY (array[" - CppAsString2(RELKIND_RELATION) ", " - CppAsString2(RELKIND_MATVIEW) "])\n"); + appendPQExpBufferStr(&catalog_query, + " AND c.relkind OPERATOR(pg_catalog.=) ANY (array[" + CppAsString2(RELKIND_RELATION) ", " + CppAsString2(RELKIND_MATVIEW) "])\n"); } /* -- 2.30.2