From 8abc13a88938ef473b8a486186f1b96630450728 Mon Sep 17 00:00:00 2001 From: David Rowley Date: Thu, 4 Jul 2019 13:01:13 +1200 Subject: [PATCH] Use appendStringInfoString and appendPQExpBufferStr where possible This changes various places where appendPQExpBuffer was used in places where it was possible to use appendPQExpBufferStr, and likewise for appendStringInfo and appendStringInfoString. This is really just a stylistic improvement, but there are also small performance gains to be had from doing this. Discussion: http://postgr.es/m/CAKJS1f9P=M-3ULmPvr8iCno8yvfDViHibJjpriHU8+SXUgeZ=w@mail.gmail.com --- contrib/postgres_fdw/deparse.c | 8 +- contrib/sepgsql/database.c | 6 +- contrib/sepgsql/label.c | 2 +- contrib/sepgsql/selinux.c | 2 +- contrib/test_decoding/test_decoding.c | 4 +- src/backend/access/rmgrdesc/heapdesc.c | 4 +- src/backend/commands/explain.c | 2 +- src/backend/utils/adt/ruleutils.c | 2 +- src/bin/pg_basebackup/streamutil.c | 8 +- src/bin/pg_ctl/pg_ctl.c | 4 +- src/bin/pg_dump/dumputils.c | 4 +- src/bin/pg_dump/pg_backup_archiver.c | 6 +- src/bin/pg_dump/pg_backup_db.c | 2 +- src/bin/pg_dump/pg_dump.c | 158 ++++++++++++------------- src/bin/pg_dump/pg_dumpall.c | 4 +- src/bin/pg_upgrade/dump.c | 2 +- src/bin/psql/command.c | 4 +- src/bin/psql/describe.c | 94 +++++++-------- src/bin/scripts/clusterdb.c | 2 +- src/bin/scripts/reindexdb.c | 2 +- src/bin/scripts/vacuumdb.c | 44 +++---- src/fe_utils/string_utils.c | 4 +- src/interfaces/libpq/fe-auth-scram.c | 14 +-- src/interfaces/libpq/fe-connect.c | 4 +- src/interfaces/libpq/fe-protocol3.c | 4 +- 25 files changed, 195 insertions(+), 195 deletions(-) diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c index 6da4c834bf..b951b11592 100644 --- a/contrib/postgres_fdw/deparse.c +++ b/contrib/postgres_fdw/deparse.c @@ -1531,7 +1531,7 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, { Assert(fpinfo->jointype == JOIN_INNER); Assert(fpinfo->joinclauses == NIL); - appendStringInfo(buf, "%s", join_sql_o.data); + appendStringInfoString(buf, join_sql_o.data); return; } } @@ -1552,7 +1552,7 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, { Assert(fpinfo->jointype == JOIN_INNER); Assert(fpinfo->joinclauses == NIL); - appendStringInfo(buf, "%s", join_sql_i.data); + appendStringInfoString(buf, join_sql_i.data); return; } } @@ -1861,7 +1861,7 @@ deparseDirectUpdateSql(StringInfo buf, PlannerInfo *root, { List *ignore_conds = NIL; - appendStringInfo(buf, " FROM "); + appendStringInfoString(buf, " FROM "); deparseFromExprForRel(buf, root, foreignrel, true, rtindex, &ignore_conds, params_list); remote_conds = list_concat(remote_conds, ignore_conds); @@ -1944,7 +1944,7 @@ deparseDirectDeleteSql(StringInfo buf, PlannerInfo *root, { List *ignore_conds = NIL; - appendStringInfo(buf, " USING "); + appendStringInfoString(buf, " USING "); deparseFromExprForRel(buf, root, foreignrel, true, rtindex, &ignore_conds, params_list); remote_conds = list_concat(remote_conds, ignore_conds); diff --git a/contrib/sepgsql/database.c b/contrib/sepgsql/database.c index 0cffb69c76..8edd3df643 100644 --- a/contrib/sepgsql/database.c +++ b/contrib/sepgsql/database.c @@ -63,7 +63,7 @@ sepgsql_database_post_create(Oid databaseId, const char *dtemplate) * check db_database:{getattr} permission */ initStringInfo(&audit_name); - appendStringInfo(&audit_name, "%s", quote_identifier(dtemplate)); + appendStringInfoString(&audit_name, quote_identifier(dtemplate)); sepgsql_avc_check_perms_label(tcontext, SEPG_CLASS_DB_DATABASE, SEPG_DB_DATABASE__GETATTR, @@ -101,8 +101,8 @@ sepgsql_database_post_create(Oid databaseId, const char *dtemplate) * check db_database:{create} permission */ resetStringInfo(&audit_name); - appendStringInfo(&audit_name, "%s", - quote_identifier(NameStr(datForm->datname))); + appendStringInfoString(&audit_name, + quote_identifier(NameStr(datForm->datname))); sepgsql_avc_check_perms_label(ncontext, SEPG_CLASS_DB_DATABASE, SEPG_DB_DATABASE__CREATE, diff --git a/contrib/sepgsql/label.c b/contrib/sepgsql/label.c index 0b0d21c7f5..1d17d5a0c0 100644 --- a/contrib/sepgsql/label.c +++ b/contrib/sepgsql/label.c @@ -676,7 +676,7 @@ quote_object_name(const char *src1, const char *src2, if (src1) { temp = quote_identifier(src1); - appendStringInfo(&result, "%s", temp); + appendStringInfoString(&result, temp); if (src1 != temp) pfree((void *) temp); } diff --git a/contrib/sepgsql/selinux.c b/contrib/sepgsql/selinux.c index fbc044e818..bc2be8427a 100644 --- a/contrib/sepgsql/selinux.c +++ b/contrib/sepgsql/selinux.c @@ -702,7 +702,7 @@ sepgsql_audit_log(bool denied, appendStringInfo(&buf, " %s", av_name); } } - appendStringInfo(&buf, " }"); + appendStringInfoString(&buf, " }"); /* * Call external audit module, if loaded diff --git a/contrib/test_decoding/test_decoding.c b/contrib/test_decoding/test_decoding.c index 33955a478e..a0ded67b9a 100644 --- a/contrib/test_decoding/test_decoding.c +++ b/contrib/test_decoding/test_decoding.c @@ -518,9 +518,9 @@ pg_decode_truncate(LogicalDecodingContext *ctx, ReorderBufferTXN *txn, || change->data.truncate.cascade) { if (change->data.truncate.restart_seqs) - appendStringInfo(ctx->out, " restart_seqs"); + appendStringInfoString(ctx->out, " restart_seqs"); if (change->data.truncate.cascade) - appendStringInfo(ctx->out, " cascade"); + appendStringInfoString(ctx->out, " cascade"); } else appendStringInfoString(ctx->out, " (no-flags)"); diff --git a/src/backend/access/rmgrdesc/heapdesc.c b/src/backend/access/rmgrdesc/heapdesc.c index eff529f990..f25ebcda99 100644 --- a/src/backend/access/rmgrdesc/heapdesc.c +++ b/src/backend/access/rmgrdesc/heapdesc.c @@ -86,9 +86,9 @@ heap_desc(StringInfo buf, XLogReaderState *record) int i; if (xlrec->flags & XLH_TRUNCATE_CASCADE) - appendStringInfo(buf, "cascade "); + appendStringInfoString(buf, "cascade "); if (xlrec->flags & XLH_TRUNCATE_RESTART_SEQS) - appendStringInfo(buf, "restart_seqs "); + appendStringInfoString(buf, "restart_seqs "); appendStringInfo(buf, "nrelids %u relids", xlrec->nrelids); for (i = 0; i < xlrec->nrelids; i++) appendStringInfo(buf, " %u", xlrec->relids[i]); diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 92969636b7..dff2ed3f97 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -822,7 +822,7 @@ ExplainPrintJIT(ExplainState *es, int jit_flags, if (for_workers) appendStringInfo(es->str, "JIT for worker %u:\n", worker_num); else - appendStringInfo(es->str, "JIT:\n"); + appendStringInfoString(es->str, "JIT:\n"); es->indent += 1; ExplainPropertyInteger("Functions", NULL, ji->created_functions, es); diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index b9fdd99db8..71adf700fc 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -1723,7 +1723,7 @@ pg_get_partkeydef_worker(Oid relid, int prettyFlags, { case PARTITION_STRATEGY_HASH: if (!attrsOnly) - appendStringInfo(&buf, "HASH"); + appendStringInfoString(&buf, "HASH"); break; case PARTITION_STRATEGY_LIST: if (!attrsOnly) diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c index 79f17e4089..8d8ac11b66 100644 --- a/src/bin/pg_basebackup/streamutil.c +++ b/src/bin/pg_basebackup/streamutil.c @@ -500,19 +500,19 @@ CreateReplicationSlot(PGconn *conn, const char *slot_name, const char *plugin, /* Build query */ appendPQExpBuffer(query, "CREATE_REPLICATION_SLOT \"%s\"", slot_name); if (is_temporary) - appendPQExpBuffer(query, " TEMPORARY"); + appendPQExpBufferStr(query, " TEMPORARY"); if (is_physical) { - appendPQExpBuffer(query, " PHYSICAL"); + appendPQExpBufferStr(query, " PHYSICAL"); if (reserve_wal) - appendPQExpBuffer(query, " RESERVE_WAL"); + appendPQExpBufferStr(query, " RESERVE_WAL"); } else { appendPQExpBuffer(query, " LOGICAL \"%s\"", plugin); if (PQserverVersion(conn) >= 100000) /* pg_recvlogical doesn't use an exported snapshot, so suppress */ - appendPQExpBuffer(query, " NOEXPORT_SNAPSHOT"); + appendPQExpBufferStr(query, " NOEXPORT_SNAPSHOT"); } res = PQexec(conn, query->data); diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index dfb6c19f5a..a10bc8d545 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -1481,14 +1481,14 @@ pgwin32_CommandLine(bool registration) appendPQExpBuffer(cmdLine, " -e \"%s\"", event_source); if (registration && do_wait) - appendPQExpBuffer(cmdLine, " -w"); + appendPQExpBufferStr(cmdLine, " -w"); /* Don't propagate a value from an environment variable. */ if (registration && wait_seconds_arg && wait_seconds != DEFAULT_WAIT) appendPQExpBuffer(cmdLine, " -t %d", wait_seconds); if (registration && silent_mode) - appendPQExpBuffer(cmdLine, " -s"); + appendPQExpBufferStr(cmdLine, " -s"); if (post_opts) { diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index ef8b53cd09..2c49b0ff36 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -425,7 +425,7 @@ buildDefaultACLCommands(const char *type, const char *nspname, if (strlen(initacls) != 0 || strlen(initracls) != 0) { - appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\n"); + appendPQExpBufferStr(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\n"); if (!buildACLCommands("", NULL, NULL, type, initacls, initracls, owner, prefix->data, remoteVersion, sql)) @@ -433,7 +433,7 @@ buildDefaultACLCommands(const char *type, const char *nspname, destroyPQExpBuffer(prefix); return false; } - appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\n"); + appendPQExpBufferStr(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\n"); } if (!buildACLCommands("", NULL, NULL, type, diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 40c77af540..0f40328310 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -554,8 +554,8 @@ RestoreArchive(Archive *AHX) */ if (strncmp(dropStmt, "ALTER TABLE", 11) == 0) { - appendPQExpBuffer(ftStmt, - "ALTER TABLE IF EXISTS"); + appendPQExpBufferStr(ftStmt, + "ALTER TABLE IF EXISTS"); dropStmt = dropStmt + 11; } @@ -4870,7 +4870,7 @@ CloneArchive(ArchiveHandle *AH) * any data to/from the database. */ initPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, PQdb(AH->connection)); pghost = PQhost(AH->connection); pgport = PQport(AH->connection); diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c index 8af5c7bebd..9d33c86a3b 100644 --- a/src/bin/pg_dump/pg_backup_db.c +++ b/src/bin/pg_dump/pg_backup_db.c @@ -149,7 +149,7 @@ _connectDB(ArchiveHandle *AH, const char *reqdb, const char *requser) } initPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, newdb); do diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 1cd25adb6c..806fc78f04 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -1205,7 +1205,7 @@ setup_connection(Archive *AH, const char *dumpencoding, { PQExpBuffer query = createPQExpBuffer(); - appendPQExpBuffer(query, "SET TRANSACTION SNAPSHOT "); + appendPQExpBufferStr(query, "SET TRANSACTION SNAPSHOT "); appendStringLiteralConn(query, AH->sync_snapshot_id, conn); ExecuteSqlStatement(AH, query->data); destroyPQExpBuffer(query); @@ -1315,8 +1315,8 @@ expand_schema_name_patterns(Archive *fout, for (cell = patterns->head; cell; cell = cell->next) { - appendPQExpBuffer(query, - "SELECT oid FROM pg_catalog.pg_namespace n\n"); + appendPQExpBufferStr(query, + "SELECT oid FROM pg_catalog.pg_namespace n\n"); processSQLNamePattern(GetConnection(fout), query, cell->val, false, false, NULL, "n.nspname", NULL, NULL); @@ -3733,7 +3733,7 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) if (polinfo->polwithcheck != NULL) appendPQExpBuffer(query, " WITH CHECK (%s)", polinfo->polwithcheck); - appendPQExpBuffer(query, ";\n"); + appendPQExpBufferStr(query, ";\n"); appendPQExpBuffer(delqry, "DROP POLICY %s", fmtId(polinfo->polname)); appendPQExpBuffer(delqry, " ON %s;\n", fmtQualifiedDumpable(tbinfo)); @@ -4560,7 +4560,7 @@ getNamespaces(Archive *fout, int *numNamespaces) init_acl_subquery->data, init_racl_subquery->data); - appendPQExpBuffer(query, ") "); + appendPQExpBufferStr(query, ") "); destroyPQExpBuffer(acl_subquery); destroyPQExpBuffer(racl_subquery); @@ -5248,9 +5248,9 @@ getAccessMethods(Archive *fout, int *numAccessMethods) query = createPQExpBuffer(); /* Select all access methods from pg_am table */ - appendPQExpBuffer(query, "SELECT tableoid, oid, amname, amtype, " - "amhandler::pg_catalog.regproc AS amhandler " - "FROM pg_am"); + appendPQExpBufferStr(query, "SELECT tableoid, oid, amname, amtype, " + "amhandler::pg_catalog.regproc AS amhandler " + "FROM pg_am"); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); @@ -8128,10 +8128,10 @@ getTransforms(Archive *fout, int *numTransforms) query = createPQExpBuffer(); - appendPQExpBuffer(query, "SELECT tableoid, oid, " - "trftype, trflang, trffromsql::oid, trftosql::oid " - "FROM pg_transform " - "ORDER BY 3,4"); + appendPQExpBufferStr(query, "SELECT tableoid, oid, " + "trftype, trflang, trffromsql::oid, trftosql::oid " + "FROM pg_transform " + "ORDER BY 3,4"); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); @@ -8255,55 +8255,55 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables) resetPQExpBuffer(q); - appendPQExpBuffer(q, - "SELECT\n" - "a.attnum,\n" - "a.attname,\n" - "a.atttypmod,\n" - "a.attstattarget,\n" - "a.attstorage,\n" - "t.typstorage,\n" - "a.attnotnull,\n" - "a.atthasdef,\n" - "a.attisdropped,\n" - "a.attlen,\n" - "a.attalign,\n" - "a.attislocal,\n" - "pg_catalog.format_type(t.oid, a.atttypmod) AS atttypname,\n"); + appendPQExpBufferStr(q, + "SELECT\n" + "a.attnum,\n" + "a.attname,\n" + "a.atttypmod,\n" + "a.attstattarget,\n" + "a.attstorage,\n" + "t.typstorage,\n" + "a.attnotnull,\n" + "a.atthasdef,\n" + "a.attisdropped,\n" + "a.attlen,\n" + "a.attalign,\n" + "a.attislocal,\n" + "pg_catalog.format_type(t.oid, a.atttypmod) AS atttypname,\n"); if (fout->remoteVersion >= 120000) - appendPQExpBuffer(q, - "a.attgenerated,\n"); + appendPQExpBufferStr(q, + "a.attgenerated,\n"); else - appendPQExpBuffer(q, - "'' AS attgenerated,\n"); + appendPQExpBufferStr(q, + "'' AS attgenerated,\n"); if (fout->remoteVersion >= 110000) - appendPQExpBuffer(q, - "CASE WHEN a.atthasmissing AND NOT a.attisdropped " - "THEN a.attmissingval ELSE null END AS attmissingval,\n"); + appendPQExpBufferStr(q, + "CASE WHEN a.atthasmissing AND NOT a.attisdropped " + "THEN a.attmissingval ELSE null END AS attmissingval,\n"); else - appendPQExpBuffer(q, - "NULL AS attmissingval,\n"); + appendPQExpBufferStr(q, + "NULL AS attmissingval,\n"); if (fout->remoteVersion >= 100000) - appendPQExpBuffer(q, - "a.attidentity,\n"); + appendPQExpBufferStr(q, + "a.attidentity,\n"); else - appendPQExpBuffer(q, - "'' AS attidentity,\n"); + appendPQExpBufferStr(q, + "'' AS attidentity,\n"); if (fout->remoteVersion >= 90200) - appendPQExpBuffer(q, - "pg_catalog.array_to_string(ARRAY(" - "SELECT pg_catalog.quote_ident(option_name) || " - "' ' || pg_catalog.quote_literal(option_value) " - "FROM pg_catalog.pg_options_to_table(attfdwoptions) " - "ORDER BY option_name" - "), E',\n ') AS attfdwoptions,\n"); + appendPQExpBufferStr(q, + "pg_catalog.array_to_string(ARRAY(" + "SELECT pg_catalog.quote_ident(option_name) || " + "' ' || pg_catalog.quote_literal(option_value) " + "FROM pg_catalog.pg_options_to_table(attfdwoptions) " + "ORDER BY option_name" + "), E',\n ') AS attfdwoptions,\n"); else - appendPQExpBuffer(q, - "'' AS attfdwoptions,\n"); + appendPQExpBufferStr(q, + "'' AS attfdwoptions,\n"); if (fout->remoteVersion >= 90100) { @@ -8312,20 +8312,20 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables) * collation is different from their type's default, we use a CASE * here to suppress uninteresting attcollations cheaply. */ - appendPQExpBuffer(q, - "CASE WHEN a.attcollation <> t.typcollation " - "THEN a.attcollation ELSE 0 END AS attcollation,\n"); + appendPQExpBufferStr(q, + "CASE WHEN a.attcollation <> t.typcollation " + "THEN a.attcollation ELSE 0 END AS attcollation,\n"); } else - appendPQExpBuffer(q, - "0 AS attcollation,\n"); + appendPQExpBufferStr(q, + "0 AS attcollation,\n"); if (fout->remoteVersion >= 90000) - appendPQExpBuffer(q, - "array_to_string(a.attoptions, ', ') AS attoptions\n"); + appendPQExpBufferStr(q, + "array_to_string(a.attoptions, ', ') AS attoptions\n"); else - appendPQExpBuffer(q, - "'' AS attoptions\n"); + appendPQExpBufferStr(q, + "'' AS attoptions\n"); /* need left join here to not fail on dropped columns ... */ appendPQExpBuffer(q, @@ -12331,7 +12331,7 @@ dumpTransform(Archive *fout, TransformInfo *transform) if (transform->trftosql) { if (transform->trffromsql) - appendPQExpBuffer(defqry, ", "); + appendPQExpBufferStr(defqry, ", "); if (tosqlFuncInfo) { @@ -12349,7 +12349,7 @@ dumpTransform(Archive *fout, TransformInfo *transform) pg_log_warning("bogus value in pg_transform.trftosql field"); } - appendPQExpBuffer(defqry, ");\n"); + appendPQExpBufferStr(defqry, ");\n"); appendPQExpBuffer(labelq, "TRANSFORM FOR %s LANGUAGE %s", transformType, lanname); @@ -12724,10 +12724,10 @@ dumpAccessMethod(Archive *fout, AccessMethodInfo *aminfo) switch (aminfo->amtype) { case AMTYPE_INDEX: - appendPQExpBuffer(q, "TYPE INDEX "); + appendPQExpBufferStr(q, "TYPE INDEX "); break; case AMTYPE_TABLE: - appendPQExpBuffer(q, "TYPE TABLE "); + appendPQExpBufferStr(q, "TYPE TABLE "); break; default: pg_log_warning("invalid type \"%c\" of access method \"%s\"", @@ -13433,23 +13433,23 @@ dumpCollation(Archive *fout, CollInfo *collinfo) qcollname = pg_strdup(fmtId(collinfo->dobj.name)); /* Get collation-specific details */ - appendPQExpBuffer(query, "SELECT "); + appendPQExpBufferStr(query, "SELECT "); if (fout->remoteVersion >= 100000) - appendPQExpBuffer(query, - "collprovider, " - "collversion, "); + appendPQExpBufferStr(query, + "collprovider, " + "collversion, "); else - appendPQExpBuffer(query, - "'c' AS collprovider, " - "NULL AS collversion, "); + appendPQExpBufferStr(query, + "'c' AS collprovider, " + "NULL AS collversion, "); if (fout->remoteVersion >= 120000) - appendPQExpBuffer(query, - "collisdeterministic, "); + appendPQExpBufferStr(query, + "collisdeterministic, "); else - appendPQExpBuffer(query, - "true AS collisdeterministic, "); + appendPQExpBufferStr(query, + "true AS collisdeterministic, "); appendPQExpBuffer(query, "collcollate, " @@ -13665,7 +13665,7 @@ format_aggregate_signature(AggInfo *agginfo, Archive *fout, bool honor_quotes) appendPQExpBufferStr(&buf, agginfo->aggfn.dobj.name); if (agginfo->aggfn.nargs == 0) - appendPQExpBuffer(&buf, "(*)"); + appendPQExpBufferStr(&buf, "(*)"); else { appendPQExpBufferChar(&buf, '('); @@ -14883,13 +14883,13 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId, */ if (strlen(initacls) != 0 || strlen(initracls) != 0) { - appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\n"); + appendPQExpBufferStr(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\n"); if (!buildACLCommands(name, subname, nspname, type, initacls, initracls, owner, "", fout->remoteVersion, sql)) fatal("could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)", initacls, initracls, name, type); - appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\n"); + appendPQExpBufferStr(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\n"); } if (!buildACLCommands(name, subname, nspname, type, @@ -16591,7 +16591,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) } if (indxinfo->indnkeyattrs < indxinfo->indnattrs) - appendPQExpBuffer(q, ") INCLUDE ("); + appendPQExpBufferStr(q, ") INCLUDE ("); for (k = indxinfo->indnkeyattrs; k < indxinfo->indnattrs; k++) { @@ -16988,9 +16988,9 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) "ALTER COLUMN %s ADD GENERATED ", fmtId(owning_tab->attnames[tbinfo->owning_col - 1])); if (owning_tab->attidentity[tbinfo->owning_col - 1] == ATTRIBUTE_IDENTITY_ALWAYS) - appendPQExpBuffer(query, "ALWAYS"); + appendPQExpBufferStr(query, "ALWAYS"); else if (owning_tab->attidentity[tbinfo->owning_col - 1] == ATTRIBUTE_IDENTITY_BY_DEFAULT) - appendPQExpBuffer(query, "BY DEFAULT"); + appendPQExpBufferStr(query, "BY DEFAULT"); appendPQExpBuffer(query, " AS IDENTITY (\n SEQUENCE NAME %s\n", fmtQualifiedDumpable(tbinfo)); } diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 66e0a610ab..158c0c74b2 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -1432,8 +1432,8 @@ expand_dbname_patterns(PGconn *conn, for (SimpleStringListCell *cell = patterns->head; cell; cell = cell->next) { - appendPQExpBuffer(query, - "SELECT datname FROM pg_catalog.pg_database n\n"); + appendPQExpBufferStr(query, + "SELECT datname FROM pg_catalog.pg_database n\n"); processSQLNamePattern(conn, query, cell->val, false, false, NULL, "datname", NULL, NULL); diff --git a/src/bin/pg_upgrade/dump.c b/src/bin/pg_upgrade/dump.c index 0ffe171a05..c1429fe4bf 100644 --- a/src/bin/pg_upgrade/dump.c +++ b/src/bin/pg_upgrade/dump.c @@ -42,7 +42,7 @@ generate_old_dump(void) escaped_connstr; initPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, old_db->db_name); initPQExpBuffer(&escaped_connstr); appendShellString(&escaped_connstr, connstr.data); diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 6263f8a779..66e1aec011 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -2992,7 +2992,7 @@ do_connect(enum trivalue reuse_previous_specification, if (!dbname && reuse_previous) { initPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, PQdb(o_conn)); dbname = connstr.data; /* has_connection_string=true would be a dead store */ @@ -4576,7 +4576,7 @@ lookup_object_oid(EditableObjectType obj_type, const char *desc, */ appendPQExpBufferStr(query, "SELECT "); appendStringLiteralConn(query, desc, pset.db); - appendPQExpBuffer(query, "::pg_catalog.regclass::pg_catalog.oid"); + appendPQExpBufferStr(query, "::pg_catalog.regclass::pg_catalog.oid"); break; } diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 0e0af5f942..8b4cd53631 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2115,8 +2115,8 @@ describeOneTableDetails(const char *schemaname, " pg_catalog.pg_get_expr(c.relpartbound, inhrelid)"); /* If verbose, also request the partition constraint definition */ if (verbose) - appendPQExpBuffer(&buf, - ",\n pg_catalog.pg_get_partition_constraintdef(inhrelid)"); + appendPQExpBufferStr(&buf, + ",\n pg_catalog.pg_get_partition_constraintdef(inhrelid)"); appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_class c" " JOIN pg_catalog.pg_inherits i" @@ -2203,9 +2203,9 @@ describeOneTableDetails(const char *schemaname, " false AS condeferrable, false AS condeferred,\n"); if (pset.sversion >= 90400) - appendPQExpBuffer(&buf, "i.indisreplident,\n"); + appendPQExpBufferStr(&buf, "i.indisreplident,\n"); else - appendPQExpBuffer(&buf, "false AS indisreplident,\n"); + appendPQExpBufferStr(&buf, "false AS indisreplident,\n"); appendPQExpBuffer(&buf, " a.amname, c2.relname, " "pg_catalog.pg_get_expr(i.indpred, i.indrelid, true)\n" @@ -2263,7 +2263,7 @@ describeOneTableDetails(const char *schemaname, appendPQExpBufferStr(&tmpbuf, _(", initially deferred")); if (strcmp(indisreplident, "t") == 0) - appendPQExpBuffer(&tmpbuf, _(", replica identity")); + appendPQExpBufferStr(&tmpbuf, _(", replica identity")); printTableAddFooter(&cont, tmpbuf.data); add_tablespace_footer(&cont, tableinfo.relkind, @@ -2374,7 +2374,7 @@ describeOneTableDetails(const char *schemaname, appendPQExpBufferStr(&buf, " INVALID"); if (strcmp(PQgetvalue(result, i, 10), "t") == 0) - appendPQExpBuffer(&buf, " REPLICA IDENTITY"); + appendPQExpBufferStr(&buf, " REPLICA IDENTITY"); printTableAddFooter(&cont, buf.data); @@ -2457,8 +2457,8 @@ describeOneTableDetails(const char *schemaname, oid); if (pset.sversion >= 120000) - appendPQExpBuffer(&buf, " AND conparentid = 0\n"); - appendPQExpBuffer(&buf, "ORDER BY conname"); + appendPQExpBufferStr(&buf, " AND conparentid = 0\n"); + appendPQExpBufferStr(&buf, "ORDER BY conname"); } result = PSQLexec(buf.data); @@ -2556,11 +2556,11 @@ describeOneTableDetails(const char *schemaname, { printfPQExpBuffer(&buf, "SELECT pol.polname,"); if (pset.sversion >= 100000) - appendPQExpBuffer(&buf, - " pol.polpermissive,\n"); + appendPQExpBufferStr(&buf, + " pol.polpermissive,\n"); else - appendPQExpBuffer(&buf, - " 't' as polpermissive,\n"); + appendPQExpBufferStr(&buf, + " 't' as polpermissive,\n"); appendPQExpBuffer(&buf, " CASE WHEN pol.polroles = '{0}' THEN NULL ELSE pg_catalog.array_to_string(array(select rolname from pg_catalog.pg_roles where oid = any (pol.polroles) order by 1),',') END,\n" " pg_catalog.pg_get_expr(pol.polqual, pol.polrelid),\n" @@ -2608,7 +2608,7 @@ describeOneTableDetails(const char *schemaname, PQgetvalue(result, i, 0)); if (*(PQgetvalue(result, i, 1)) == 'f') - appendPQExpBuffer(&buf, " AS RESTRICTIVE"); + appendPQExpBufferStr(&buf, " AS RESTRICTIVE"); if (!PQgetisnull(result, i, 5)) appendPQExpBuffer(&buf, " FOR %s", @@ -2913,12 +2913,12 @@ describeOneTableDetails(const char *schemaname, "t.tgconstraint <> 0 AS tgisinternal" : "false AS tgisinternal"), oid); if (pset.sversion >= 110000) - appendPQExpBuffer(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D') \n" - " OR EXISTS (SELECT 1 FROM pg_catalog.pg_depend WHERE objid = t.oid \n" - " AND refclassid = 'pg_catalog.pg_trigger'::pg_catalog.regclass))"); + appendPQExpBufferStr(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D') \n" + " OR EXISTS (SELECT 1 FROM pg_catalog.pg_depend WHERE objid = t.oid \n" + " AND refclassid = 'pg_catalog.pg_trigger'::pg_catalog.regclass))"); else if (pset.sversion >= 90000) /* display/warn about disabled internal triggers */ - appendPQExpBuffer(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D'))"); + appendPQExpBufferStr(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D'))"); else if (pset.sversion >= 80300) appendPQExpBufferStr(&buf, "(t.tgconstraint = 0 OR (t.tgconstraint <> 0 AND t.tgenabled = 'D'))"); else @@ -3935,33 +3935,33 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose) { if (pset.sversion < 120000) { - appendPQExpBuffer(&buf, - ",\n LATERAL (WITH RECURSIVE d\n" - " AS (SELECT inhrelid AS oid, 1 AS level\n" - " FROM pg_catalog.pg_inherits\n" - " WHERE inhparent = c.oid\n" - " UNION ALL\n" - " SELECT inhrelid, level + 1\n" - " FROM pg_catalog.pg_inherits i\n" - " JOIN d ON i.inhparent = d.oid)\n" - " SELECT pg_catalog.pg_size_pretty(sum(pg_catalog.pg_table_size(" - "d.oid))) AS tps,\n" - " pg_catalog.pg_size_pretty(sum(" - "\n CASE WHEN d.level = 1" - " THEN pg_catalog.pg_table_size(d.oid) ELSE 0 END)) AS dps\n" - " FROM d) s"); + appendPQExpBufferStr(&buf, + ",\n LATERAL (WITH RECURSIVE d\n" + " AS (SELECT inhrelid AS oid, 1 AS level\n" + " FROM pg_catalog.pg_inherits\n" + " WHERE inhparent = c.oid\n" + " UNION ALL\n" + " SELECT inhrelid, level + 1\n" + " FROM pg_catalog.pg_inherits i\n" + " JOIN d ON i.inhparent = d.oid)\n" + " SELECT pg_catalog.pg_size_pretty(sum(pg_catalog.pg_table_size(" + "d.oid))) AS tps,\n" + " pg_catalog.pg_size_pretty(sum(" + "\n CASE WHEN d.level = 1" + " THEN pg_catalog.pg_table_size(d.oid) ELSE 0 END)) AS dps\n" + " FROM d) s"); } else { /* PostgreSQL 12 has pg_partition_tree function */ - appendPQExpBuffer(&buf, - ",\n LATERAL (SELECT pg_catalog.pg_size_pretty(sum(" - "\n CASE WHEN ppt.isleaf AND ppt.level = 1" - "\n THEN pg_catalog.pg_table_size(ppt.relid)" - " ELSE 0 END)) AS dps" - ",\n pg_catalog.pg_size_pretty(sum(" - "pg_catalog.pg_table_size(ppt.relid))) AS tps" - "\n FROM pg_catalog.pg_partition_tree(c.oid) ppt) s"); + appendPQExpBufferStr(&buf, + ",\n LATERAL (SELECT pg_catalog.pg_size_pretty(sum(" + "\n CASE WHEN ppt.isleaf AND ppt.level = 1" + "\n THEN pg_catalog.pg_table_size(ppt.relid)" + " ELSE 0 END)) AS dps" + ",\n pg_catalog.pg_size_pretty(sum(" + "pg_catalog.pg_table_size(ppt.relid))) AS tps" + "\n FROM pg_catalog.pg_partition_tree(c.oid) ppt) s"); } } @@ -4003,7 +4003,7 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose) return false; initPQExpBuffer(&title); - appendPQExpBuffer(&title, "%s", tabletitle); + appendPQExpBufferStr(&title, tabletitle); myopt.nullPrint = NULL; myopt.title = title.data; @@ -4567,8 +4567,8 @@ listSchemas(const char *pattern, bool verbose, bool showSystem) gettext_noop("Description")); } - appendPQExpBuffer(&buf, - "\nFROM pg_catalog.pg_namespace n\n"); + appendPQExpBufferStr(&buf, + "\nFROM pg_catalog.pg_namespace n\n"); if (!showSystem && !pattern) appendPQExpBufferStr(&buf, @@ -5768,10 +5768,10 @@ describePublications(const char *pattern) " pg_catalog.pg_get_userbyid(pubowner) AS owner,\n" " puballtables, pubinsert, pubupdate, pubdelete"); if (has_pubtruncate) - appendPQExpBuffer(&buf, - ", pubtruncate"); - appendPQExpBuffer(&buf, - "\nFROM pg_catalog.pg_publication\n"); + appendPQExpBufferStr(&buf, + ", pubtruncate"); + appendPQExpBufferStr(&buf, + "\nFROM pg_catalog.pg_publication\n"); processSQLNamePattern(pset.db, &buf, pattern, false, false, NULL, "pubname", NULL, diff --git a/src/bin/scripts/clusterdb.c b/src/bin/scripts/clusterdb.c index 15fff91e16..ae0facd5a7 100644 --- a/src/bin/scripts/clusterdb.c +++ b/src/bin/scripts/clusterdb.c @@ -254,7 +254,7 @@ cluster_all_databases(bool verbose, const char *maintenance_db, } resetPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, dbname); cluster_one_database(connstr.data, verbose, NULL, diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c index 3528de21e0..ca61348a0e 100644 --- a/src/bin/scripts/reindexdb.c +++ b/src/bin/scripts/reindexdb.c @@ -420,7 +420,7 @@ reindex_all_databases(const char *maintenance_db, } resetPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, dbname); reindex_one_database(NULL, connstr.data, REINDEX_DATABASE, host, diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index df2a315f95..3bcd14b4dc 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -477,16 +477,16 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts, if (!tables_listed) { - appendPQExpBuffer(&catalog_query, - "WITH listed_tables (table_oid, column_list) " - "AS (\n VALUES ("); + appendPQExpBufferStr(&catalog_query, + "WITH listed_tables (table_oid, column_list) " + "AS (\n VALUES ("); tables_listed = true; } else - appendPQExpBuffer(&catalog_query, ",\n ("); + appendPQExpBufferStr(&catalog_query, ",\n ("); appendStringLiteralConn(&catalog_query, just_table, conn); - appendPQExpBuffer(&catalog_query, "::pg_catalog.regclass, "); + appendPQExpBufferStr(&catalog_query, "::pg_catalog.regclass, "); if (just_columns && just_columns[0] != '\0') appendStringLiteralConn(&catalog_query, just_columns, conn); @@ -500,24 +500,24 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts, /* Finish formatting the CTE */ if (tables_listed) - appendPQExpBuffer(&catalog_query, "\n)\n"); + appendPQExpBufferStr(&catalog_query, "\n)\n"); - appendPQExpBuffer(&catalog_query, "SELECT c.relname, ns.nspname"); + appendPQExpBufferStr(&catalog_query, "SELECT c.relname, ns.nspname"); if (tables_listed) - appendPQExpBuffer(&catalog_query, ", listed_tables.column_list"); + appendPQExpBufferStr(&catalog_query, ", listed_tables.column_list"); - appendPQExpBuffer(&catalog_query, - " FROM pg_catalog.pg_class c\n" - " JOIN pg_catalog.pg_namespace ns" - " ON c.relnamespace OPERATOR(pg_catalog.=) ns.oid\n" - " LEFT JOIN pg_catalog.pg_class t" - " ON c.reltoastrelid OPERATOR(pg_catalog.=) t.oid\n"); + appendPQExpBufferStr(&catalog_query, + " FROM pg_catalog.pg_class c\n" + " JOIN pg_catalog.pg_namespace ns" + " ON c.relnamespace OPERATOR(pg_catalog.=) ns.oid\n" + " LEFT JOIN pg_catalog.pg_class t" + " ON c.reltoastrelid OPERATOR(pg_catalog.=) t.oid\n"); /* Used to match the tables listed by the user */ if (tables_listed) - appendPQExpBuffer(&catalog_query, " JOIN listed_tables" - " ON listed_tables.table_oid OPERATOR(pg_catalog.=) c.oid\n"); + appendPQExpBufferStr(&catalog_query, " JOIN listed_tables" + " ON listed_tables.table_oid OPERATOR(pg_catalog.=) c.oid\n"); /* * If no tables were listed, filter for the relevant relation types. If @@ -527,9 +527,9 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts, */ if (!tables_listed) { - appendPQExpBuffer(&catalog_query, " WHERE c.relkind OPERATOR(pg_catalog.=) ANY (array[" - CppAsString2(RELKIND_RELATION) ", " - CppAsString2(RELKIND_MATVIEW) "])\n"); + appendPQExpBufferStr(&catalog_query, " WHERE c.relkind OPERATOR(pg_catalog.=) ANY (array[" + CppAsString2(RELKIND_RELATION) ", " + CppAsString2(RELKIND_MATVIEW) "])\n"); has_where = true; } @@ -568,7 +568,7 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts, * Execute the catalog query. We use the default search_path for this * query for consistency with table lookups done elsewhere by the user. */ - appendPQExpBuffer(&catalog_query, " ORDER BY c.relpages DESC;"); + appendPQExpBufferStr(&catalog_query, " ORDER BY c.relpages DESC;"); executeCommand(conn, "RESET search_path;", progname, echo); res = executeQuery(conn, catalog_query.data, progname, echo); termPQExpBuffer(&catalog_query); @@ -775,7 +775,7 @@ vacuum_all_databases(vacuumingOptions *vacopts, for (i = 0; i < PQntuples(result); i++) { resetPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, PQgetvalue(result, i, 0)); vacuum_one_database(connstr.data, vacopts, @@ -792,7 +792,7 @@ vacuum_all_databases(vacuumingOptions *vacopts, for (i = 0; i < PQntuples(result); i++) { resetPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, PQgetvalue(result, i, 0)); vacuum_one_database(connstr.data, vacopts, diff --git a/src/fe_utils/string_utils.c b/src/fe_utils/string_utils.c index d5757becef..8c3a603cf1 100644 --- a/src/fe_utils/string_utils.c +++ b/src/fe_utils/string_utils.c @@ -624,10 +624,10 @@ appendPsqlMetaConnect(PQExpBuffer buf, const char *dbname) PQExpBufferData connstr; initPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); + appendPQExpBufferStr(&connstr, "dbname="); appendConnStrVal(&connstr, dbname); - appendPQExpBuffer(buf, "-reuse-previous=on "); + appendPQExpBufferStr(buf, "-reuse-previous=on "); /* * As long as the name does not contain a newline, SQL identifier diff --git a/src/interfaces/libpq/fe-auth-scram.c b/src/interfaces/libpq/fe-auth-scram.c index babdc06198..04ee43441c 100644 --- a/src/interfaces/libpq/fe-auth-scram.c +++ b/src/interfaces/libpq/fe-auth-scram.c @@ -346,7 +346,7 @@ build_client_first_message(fe_scram_state *state) if (strcmp(state->sasl_mechanism, SCRAM_SHA_256_PLUS_NAME) == 0) { Assert(conn->ssl_in_use); - appendPQExpBuffer(&buf, "p=tls-server-end-point"); + appendPQExpBufferStr(&buf, "p=tls-server-end-point"); } #ifdef HAVE_PGTLS_GET_PEER_CERTIFICATE_HASH else if (conn->ssl_in_use) @@ -354,7 +354,7 @@ build_client_first_message(fe_scram_state *state) /* * Client supports channel binding, but thinks the server does not. */ - appendPQExpBuffer(&buf, "y"); + appendPQExpBufferChar(&buf, 'y'); } #endif else @@ -362,7 +362,7 @@ build_client_first_message(fe_scram_state *state) /* * Client does not support channel binding. */ - appendPQExpBuffer(&buf, "n"); + appendPQExpBufferChar(&buf, 'n'); } if (PQExpBufferDataBroken(buf)) @@ -437,7 +437,7 @@ build_client_final_message(fe_scram_state *state) return NULL; } - appendPQExpBuffer(&buf, "c="); + appendPQExpBufferStr(&buf, "c="); /* p=type,, */ cbind_header_len = strlen("p=tls-server-end-point,,"); @@ -475,10 +475,10 @@ build_client_final_message(fe_scram_state *state) } #ifdef HAVE_PGTLS_GET_PEER_CERTIFICATE_HASH else if (conn->ssl_in_use) - appendPQExpBuffer(&buf, "c=eSws"); /* base64 of "y,," */ + appendPQExpBufferStr(&buf, "c=eSws"); /* base64 of "y,," */ #endif else - appendPQExpBuffer(&buf, "c=biws"); /* base64 of "n,," */ + appendPQExpBufferStr(&buf, "c=biws"); /* base64 of "n,," */ if (PQExpBufferDataBroken(buf)) goto oom_error; @@ -496,7 +496,7 @@ build_client_final_message(fe_scram_state *state) state->client_final_message_without_proof, client_proof); - appendPQExpBuffer(&buf, ",p="); + appendPQExpBufferStr(&buf, ",p="); if (!enlargePQExpBuffer(&buf, pg_b64_enc_len(SCRAM_KEY_LEN))) goto oom_error; buf.len += pg_b64_encode((char *) client_proof, diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index c800d7921e..d70cf1f948 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -2772,8 +2772,8 @@ keep_going: /* We will come back to here until there is } else if (!conn->gctx && conn->gssencmode[0] == 'r') { - appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("GSSAPI encryption required, but was impossible (possibly no ccache, no server support, or using a local socket)\n")); + appendPQExpBufferStr(&conn->errorMessage, + libpq_gettext("GSSAPI encryption required, but was impossible (possibly no ccache, no server support, or using a local socket)\n")); goto error_return; } #endif diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index 467563d7a4..bbba48bc8b 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -996,7 +996,7 @@ pqBuildErrorMessage3(PQExpBuffer msg, const PGresult *res, /* If we couldn't allocate a PGresult, just say "out of memory" */ if (res == NULL) { - appendPQExpBuffer(msg, libpq_gettext("out of memory\n")); + appendPQExpBufferStr(msg, libpq_gettext("out of memory\n")); return; } @@ -1009,7 +1009,7 @@ pqBuildErrorMessage3(PQExpBuffer msg, const PGresult *res, if (res->errMsg && res->errMsg[0]) appendPQExpBufferStr(msg, res->errMsg); else - appendPQExpBuffer(msg, libpq_gettext("no error message available\n")); + appendPQExpBufferStr(msg, libpq_gettext("no error message available\n")); return; }