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
This commit is contained in:
David Rowley 2019-07-04 13:01:13 +12:00
parent 5683b34956
commit 8abc13a889
25 changed files with 195 additions and 195 deletions

View File

@ -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);

View File

@ -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,

View File

@ -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);
}

View File

@ -702,7 +702,7 @@ sepgsql_audit_log(bool denied,
appendStringInfo(&buf, " %s", av_name);
}
}
appendStringInfo(&buf, " }");
appendStringInfoString(&buf, " }");
/*
* Call external audit module, if loaded

View File

@ -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)");

View File

@ -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]);

View File

@ -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);

View File

@ -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)

View File

@ -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);

View File

@ -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)
{

View File

@ -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,

View File

@ -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);

View File

@ -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

View File

@ -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));
}

View File

@ -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);

View File

@ -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);

View File

@ -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;
}

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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;
}