Fixup various StringInfo function usages

This adjusts various appendStringInfo* function calls to use a more
appropriate and efficient function with the same behavior.  For example,
use appendStringInfoChar() when appending a single character rather than
appendStringInfo() and appendStringInfoString() when no formatting is
required rather than using appendStringInfo().

All adjustments made here are in code that's new to v17, so it makes
sense to fix these now rather than wait a few years and make
backpatching harder.

Discussion: https://postgr.es/m/CAApHDvojY2UvMiO+9_55ArTj10P1LBNJyyoGB+C65BLDNT0GsQ@mail.gmail.com
Reviewed-by: Nathan Bossart, Tom Lane
pull/159/head
David Rowley 1 year ago
parent ff9f72c68f
commit 8461424fd7
  1. 4
      contrib/postgres_fdw/deparse.c
  2. 2
      src/backend/replication/logical/slotsync.c
  3. 2
      src/backend/replication/logical/tablesync.c
  4. 8
      src/backend/utils/adt/ri_triggers.c
  5. 20
      src/backend/utils/adt/ruleutils.c

@ -1887,7 +1887,7 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel,
} }
/* Close parentheses for EXISTS subquery */ /* Close parentheses for EXISTS subquery */
appendStringInfo(&str, ")"); appendStringInfoChar(&str, ')');
*additional_conds = lappend(*additional_conds, str.data); *additional_conds = lappend(*additional_conds, str.data);
} }
@ -1921,7 +1921,7 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel,
*/ */
if (fpinfo->jointype == JOIN_SEMI) if (fpinfo->jointype == JOIN_SEMI)
{ {
appendStringInfo(buf, "%s", join_sql_o.data); appendBinaryStringInfo(buf, join_sql_o.data, join_sql_o.len);
} }
else else
{ {

@ -1311,7 +1311,7 @@ ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len)
if (cluster_name[0]) if (cluster_name[0])
appendStringInfo(&app_name, "%s_%s", cluster_name, "slotsync worker"); appendStringInfo(&app_name, "%s_%s", cluster_name, "slotsync worker");
else else
appendStringInfo(&app_name, "%s", "slotsync worker"); appendStringInfoString(&app_name, "slotsync worker");
/* /*
* Establish the connection to the primary server for slot * Establish the connection to the primary server for slot

@ -1154,7 +1154,7 @@ copy_table(Relation rel)
appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i])); appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i]));
} }
appendStringInfoString(&cmd, ")"); appendStringInfoChar(&cmd, ')');
} }
appendStringInfoString(&cmd, " TO STDOUT"); appendStringInfoString(&cmd, " TO STDOUT");

@ -426,13 +426,13 @@ RI_FKey_check(TriggerData *trigdata)
{ {
Oid fk_type = RIAttType(fk_rel, riinfo->fk_attnums[riinfo->nkeys - 1]); Oid fk_type = RIAttType(fk_rel, riinfo->fk_attnums[riinfo->nkeys - 1]);
appendStringInfo(&querybuf, ") x1 HAVING "); appendStringInfoString(&querybuf, ") x1 HAVING ");
sprintf(paramname, "$%d", riinfo->nkeys); sprintf(paramname, "$%d", riinfo->nkeys);
ri_GenerateQual(&querybuf, "", ri_GenerateQual(&querybuf, "",
paramname, fk_type, paramname, fk_type,
riinfo->agged_period_contained_by_oper, riinfo->agged_period_contained_by_oper,
"pg_catalog.range_agg", ANYMULTIRANGEOID); "pg_catalog.range_agg", ANYMULTIRANGEOID);
appendStringInfo(&querybuf, "(x1.r)"); appendStringInfoString(&querybuf, "(x1.r)");
} }
/* Prepare and save the plan */ /* Prepare and save the plan */
@ -594,13 +594,13 @@ ri_Check_Pk_Match(Relation pk_rel, Relation fk_rel,
{ {
Oid fk_type = RIAttType(fk_rel, riinfo->fk_attnums[riinfo->nkeys - 1]); Oid fk_type = RIAttType(fk_rel, riinfo->fk_attnums[riinfo->nkeys - 1]);
appendStringInfo(&querybuf, ") x1 HAVING "); appendStringInfoString(&querybuf, ") x1 HAVING ");
sprintf(paramname, "$%d", riinfo->nkeys); sprintf(paramname, "$%d", riinfo->nkeys);
ri_GenerateQual(&querybuf, "", ri_GenerateQual(&querybuf, "",
paramname, fk_type, paramname, fk_type,
riinfo->agged_period_contained_by_oper, riinfo->agged_period_contained_by_oper,
"pg_catalog.range_agg", ANYMULTIRANGEOID); "pg_catalog.range_agg", ANYMULTIRANGEOID);
appendStringInfo(&querybuf, "(x1.r)"); appendStringInfoString(&querybuf, "(x1.r)");
} }
/* Prepare and save the plan */ /* Prepare and save the plan */

@ -7176,16 +7176,16 @@ get_merge_query_def(Query *query, deparse_context *context,
switch (action->matchKind) switch (action->matchKind)
{ {
case MERGE_WHEN_MATCHED: case MERGE_WHEN_MATCHED:
appendStringInfo(buf, "MATCHED"); appendStringInfoString(buf, "MATCHED");
break; break;
case MERGE_WHEN_NOT_MATCHED_BY_SOURCE: case MERGE_WHEN_NOT_MATCHED_BY_SOURCE:
appendStringInfo(buf, "NOT MATCHED BY SOURCE"); appendStringInfoString(buf, "NOT MATCHED BY SOURCE");
break; break;
case MERGE_WHEN_NOT_MATCHED_BY_TARGET: case MERGE_WHEN_NOT_MATCHED_BY_TARGET:
if (haveNotMatchedBySource) if (haveNotMatchedBySource)
appendStringInfo(buf, "NOT MATCHED BY TARGET"); appendStringInfoString(buf, "NOT MATCHED BY TARGET");
else else
appendStringInfo(buf, "NOT MATCHED"); appendStringInfoString(buf, "NOT MATCHED");
break; break;
default: default:
elog(ERROR, "unrecognized matchKind: %d", elog(ERROR, "unrecognized matchKind: %d",
@ -8850,18 +8850,18 @@ get_json_expr_options(JsonExpr *jsexpr, deparse_context *context,
if (jsexpr->op == JSON_QUERY_OP) if (jsexpr->op == JSON_QUERY_OP)
{ {
if (jsexpr->wrapper == JSW_CONDITIONAL) if (jsexpr->wrapper == JSW_CONDITIONAL)
appendStringInfo(context->buf, " WITH CONDITIONAL WRAPPER"); appendStringInfoString(context->buf, " WITH CONDITIONAL WRAPPER");
else if (jsexpr->wrapper == JSW_UNCONDITIONAL) else if (jsexpr->wrapper == JSW_UNCONDITIONAL)
appendStringInfo(context->buf, " WITH UNCONDITIONAL WRAPPER"); appendStringInfoString(context->buf, " WITH UNCONDITIONAL WRAPPER");
/* The default */ /* The default */
else if (jsexpr->wrapper == JSW_NONE || jsexpr->wrapper == JSW_UNSPEC) else if (jsexpr->wrapper == JSW_NONE || jsexpr->wrapper == JSW_UNSPEC)
appendStringInfo(context->buf, " WITHOUT WRAPPER"); appendStringInfoString(context->buf, " WITHOUT WRAPPER");
if (jsexpr->omit_quotes) if (jsexpr->omit_quotes)
appendStringInfo(context->buf, " OMIT QUOTES"); appendStringInfoString(context->buf, " OMIT QUOTES");
/* The default */ /* The default */
else else
appendStringInfo(context->buf, " KEEP QUOTES"); appendStringInfoString(context->buf, " KEEP QUOTES");
} }
if (jsexpr->on_empty && jsexpr->on_empty->btype != default_behavior) if (jsexpr->on_empty && jsexpr->on_empty->btype != default_behavior)
@ -10206,7 +10206,7 @@ get_rule_expr(Node *node, deparse_context *context,
JSON_BEHAVIOR_NULL : JSON_BEHAVIOR_NULL :
JSON_BEHAVIOR_FALSE); JSON_BEHAVIOR_FALSE);
appendStringInfoString(buf, ")"); appendStringInfoChar(buf, ')');
} }
break; break;

Loading…
Cancel
Save