From 77d05706beb115b412728bd94dce16d83795583d Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 15 Aug 2017 23:34:39 -0400 Subject: [PATCH] Fix up some misusage of appendStringInfo() and friends Change to appendStringInfoChar() or appendStringInfoString() where those can be used. Author: David Rowley Reviewed-by: Ashutosh Bapat --- contrib/postgres_fdw/deparse.c | 32 +++++++++---------- src/backend/commands/subscriptioncmds.c | 10 +++--- src/backend/nodes/outfuncs.c | 6 ++-- .../libpqwalreceiver/libpqwalreceiver.c | 12 +++---- src/backend/utils/adt/ruleutils.c | 20 ++++++------ src/backend/utils/adt/xml.c | 4 +-- src/backend/utils/mmgr/freepage.c | 8 ++--- src/bin/pg_dump/pg_dump.c | 5 ++- src/bin/pg_dump/pg_dumpall.c | 2 +- src/bin/psql/command.c | 4 +-- src/bin/psql/describe.c | 2 +- src/bin/scripts/createuser.c | 2 +- src/interfaces/libpq/fe-connect.c | 4 +-- 13 files changed, 55 insertions(+), 56 deletions(-) diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c index 2af8364010..285cf1b2ee 100644 --- a/contrib/postgres_fdw/deparse.c +++ b/contrib/postgres_fdw/deparse.c @@ -973,7 +973,7 @@ deparseSelectStmtForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *rel, /* Append HAVING clause */ if (remote_conds) { - appendStringInfo(buf, " HAVING "); + appendStringInfoString(buf, " HAVING "); appendConditions(remote_conds, &context); } } @@ -1076,7 +1076,7 @@ deparseFromExpr(List *quals, deparse_expr_cxt *context) /* Construct WHERE clause */ if (quals != NIL) { - appendStringInfo(buf, " WHERE "); + appendStringInfoString(buf, " WHERE "); appendConditions(quals, context); } } @@ -1447,15 +1447,15 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, context.root = root; context.params_list = params_list; - appendStringInfo(buf, "("); + appendStringInfoChar(buf, '('); appendConditions(fpinfo->joinclauses, &context); - appendStringInfo(buf, ")"); + appendStringInfoChar(buf, ')'); } else appendStringInfoString(buf, "(TRUE)"); /* End the FROM clause entry. */ - appendStringInfo(buf, ")"); + appendStringInfoChar(buf, ')'); } else { @@ -1702,7 +1702,7 @@ deparseDirectUpdateSql(StringInfo buf, PlannerInfo *root, if (remote_conds) { - appendStringInfo(buf, " WHERE "); + appendStringInfoString(buf, " WHERE "); appendConditions(remote_conds, &context); } @@ -1762,7 +1762,7 @@ deparseDirectDeleteSql(StringInfo buf, PlannerInfo *root, if (remote_conds) { - appendStringInfo(buf, " WHERE "); + appendStringInfoString(buf, " WHERE "); appendConditions(remote_conds, &context); } @@ -1978,17 +1978,17 @@ deparseColumnRef(StringInfo buf, int varno, int varattno, PlannerInfo *root, { appendStringInfoString(buf, "CASE WHEN ("); ADD_REL_QUALIFIER(buf, varno); - appendStringInfo(buf, "*)::text IS NOT NULL THEN "); + appendStringInfoString(buf, "*)::text IS NOT NULL THEN "); } appendStringInfoString(buf, "ROW("); deparseTargetList(buf, root, varno, rel, false, attrs_used, qualify_col, &retrieved_attrs); - appendStringInfoString(buf, ")"); + appendStringInfoChar(buf, ')'); /* Complete the CASE WHEN statement started above. */ if (qualify_col) - appendStringInfo(buf, " END"); + appendStringInfoString(buf, " END"); heap_close(rel, NoLock); bms_free(attrs_used); @@ -2759,7 +2759,7 @@ deparseAggref(Aggref *node, deparse_expr_cxt *context) appendStringInfoChar(buf, '('); /* Add DISTINCT */ - appendStringInfo(buf, "%s", (node->aggdistinct != NIL) ? "DISTINCT " : ""); + appendStringInfoString(buf, (node->aggdistinct != NIL) ? "DISTINCT " : ""); if (AGGKIND_IS_ORDERED_SET(node->aggkind)) { @@ -2944,7 +2944,7 @@ appendGroupByClause(List *tlist, deparse_expr_cxt *context) if (!query->groupClause) return; - appendStringInfo(buf, " GROUP BY "); + appendStringInfoString(buf, " GROUP BY "); /* * Queries with grouping sets are not pushed down, so we don't expect @@ -2981,7 +2981,7 @@ appendOrderByClause(List *pathkeys, deparse_expr_cxt *context) /* Make sure any constants in the exprs are printed portably */ nestlevel = set_transmission_modes(); - appendStringInfo(buf, " ORDER BY"); + appendStringInfoString(buf, " ORDER BY"); foreach(lcell, pathkeys) { PathKey *pathkey = lfirst(lcell); @@ -3035,7 +3035,7 @@ appendFunctionName(Oid funcid, deparse_expr_cxt *context) /* Always print the function name */ proname = NameStr(procform->proname); - appendStringInfo(buf, "%s", quote_identifier(proname)); + appendStringInfoString(buf, quote_identifier(proname)); ReleaseSysCache(proctup); } @@ -3070,9 +3070,9 @@ deparseSortGroupClause(Index ref, List *tlist, deparse_expr_cxt *context) else { /* Always parenthesize the expression. */ - appendStringInfoString(buf, "("); + appendStringInfoChar(buf, '('); deparseExpr(expr, context); - appendStringInfoString(buf, ")"); + appendStringInfoChar(buf, ')'); } return (Node *) expr; diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 005e74201d..9bc1d178fc 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -1117,9 +1117,9 @@ fetch_table_list(WalReceiverConn *wrconn, List *publications) Assert(list_length(publications) > 0); initStringInfo(&cmd); - appendStringInfo(&cmd, "SELECT DISTINCT t.schemaname, t.tablename\n" - " FROM pg_catalog.pg_publication_tables t\n" - " WHERE t.pubname IN ("); + appendStringInfoString(&cmd, "SELECT DISTINCT t.schemaname, t.tablename\n" + " FROM pg_catalog.pg_publication_tables t\n" + " WHERE t.pubname IN ("); first = true; foreach(lc, publications) { @@ -1130,9 +1130,9 @@ fetch_table_list(WalReceiverConn *wrconn, List *publications) else appendStringInfoString(&cmd, ", "); - appendStringInfo(&cmd, "%s", quote_literal_cstr(pubname)); + appendStringInfoString(&cmd, quote_literal_cstr(pubname)); } - appendStringInfoString(&cmd, ")"); + appendStringInfoChar(&cmd, ')'); res = walrcv_exec(wrconn, cmd.data, 2, tableRow); pfree(cmd.data); diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 379d92a2b0..5ce3c7c599 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -83,7 +83,7 @@ static void outChar(StringInfo str, char c); /* Write a character-string (possibly NULL) field */ #define WRITE_STRING_FIELD(fldname) \ - (appendStringInfo(str, " :" CppAsString(fldname) " "), \ + (appendStringInfoString(str, " :" CppAsString(fldname) " "), \ outToken(str, node->fldname)) /* Write a parse location field (actually same as INT case) */ @@ -92,12 +92,12 @@ static void outChar(StringInfo str, char c); /* Write a Node field */ #define WRITE_NODE_FIELD(fldname) \ - (appendStringInfo(str, " :" CppAsString(fldname) " "), \ + (appendStringInfoString(str, " :" CppAsString(fldname) " "), \ outNode(str, node->fldname)) /* Write a bitmapset field */ #define WRITE_BITMAPSET_FIELD(fldname) \ - (appendStringInfo(str, " :" CppAsString(fldname) " "), \ + (appendStringInfoString(str, " :" CppAsString(fldname) " "), \ outBitmapset(str, node->fldname)) diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c index 37b481c002..3957bd37fb 100644 --- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c +++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c @@ -355,7 +355,7 @@ libpqrcv_startstreaming(WalReceiverConn *conn, options->slotname); if (options->logical) - appendStringInfo(&cmd, " LOGICAL"); + appendStringInfoString(&cmd, " LOGICAL"); appendStringInfo(&cmd, " %X/%X", (uint32) (options->startpoint >> 32), @@ -774,21 +774,21 @@ libpqrcv_create_slot(WalReceiverConn *conn, const char *slotname, appendStringInfo(&cmd, "CREATE_REPLICATION_SLOT \"%s\"", slotname); if (temporary) - appendStringInfo(&cmd, " TEMPORARY"); + appendStringInfoString(&cmd, " TEMPORARY"); if (conn->logical) { - appendStringInfo(&cmd, " LOGICAL pgoutput"); + appendStringInfoString(&cmd, " LOGICAL pgoutput"); switch (snapshot_action) { case CRS_EXPORT_SNAPSHOT: - appendStringInfo(&cmd, " EXPORT_SNAPSHOT"); + appendStringInfoString(&cmd, " EXPORT_SNAPSHOT"); break; case CRS_NOEXPORT_SNAPSHOT: - appendStringInfo(&cmd, " NOEXPORT_SNAPSHOT"); + appendStringInfoString(&cmd, " NOEXPORT_SNAPSHOT"); break; case CRS_USE_SNAPSHOT: - appendStringInfo(&cmd, " USE_SNAPSHOT"); + appendStringInfoString(&cmd, " USE_SNAPSHOT"); break; } } diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index e9bd64b7a8..7469ec773c 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -1656,11 +1656,11 @@ pg_get_partkeydef_worker(Oid relid, int prettyFlags, { case PARTITION_STRATEGY_LIST: if (!attrsOnly) - appendStringInfo(&buf, "LIST"); + appendStringInfoString(&buf, "LIST"); break; case PARTITION_STRATEGY_RANGE: if (!attrsOnly) - appendStringInfo(&buf, "RANGE"); + appendStringInfoString(&buf, "RANGE"); break; default: elog(ERROR, "unexpected partition strategy: %d", @@ -1668,7 +1668,7 @@ pg_get_partkeydef_worker(Oid relid, int prettyFlags, } if (!attrsOnly) - appendStringInfo(&buf, " ("); + appendStringInfoString(&buf, " ("); sep = ""; for (keyno = 0; keyno < form->partnatts; keyno++) { @@ -5635,10 +5635,10 @@ get_rule_sortgroupclause(Index ref, List *tlist, bool force_colno, ||IsA(expr, WindowFunc)); if (need_paren) - appendStringInfoString(context->buf, "("); + appendStringInfoChar(context->buf, '('); get_rule_expr(expr, context, true); if (need_paren) - appendStringInfoString(context->buf, ")"); + appendStringInfoChar(context->buf, ')'); } return expr; @@ -5665,7 +5665,7 @@ get_rule_groupingset(GroupingSet *gset, List *targetlist, case GROUPING_SET_SIMPLE: { if (!omit_parens || list_length(gset->content) != 1) - appendStringInfoString(buf, "("); + appendStringInfoChar(buf, '('); foreach(l, gset->content) { @@ -5678,7 +5678,7 @@ get_rule_groupingset(GroupingSet *gset, List *targetlist, } if (!omit_parens || list_length(gset->content) != 1) - appendStringInfoString(buf, ")"); + appendStringInfoChar(buf, ')'); } return; @@ -5701,7 +5701,7 @@ get_rule_groupingset(GroupingSet *gset, List *targetlist, sep = ", "; } - appendStringInfoString(buf, ")"); + appendStringInfoChar(buf, ')'); } /* @@ -8713,7 +8713,7 @@ get_rule_expr(Node *node, deparse_context *context, sep = ", "; } - appendStringInfoString(buf, ")"); + appendStringInfoChar(buf, ')'); break; case PARTITION_STRATEGY_RANGE: @@ -10941,7 +10941,7 @@ get_range_partbound_string(List *bound_datums) } sep = ", "; } - appendStringInfoString(buf, ")"); + appendStringInfoChar(buf, ')'); return buf->data; } diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 323614c183..c47624eff6 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -3458,8 +3458,8 @@ map_sql_type_to_xmlschema_type(Oid typeoid, int typmod) case BPCHAROID: case VARCHAROID: case TEXTOID: - appendStringInfo(&result, - " \n"); + appendStringInfoString(&result, + " \n"); if (typmod != -1) appendStringInfo(&result, " \n", diff --git a/src/backend/utils/mmgr/freepage.c b/src/backend/utils/mmgr/freepage.c index 7566a66970..b455484bef 100644 --- a/src/backend/utils/mmgr/freepage.c +++ b/src/backend/utils/mmgr/freepage.c @@ -455,7 +455,7 @@ FreePageManagerDump(FreePageManager *fpm) recycle = relptr_access(base, fpm->btree_recycle); if (recycle != NULL) { - appendStringInfo(&buf, "btree recycle:"); + appendStringInfoString(&buf, "btree recycle:"); FreePageManagerDumpSpans(fpm, recycle, 1, &buf); } @@ -468,7 +468,7 @@ FreePageManagerDump(FreePageManager *fpm) continue; if (!dumped_any_freelist) { - appendStringInfo(&buf, "freelists:\n"); + appendStringInfoString(&buf, "freelists:\n"); dumped_any_freelist = true; } appendStringInfo(&buf, " %zu:", f + 1); @@ -1275,7 +1275,7 @@ FreePageManagerDumpBtree(FreePageManager *fpm, FreePageBtree *btp, btp->u.leaf_key[index].first_page, btp->u.leaf_key[index].npages); } - appendStringInfo(buf, "\n"); + appendStringInfoChar(buf, '\n'); if (btp->hdr.magic == FREE_PAGE_INTERNAL_MAGIC) { @@ -1308,7 +1308,7 @@ FreePageManagerDumpSpans(FreePageManager *fpm, FreePageSpanLeader *span, span = relptr_access(base, span->next); } - appendStringInfo(buf, "\n"); + appendStringInfoChar(buf, '\n'); } /* diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 628bdea1fd..b6e66267ff 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -15424,7 +15424,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) if (tbinfo->ispartition && !dopt->binary_upgrade) { - appendPQExpBufferStr(q, "\n"); + appendPQExpBufferChar(q, '\n'); appendPQExpBufferStr(q, tbinfo->partbound); } @@ -17127,8 +17127,7 @@ dumpRule(Archive *fout, RuleInfo *rinfo) appendPQExpBuffer(delcmd, "CREATE OR REPLACE VIEW %s.", fmtId(tbinfo->dobj.namespace->dobj.name)); - appendPQExpBuffer(delcmd, "%s", - fmtId(tbinfo->dobj.name)); + appendPQExpBufferStr(delcmd, fmtId(tbinfo->dobj.name)); result = createDummyViewAsClause(fout, tbinfo); appendPQExpBuffer(delcmd, " AS\n%s;\n", result->data); destroyPQExpBuffer(result); diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index c0a0346cd9..806b537e64 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -1575,7 +1575,7 @@ dumpDatabaseConfig(PGconn *conn, const char *dbname) appendStringLiteralConn(buf, dbname, conn); if (server_version >= 90000) - appendPQExpBuffer(buf, ")"); + appendPQExpBufferChar(buf, ')'); res = executeQuery(conn, buf->data); if (PQntuples(res) == 1 && diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 4e04459d45..96f3a402a4 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -4676,7 +4676,7 @@ get_create_object_cmd(EditableObjectType obj_type, Oid oid, psql_error("could not parse reloptions array\n"); result = false; } - appendPQExpBufferStr(buf, ")"); + appendPQExpBufferChar(buf, ')'); } /* View definition from pg_get_viewdef (a SELECT query) */ @@ -4862,7 +4862,7 @@ minimal_error_message(PGresult *res) appendPQExpBufferStr(msg, fld); else appendPQExpBufferStr(msg, "(not available)"); - appendPQExpBufferStr(msg, "\n"); + appendPQExpBufferChar(msg, '\n'); psql_error("%s", msg->data); diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 798e71045f..f6049cc9e5 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3177,7 +3177,7 @@ describeRoles(const char *pattern, bool verbose, bool showSystem) if (strcmp(PQgetvalue(res, i, 7), "") != 0) { if (buf.len > 0) - appendPQExpBufferStr(&buf, "\n"); + appendPQExpBufferChar(&buf, '\n'); appendPQExpBufferStr(&buf, _("Password valid until ")); appendPQExpBufferStr(&buf, PQgetvalue(res, i, 7)); } diff --git a/src/bin/scripts/createuser.c b/src/bin/scripts/createuser.c index d88093f8b6..0e36edcc5d 100644 --- a/src/bin/scripts/createuser.c +++ b/src/bin/scripts/createuser.c @@ -313,7 +313,7 @@ main(int argc, char *argv[]) if (cell->next) appendPQExpBuffer(&sql, "%s,", fmtId(cell->val)); else - appendPQExpBuffer(&sql, "%s", fmtId(cell->val)); + appendPQExpBufferStr(&sql, fmtId(cell->val)); } } appendPQExpBufferChar(&sql, ';'); diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 5a964bf0b5..d0e97ecdd4 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -5508,8 +5508,8 @@ conninfo_uri_parse_options(PQconninfoOption *options, const char *uri, if (prevchar != ',') break; ++p; /* advance past comma separator */ - appendPQExpBufferStr(&hostbuf, ","); - appendPQExpBufferStr(&portbuf, ","); + appendPQExpBufferChar(&hostbuf, ','); + appendPQExpBufferChar(&portbuf, ','); } /* Save final values for host and port. */ -- 2.40.0