1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-26 12:21:12 +03:00

Fix an assortment of improper usages of string functions

In a similar effort to f736e188c and 110d81728, fixup various usages of
string functions where a more appropriate function is available and more
fit for purpose.

These changes include:

1. Use cstring_to_text_with_len() instead of cstring_to_text() when
   working with a StringInfoData and the length can easily be obtained.
2. Use appendStringInfoString() instead of appendStringInfo() when no
   formatting is required.
3. Use pstrdup(...) instead of psprintf("%s", ...)
4. Use pstrdup(...) instead of psprintf(...) (with no formatting)
5. Use appendPQExpBufferChar() instead of appendPQExpBufferStr() when the
   length of the string being appended is 1.
6. appendStringInfoChar() instead of appendStringInfo() when no formatting
   is required and string is 1 char long.
7. Use appendPQExpBufferStr(b, .) instead of appendPQExpBuffer(b, "%s", .)
8. Don't use pstrdup when it's fine to just point to the string constant.

I (David) did find other cases of #8 but opted to use #4 instead as I
wasn't certain enough that applying #8 was ok (e.g in hba.c)

Author: Ranier Vilela, David Rowley
Discussion: https://postgr.es/m/CAApHDvo2j2+RJBGhNtUz6BxabWWh2Jx16wMUMWKUjv70Ver1vg@mail.gmail.com
This commit is contained in:
David Rowley
2022-09-06 13:19:44 +12:00
parent 6bcda4a721
commit 8b26769bc4
18 changed files with 277 additions and 284 deletions

View File

@ -1325,7 +1325,7 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
}
appendStringInfoChar(&dst, '}');
PG_RETURN_TEXT_P(cstring_to_text(dst.data));
PG_RETURN_TEXT_P(cstring_to_text_with_len(dst.data, dst.len));
}
PG_FUNCTION_INFO_V1(hstore_to_json);
@ -1370,7 +1370,7 @@ hstore_to_json(PG_FUNCTION_ARGS)
}
appendStringInfoChar(&dst, '}');
PG_RETURN_TEXT_P(cstring_to_text(dst.data));
PG_RETURN_TEXT_P(cstring_to_text_with_len(dst.data, dst.len));
}
PG_FUNCTION_INFO_V1(hstore_to_jsonb);

View File

@ -84,7 +84,7 @@ sepgsql_schema_post_create(Oid namespaceId)
* check db_schema:{create}
*/
initStringInfo(&audit_name);
appendStringInfo(&audit_name, "%s", quote_identifier(nsp_name));
appendStringInfoString(&audit_name, quote_identifier(nsp_name));
sepgsql_avc_check_perms_label(ncontext,
SEPG_CLASS_DB_SCHEMA,
SEPG_DB_SCHEMA__CREATE,

View File

@ -3063,7 +3063,7 @@ brin_minmax_multi_summary_out(PG_FUNCTION_ARGS)
appendStringInfo(&str, "%s ... %s", a, b);
c = cstring_to_text(str.data);
c = cstring_to_text_with_len(str.data, str.len);
astate_values = accumArrayResult(astate_values,
PointerGetDatum(c),
@ -3095,15 +3095,9 @@ brin_minmax_multi_summary_out(PG_FUNCTION_ARGS)
{
Datum a;
text *b;
StringInfoData str;
initStringInfo(&str);
a = FunctionCall1(&fmgrinfo, ranges_deserialized->values[idx++]);
appendStringInfoString(&str, DatumGetCString(a));
b = cstring_to_text(str.data);
b = cstring_to_text(DatumGetCString(a));
astate_values = accumArrayResult(astate_values,
PointerGetDatum(b),

View File

@ -319,9 +319,9 @@ XLogRecGetBlockRefInfo(XLogReaderState *record, bool pretty,
*fpi_len += XLogRecGetBlock(record, block_id)->bimg_len;
if (XLogRecBlockImageApply(record, block_id))
appendStringInfo(buf, " FPW");
appendStringInfoString(buf, " FPW");
else
appendStringInfo(buf, " FPW for WAL verification");
appendStringInfoString(buf, " FPW for WAL verification");
}
}
}

View File

@ -514,7 +514,7 @@ llvm_function_reference(LLVMJitContext *context,
else if (basename != NULL)
{
/* internal function */
funcname = psprintf("%s", basename);
funcname = pstrdup(basename);
}
else
{

View File

@ -899,7 +899,7 @@ do { \
errmsg("missing entry at end of line"), \
errcontext("line %d of configuration file \"%s\"", \
line_num, IdentFileName))); \
*err_msg = psprintf("missing entry at end of line"); \
*err_msg = pstrdup("missing entry at end of line"); \
return NULL; \
} \
} while (0)
@ -912,7 +912,7 @@ do { \
errmsg("multiple values in ident field"), \
errcontext("line %d of configuration file \"%s\"", \
line_num, IdentFileName))); \
*err_msg = psprintf("multiple values in ident field"); \
*err_msg = pstrdup("multiple values in ident field"); \
return NULL; \
} \
} while (0)

