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 tof736e188c
and110d81728
, 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:
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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),
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -514,7 +514,7 @@ llvm_function_reference(LLVMJitContext *context,
|
||||
else if (basename != NULL)
|
||||
{
|
||||
/* internal function */
|
||||
funcname = psprintf("%s", basename);
|
||||
funcname = pstrdup(basename);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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];
|
||||
|
@ -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 "
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user