Fixup various StringInfo function usages
authorDavid Rowley <drowley@postgresql.org>
Tue, 9 Apr 2024 23:53:32 +0000 (11:53 +1200)
committerDavid Rowley <drowley@postgresql.org>
Tue, 9 Apr 2024 23:53:32 +0000 (11:53 +1200)
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
contrib/postgres_fdw/deparse.c
src/backend/replication/logical/slotsync.c
src/backend/replication/logical/tablesync.c
src/backend/utils/adt/ri_triggers.c
src/backend/utils/adt/ruleutils.c

index ce765ecc9044710b40b4c5e53189b54e7d04e2e6..fb590c87e67ba063cc122a5dc57656eda9c31ade 100644 (file)
@@ -1887,7 +1887,7 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel,
                }
 
                /* Close parentheses for EXISTS subquery */
-               appendStringInfo(&str, ")");
+               appendStringInfoChar(&str, ')');
 
                *additional_conds = lappend(*additional_conds, str.data);
            }
@@ -1921,7 +1921,7 @@ deparseFromExprForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel,
         */
        if (fpinfo->jointype == JOIN_SEMI)
        {
-           appendStringInfo(buf, "%s", join_sql_o.data);
+           appendBinaryStringInfo(buf, join_sql_o.data, join_sql_o.len);
        }
        else
        {
index d18e2c7342ab7a2b366d778b61cba2814e616fcd..97440cb6bf01b96e593d14c0867f79ee80066929 100644 (file)
@@ -1311,7 +1311,7 @@ ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len)
    if (cluster_name[0])
        appendStringInfo(&app_name, "%s_%s", cluster_name, "slotsync worker");
    else
-       appendStringInfo(&app_name, "%s", "slotsync worker");
+       appendStringInfoString(&app_name, "slotsync worker");
 
    /*
     * Establish the connection to the primary server for slot
index 1061d5b61b31cccb86fb5f448d0c5daca7dcd4ec..f1a3ad54595500e1308cd4d22632f1166b6d9925 100644 (file)
@@ -1154,7 +1154,7 @@ copy_table(Relation rel)
                appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i]));
            }
 
-           appendStringInfoString(&cmd, ")");
+           appendStringInfoChar(&cmd, ')');
        }
 
        appendStringInfoString(&cmd, " TO STDOUT");
index a2cc837ebf90f0aa486db81c6af94044bde1eecc..bbc2e3e2f0ae3615142779b505d8613b8373f231 100644 (file)
@@ -426,13 +426,13 @@ RI_FKey_check(TriggerData *trigdata)
        {
            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);
            ri_GenerateQual(&querybuf, "",
                            paramname, fk_type,
                            riinfo->agged_period_contained_by_oper,
                            "pg_catalog.range_agg", ANYMULTIRANGEOID);
-           appendStringInfo(&querybuf, "(x1.r)");
+           appendStringInfoString(&querybuf, "(x1.r)");
        }
 
        /* 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]);
 
-           appendStringInfo(&querybuf, ") x1 HAVING ");
+           appendStringInfoString(&querybuf, ") x1 HAVING ");
            sprintf(paramname, "$%d", riinfo->nkeys);
            ri_GenerateQual(&querybuf, "",
                            paramname, fk_type,
                            riinfo->agged_period_contained_by_oper,
                            "pg_catalog.range_agg", ANYMULTIRANGEOID);
-           appendStringInfo(&querybuf, "(x1.r)");
+           appendStringInfoString(&querybuf, "(x1.r)");
        }
 
        /* Prepare and save the plan */
index 52bf87ac55b9d997a0025f09f95dde02c17f6eb9..24e3514b0053e54160e096290552746dfb9e13ad 100644 (file)
@@ -7176,16 +7176,16 @@ get_merge_query_def(Query *query, deparse_context *context,
        switch (action->matchKind)
        {
            case MERGE_WHEN_MATCHED:
-               appendStringInfo(buf, "MATCHED");
+               appendStringInfoString(buf, "MATCHED");
                break;
            case MERGE_WHEN_NOT_MATCHED_BY_SOURCE:
-               appendStringInfo(buf, "NOT MATCHED BY SOURCE");
+               appendStringInfoString(buf, "NOT MATCHED BY SOURCE");
                break;
            case MERGE_WHEN_NOT_MATCHED_BY_TARGET:
                if (haveNotMatchedBySource)
-                   appendStringInfo(buf, "NOT MATCHED BY TARGET");
+                   appendStringInfoString(buf, "NOT MATCHED BY TARGET");
                else
-                   appendStringInfo(buf, "NOT MATCHED");
+                   appendStringInfoString(buf, "NOT MATCHED");
                break;
            default:
                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->wrapper == JSW_CONDITIONAL)
-           appendStringInfo(context->buf, " WITH CONDITIONAL WRAPPER");
+           appendStringInfoString(context->buf, " WITH CONDITIONAL WRAPPER");
        else if (jsexpr->wrapper == JSW_UNCONDITIONAL)
-           appendStringInfo(context->buf, " WITH UNCONDITIONAL WRAPPER");
+           appendStringInfoString(context->buf, " WITH UNCONDITIONAL WRAPPER");
        /* The default */
        else if (jsexpr->wrapper == JSW_NONE || jsexpr->wrapper == JSW_UNSPEC)
-           appendStringInfo(context->buf, " WITHOUT WRAPPER");
+           appendStringInfoString(context->buf, " WITHOUT WRAPPER");
 
        if (jsexpr->omit_quotes)
-           appendStringInfo(context->buf, " OMIT QUOTES");
+           appendStringInfoString(context->buf, " OMIT QUOTES");
        /* The default */
        else
-           appendStringInfo(context->buf, " KEEP QUOTES");
+           appendStringInfoString(context->buf, " KEEP QUOTES");
    }
 
    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_FALSE);
 
-               appendStringInfoString(buf, ")");
+               appendStringInfoChar(buf, ')');
            }
            break;