View File

@ -4457,7 +4457,7 @@ BackendInitialize(Port *port)
appendStringInfo(&ps_data, "%s ", port->user_name);
if (!am_walsender)
appendStringInfo(&ps_data, "%s ", port->database_name);
appendStringInfo(&ps_data, "%s", port->remote_host);
appendStringInfoString(&ps_data, port->remote_host);
if (port->remote_port[0] != '\0')
appendStringInfo(&ps_data, "(%s)", port->remote_port);

View File

@ -769,7 +769,7 @@ fetch_remote_table_info(char *nspname, char *relname,
foreach(lc, MySubscription->publications)
{
if (foreach_current_index(lc) > 0)
appendStringInfo(&pub_names, ", ");
appendStringInfoString(&pub_names, ", ");
appendStringInfoString(&pub_names, quote_literal_cstr(strVal(lfirst(lc))));
}
@ -1062,7 +1062,7 @@ copy_table(Relation rel)
appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i]));
}
appendStringInfo(&cmd, ") TO STDOUT");
appendStringInfoString(&cmd, ") TO STDOUT");
}
else
{

View File

@ -96,7 +96,7 @@ anytime_typmodout(bool istz, int32 typmod)
if (typmod >= 0)
return psprintf("(%d)%s", (int) typmod, tz);
else
return psprintf("%s", tz);
return pstrdup(tz);
}

View File

@ -219,7 +219,7 @@ pg_tablespace_databases(PG_FUNCTION_ARGS)
}
if (tablespaceOid == DEFAULTTABLESPACE_OID)
location = psprintf("base");
location = "base";
else
location = psprintf("pg_tblspc/%u/%s", tablespaceOid,
TABLESPACE_VERSION_DIRECTORY);

View File

@ -1453,7 +1453,7 @@ pg_get_indexdef_worker(Oid indexrelid, int colno,
appendStringInfoChar(&buf, ')');
if (idxrec->indnullsnotdistinct)
appendStringInfo(&buf, " NULLS NOT DISTINCT");
appendStringInfoString(&buf, " NULLS NOT DISTINCT");
/*
* If it has options, append "WITH (options)"
@ -2332,9 +2332,9 @@ pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
Anum_pg_constraint_confdelsetcols, &isnull);
if (!isnull)
{
appendStringInfo(&buf, " (");
appendStringInfoString(&buf, " (");
decompile_column_index_array(val, conForm->conrelid, &buf);
appendStringInfo(&buf, ")");
appendStringInfoChar(&buf, ')');
}
break;
@ -2363,7 +2363,7 @@ pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
((Form_pg_index) GETSTRUCT(indtup))->indnullsnotdistinct)
appendStringInfoString(&buf, "NULLS NOT DISTINCT ");
appendStringInfoString(&buf, "(");
appendStringInfoChar(&buf, '(');
/* Fetch and build target column list */
val = SysCacheGetAttr(CONSTROID, tup,
@ -3583,7 +3583,7 @@ pg_get_function_sqlbody(PG_FUNCTION_ARGS)
ReleaseSysCache(proctup);
PG_RETURN_TEXT_P(cstring_to_text(buf.data));
PG_RETURN_TEXT_P(cstring_to_text_with_len(buf.data, buf.len));
}

View File

@ -131,7 +131,7 @@ anytimestamp_typmodout(bool istz, int32 typmod)
if (typmod >= 0)
return psprintf("(%d)%s", (int) typmod, tz);
else
return psprintf("%s", tz);
return pstrdup(tz);
}

View File

@ -1509,7 +1509,7 @@ append_db_pattern_cte(PQExpBuffer buf, const PatternInfoArray *pia,
have_values = true;
appendPQExpBuffer(buf, "%s\n(%d, ", comma, pattern_id);
appendStringLiteralConn(buf, info->db_regex, conn);
appendPQExpBufferStr(buf, ")");
appendPQExpBufferChar(buf, ')');
comma = ",";
}
}
@ -1765,7 +1765,7 @@ append_rel_pattern_raw_cte(PQExpBuffer buf, const PatternInfoArray *pia,
appendPQExpBufferStr(buf, ", true::BOOLEAN");
else
appendPQExpBufferStr(buf, ", false::BOOLEAN");
appendPQExpBufferStr(buf, ")");
appendPQExpBufferChar(buf, ')');
comma = ",";
}
@ -1972,7 +1972,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
* selected above, filtering by exclusion patterns (if any) that match
* btree index names.
*/
appendPQExpBuffer(&sql,
appendPQExpBufferStr(&sql,
", index (oid, nspname, relname, relpages) AS ("
"\nSELECT c.oid, r.nspname, c.relname, c.relpages "
"FROM relation r"
@ -2011,7 +2011,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
* primary heap tables selected above, filtering by exclusion patterns
* (if any) that match the toast index names.
*/
appendPQExpBuffer(&sql,
appendPQExpBufferStr(&sql,
", toast_index (oid, nspname, relname, relpages) AS ("
"\nSELECT c.oid, 'pg_toast', c.relname, c.relpages "
"FROM toast t "
@ -2044,7 +2044,7 @@ compile_relation_list_one_db(PGconn *conn, SimplePtrList *relations,
* matched in their own right, so we rely on UNION to deduplicate the
* list.
*/
appendPQExpBuffer(&sql,
appendPQExpBufferStr(&sql,
"\nSELECT pattern_id, is_heap, is_btree, oid, nspname, relname, relpages "
"FROM (");
appendPQExpBufferStr(&sql,

View File

@ -2838,21 +2838,21 @@ dumpDatabase(Archive *fout)
/*
* Fetch the database-level properties for this database.
*/
appendPQExpBuffer(dbQry, "SELECT tableoid, oid, datname, "
appendPQExpBufferStr(dbQry, "SELECT tableoid, oid, datname, "
"datdba, "
"pg_encoding_to_char(encoding) AS encoding, "
"datcollate, datctype, datfrozenxid, "
"datacl, acldefault('d', datdba) AS acldefault, "
"datistemplate, datconnlimit, ");
if (fout->remoteVersion >= 90300)
appendPQExpBuffer(dbQry, "datminmxid, ");
appendPQExpBufferStr(dbQry, "datminmxid, ");
else
appendPQExpBuffer(dbQry, "0 AS datminmxid, ");
appendPQExpBufferStr(dbQry, "0 AS datminmxid, ");
if (fout->remoteVersion >= 150000)
appendPQExpBuffer(dbQry, "datlocprovider, daticulocale, datcollversion, ");
appendPQExpBufferStr(dbQry, "datlocprovider, daticulocale, datcollversion, ");
else
appendPQExpBuffer(dbQry, "'c' AS datlocprovider, NULL AS daticulocale, NULL AS datcollversion, ");
appendPQExpBuffer(dbQry,
appendPQExpBufferStr(dbQry, "'c' AS datlocprovider, NULL AS daticulocale, NULL AS datcollversion, ");
appendPQExpBufferStr(dbQry,
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = dattablespace) AS tablespace, "
"shobj_description(oid, 'pg_database') AS description "
"FROM pg_database "
@ -3398,7 +3398,7 @@ getBlobs(Archive *fout)
pg_log_info("reading large objects");
/* Fetch BLOB OIDs, and owner/ACL data */
appendPQExpBuffer(blobQry,
appendPQExpBufferStr(blobQry,
"SELECT oid, lomowner, lomacl, "
"acldefault('L', lomowner) AS acldefault "
"FROM pg_largeobject_metadata");
@ -3685,9 +3685,9 @@ getPolicies(Archive *fout, TableInfo tblinfo[], int numTables)
printfPQExpBuffer(query,
"SELECT pol.oid, pol.tableoid, pol.polrelid, pol.polname, pol.polcmd, ");
if (fout->remoteVersion >= 100000)
appendPQExpBuffer(query, "pol.polpermissive, ");
appendPQExpBufferStr(query, "pol.polpermissive, ");
else
appendPQExpBuffer(query, "'t' as polpermissive, ");
appendPQExpBufferStr(query, "'t' as polpermissive, ");
appendPQExpBuffer(query,
"CASE WHEN pol.polroles = '{0}' THEN NULL ELSE "
" pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(rolname) from pg_catalog.pg_roles WHERE oid = ANY(pol.polroles)), ', ') END AS polroles, "
@ -3912,19 +3912,19 @@ getPublications(Archive *fout, int *numPublications)
/* Get the publications. */
if (fout->remoteVersion >= 130000)
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT p.tableoid, p.oid, p.pubname, "
"p.pubowner, "
"p.puballtables, p.pubinsert, p.pubupdate, p.pubdelete, p.pubtruncate, p.pubviaroot "
"FROM pg_publication p");
else if (fout->remoteVersion >= 110000)
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT p.tableoid, p.oid, p.pubname, "
"p.pubowner, "
"p.puballtables, p.pubinsert, p.pubupdate, p.pubdelete, p.pubtruncate, false AS pubviaroot "
"FROM pg_publication p");
else
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT p.tableoid, p.oid, p.pubname, "
"p.pubowner, "
"p.puballtables, p.pubinsert, p.pubupdate, p.pubdelete, false AS pubtruncate, false AS pubviaroot "
@ -4045,7 +4045,7 @@ dumpPublication(Archive *fout, const PublicationInfo *pubinfo)
first = false;
}
appendPQExpBufferStr(query, "'");
appendPQExpBufferChar(query, '\'');
if (pubinfo->pubviaroot)
appendPQExpBufferStr(query, ", publish_via_partition_root = true");
@ -4466,7 +4466,7 @@ getSubscriptions(Archive *fout)
query = createPQExpBuffer();
/* Get the subscriptions in current database. */
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT s.tableoid, s.oid, s.subname,\n"
" s.subowner,\n"
" s.subconninfo, s.subslotname, s.subsynccommit,\n"
@ -5022,7 +5022,7 @@ getNamespaces(Archive *fout, int *numNamespaces)
* we fetch all namespaces including system ones, so that every object we
* read in can be linked to a containing namespace.
*/
appendPQExpBuffer(query, "SELECT n.tableoid, n.oid, n.nspname, "
appendPQExpBufferStr(query, "SELECT n.tableoid, n.oid, n.nspname, "
"n.nspowner, "
"n.nspacl, "
"acldefault('n', n.nspowner) AS acldefault "
@ -5250,7 +5250,7 @@ getTypes(Archive *fout, int *numTypes)
* cost of the subselect probe for all standard types. This would have to
* be revisited if the backend ever allows renaming of array types.
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, typname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, typname, "
"typnamespace, typacl, "
"acldefault('T', typowner) AS acldefault, "
"typowner, "
@ -5403,7 +5403,7 @@ getOperators(Archive *fout, int *numOprs)
* system-defined operators at dump-out time.
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, oprname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, oprname, "
"oprnamespace, "
"oprowner, "
"oprkind, "
@ -5477,7 +5477,7 @@ getCollations(Archive *fout, int *numCollations)
* system-defined collations at dump-out time.
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, collname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, collname, "
"collnamespace, "
"collowner "
"FROM pg_collation");
@ -5545,7 +5545,7 @@ getConversions(Archive *fout, int *numConversions)
* system-defined conversions at dump-out time.
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, conname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, conname, "
"connamespace, "
"conowner "
"FROM pg_conversion");
@ -5682,7 +5682,7 @@ getOpclasses(Archive *fout, int *numOpclasses)
* system-defined opclasses at dump-out time.
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, opcname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, opcname, "
"opcnamespace, "
"opcowner "
"FROM pg_opclass");
@ -5750,7 +5750,7 @@ getOpfamilies(Archive *fout, int *numOpfamilies)
* system-defined opfamilies at dump-out time.
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, opfname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, opfname, "
"opfnamespace, "
"opfowner "
"FROM pg_opfamily");
@ -5856,7 +5856,7 @@ getAggregates(Archive *fout, int *numAggs)
}
else
{
appendPQExpBuffer(query, "SELECT tableoid, oid, proname AS aggname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, proname AS aggname, "
"pronamespace AS aggnamespace, "
"pronargs, proargtypes, "
"proowner, "
@ -6205,7 +6205,7 @@ getTables(Archive *fout, int *numTables)
* wrong answers if any concurrent DDL is happening.
*/
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT c.tableoid, c.oid, c.relname, "
"c.relnamespace, c.relkind, c.reltype, "
"c.relowner, "
@ -6732,7 +6732,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
}
appendPQExpBufferChar(tbloids, '}');
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT t.tableoid, t.oid, i.indrelid, "
"t.relname AS indexname, "
"pg_catalog.pg_get_indexdef(i.indexrelid) AS indexdef, "
@ -6747,14 +6747,14 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
if (fout->remoteVersion >= 90400)
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"i.indisreplident, ");
else
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"false AS indisreplident, ");
if (fout->remoteVersion >= 110000)
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"inh.inhparent AS parentidx, "
"i.indnkeyatts AS indnkeyatts, "
"i.indnatts AS indnatts, "
@ -6767,7 +6767,7 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
" WHERE attrelid = i.indexrelid AND "
" attstattarget >= 0) AS indstatvals, ");
else
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"0 AS parentidx, "
"i.indnatts AS indnkeyatts, "
"i.indnatts AS indnatts, "
@ -6775,10 +6775,10 @@ getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
"'' AS indstatvals, ");
if (fout->remoteVersion >= 150000)
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"i.indnullsnotdistinct ");
else
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"false AS indnullsnotdistinct ");
/*
@ -7002,11 +7002,11 @@ getExtendedStatistics(Archive *fout)
query = createPQExpBuffer();
if (fout->remoteVersion < 130000)
appendPQExpBuffer(query, "SELECT tableoid, oid, stxname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, stxname, "
"stxnamespace, stxowner, (-1) AS stxstattarget "
"FROM pg_catalog.pg_statistic_ext");
else
appendPQExpBuffer(query, "SELECT tableoid, oid, stxname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, stxname, "
"stxnamespace, stxowner, stxstattarget "
"FROM pg_catalog.pg_statistic_ext");
@ -7729,7 +7729,7 @@ getEventTriggers(Archive *fout, int *numEventTriggers)
query = createPQExpBuffer();
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT e.tableoid, e.oid, evtname, evtenabled, "
"evtevent, evtowner, "
"array_to_string(array("
@ -7809,7 +7809,7 @@ getProcLangs(Archive *fout, int *numProcLangs)
int i_acldefault;
int i_lanowner;
appendPQExpBuffer(query, "SELECT tableoid, oid, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, "
"lanname, lanpltrusted, lanplcallfoid, "
"laninline, lanvalidator, "
"lanacl, "
@ -8768,7 +8768,7 @@ getTSDictionaries(Archive *fout, int *numTSDicts)
query = createPQExpBuffer();
appendPQExpBuffer(query, "SELECT tableoid, oid, dictname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, dictname, "
"dictnamespace, dictowner, "
"dicttemplate, dictinitoption "
"FROM pg_ts_dict");
@ -8904,7 +8904,7 @@ getTSConfigurations(Archive *fout, int *numTSConfigs)
query = createPQExpBuffer();
appendPQExpBuffer(query, "SELECT tableoid, oid, cfgname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, cfgname, "
"cfgnamespace, cfgowner, cfgparser "
"FROM pg_ts_config");
@ -8972,7 +8972,7 @@ getForeignDataWrappers(Archive *fout, int *numForeignDataWrappers)
query = createPQExpBuffer();
appendPQExpBuffer(query, "SELECT tableoid, oid, fdwname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, fdwname, "
"fdwowner, "
"fdwhandler::pg_catalog.regproc, "
"fdwvalidator::pg_catalog.regproc, "
@ -9063,7 +9063,7 @@ getForeignServers(Archive *fout, int *numForeignServers)
query = createPQExpBuffer();
appendPQExpBuffer(query, "SELECT tableoid, oid, srvname, "
appendPQExpBufferStr(query, "SELECT tableoid, oid, srvname, "
"srvowner, "
"srvfdw, srvtype, srvversion, srvacl, "
"acldefault('S', srvowner) AS acldefault, "
@ -9167,7 +9167,7 @@ getDefaultACLs(Archive *fout, int *numDefaultACLs)
* for the case of 'S' (DEFACLOBJ_SEQUENCE) which must be converted to
* 's'.
*/
appendPQExpBuffer(query,
appendPQExpBufferStr(query,
"SELECT oid, tableoid, "
"defaclrole, "
"defaclnamespace, "
@ -15491,7 +15491,7 @@ dumpTableSchema(Archive *fout, const TableInfo *tbinfo)
appendStringLiteralAH(q, qualrelname, fout);
appendPQExpBufferStr(q, "::pg_catalog.regclass,");
appendStringLiteralAH(q, tbinfo->attnames[j], fout);
appendPQExpBufferStr(q, ",");
appendPQExpBufferChar(q, ',');
appendStringLiteralAH(q, tbinfo->attmissingval[j], fout);
appendPQExpBufferStr(q, ");\n\n");
}
@ -16361,11 +16361,11 @@ dumpConstraint(Archive *fout, const ConstraintInfo *coninfo)
}
else
{
appendPQExpBuffer(q, "%s",
appendPQExpBufferStr(q,
coninfo->contype == 'p' ? "PRIMARY KEY" : "UNIQUE");
if (indxinfo->indnullsnotdistinct)
appendPQExpBuffer(q, " NULLS NOT DISTINCT");
appendPQExpBuffer(q, " (");
appendPQExpBufferStr(q, " NULLS NOT DISTINCT");
appendPQExpBufferStr(q, " (");
for (k = 0; k < indxinfo->indnkeyattrs; k++)
{
int indkey = (int) indxinfo->indkeys[k];

View File

@ -978,7 +978,7 @@ dumpRoleMembership(PGconn *conn)
"ug.rolname AS grantor, "
"a.admin_option");
if (dump_inherit_option)
appendPQExpBuffer(buf, ", a.inherit_option");
appendPQExpBufferStr(buf, ", a.inherit_option");
appendPQExpBuffer(buf, " FROM pg_auth_members a "
"LEFT JOIN %s ur on ur.oid = a.roleid "
"LEFT JOIN %s um on um.oid = a.member "

View File

@ -3512,8 +3512,7 @@ printVerboseErrorMessages(CState *st, pg_time_usec_t *now, bool is_retry)
resetPQExpBuffer(buf);
printfPQExpBuffer(buf, "client %d ", st->id);
appendPQExpBuffer(buf, "%s",
(is_retry ?
appendPQExpBufferStr(buf, (is_retry ?
"repeats the transaction after the error" :
"ends the failed transaction"));
appendPQExpBuffer(buf, " (try %u", st->tries);
@ -3532,7 +3531,7 @@ printVerboseErrorMessages(CState *st, pg_time_usec_t *now, bool is_retry)
appendPQExpBuffer(buf, ", %.3f%% of the maximum time of tries was used",
(100.0 * (*now - st->txn_scheduled) / latency_limit));
}
appendPQExpBuffer(buf, ")\n");
appendPQExpBufferStr(buf, ")\n");
pg_log_info("%s", buf->data);
}

View File

@ -4889,9 +4889,9 @@ pset_value_string(const char *param, printQueryOpt *popt)
else if (strcmp(param, "footer") == 0)
return pstrdup(pset_bool_string(popt->topt.default_footer));
else if (strcmp(param, "format") == 0)
return psprintf("%s", _align2string(popt->topt.format));
return pstrdup(_align2string(popt->topt.format));
else if (strcmp(param, "linestyle") == 0)
return psprintf("%s", get_line_style(&popt->topt)->name);
return pstrdup(get_line_style(&popt->topt)->name);
else if (strcmp(param, "null") == 0)
return pset_quoted_string(popt->nullPrint
? popt->nullPrint

View File

@ -2148,7 +2148,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT inhparent::pg_catalog.regclass,\n"
" pg_catalog.pg_get_expr(c.relpartbound, c.oid),\n ");
appendPQExpBuffer(&buf,
appendPQExpBufferStr(&buf,
pset.sversion >= 140000 ? "inhdetachpending" :
"false as inhdetachpending");
@ -2311,7 +2311,7 @@ describeOneTableDetails(const char *schemaname,
printfPQExpBuffer(&tmpbuf, _("unique"));
if (strcmp(indnullsnotdistinct, "t") == 0)
appendPQExpBufferStr(&tmpbuf, _(" nulls not distinct"));
appendPQExpBuffer(&tmpbuf, _(", "));
appendPQExpBufferStr(&tmpbuf, _(", "));
}
else
resetPQExpBuffer(&tmpbuf);