From 637856b7dfa9caedf1f19e849484499f01cc64b5 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 24 Mar 2008 19:12:58 +0000 Subject: [PATCH] Fix various infelicities that have snuck into usage of errdetail() and friends. Avoid double translation of some messages, ensure other messages are exposed for translation (and make them follow the style guidelines), avoid unsafe passing of an unpredictable message text as a format string. --- src/backend/catalog/aclchk.c | 19 +++++++++---------- src/backend/catalog/pg_shdepend.c | 2 +- src/backend/commands/vacuumlazy.c | 8 ++++---- src/backend/utils/adt/xml.c | 14 +++++++------- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index 82016de1a9..4514e48e11 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -246,7 +246,7 @@ ExecuteGrantStmt(GrantStmt *stmt) { InternalGrant istmt; ListCell *cell; - char *errormsg; + const char *errormsg; AclMode all_privileges; /* @@ -294,31 +294,31 @@ ExecuteGrantStmt(GrantStmt *stmt) */ case ACL_OBJECT_RELATION: all_privileges = ACL_ALL_RIGHTS_RELATION | ACL_ALL_RIGHTS_SEQUENCE; - errormsg = _("invalid privilege type %s for relation"); + errormsg = gettext_noop("invalid privilege type %s for relation"); break; case ACL_OBJECT_SEQUENCE: all_privileges = ACL_ALL_RIGHTS_SEQUENCE; - errormsg = _("invalid privilege type %s for sequence"); + errormsg = gettext_noop("invalid privilege type %s for sequence"); break; case ACL_OBJECT_DATABASE: all_privileges = ACL_ALL_RIGHTS_DATABASE; - errormsg = _("invalid privilege type %s for database"); + errormsg = gettext_noop("invalid privilege type %s for database"); break; case ACL_OBJECT_FUNCTION: all_privileges = ACL_ALL_RIGHTS_FUNCTION; - errormsg = _("invalid privilege type %s for function"); + errormsg = gettext_noop("invalid privilege type %s for function"); break; case ACL_OBJECT_LANGUAGE: all_privileges = ACL_ALL_RIGHTS_LANGUAGE; - errormsg = _("invalid privilege type %s for language"); + errormsg = gettext_noop("invalid privilege type %s for language"); break; case ACL_OBJECT_NAMESPACE: all_privileges = ACL_ALL_RIGHTS_NAMESPACE; - errormsg = _("invalid privilege type %s for schema"); + errormsg = gettext_noop("invalid privilege type %s for schema"); break; case ACL_OBJECT_TABLESPACE: all_privileges = ACL_ALL_RIGHTS_TABLESPACE; - errormsg = _("invalid privilege type %s for tablespace"); + errormsg = gettext_noop("invalid privilege type %s for tablespace"); break; default: /* keep compiler quiet */ @@ -351,8 +351,7 @@ ExecuteGrantStmt(GrantStmt *stmt) if (priv & ~((AclMode) all_privileges)) ereport(ERROR, (errcode(ERRCODE_INVALID_GRANT_OPERATION), - errmsg(errormsg, - privilege_to_string(priv)))); + errmsg(errormsg, privilege_to_string(priv)))); istmt.privileges |= priv; } diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c index f350c41948..12c8b3c358 100644 --- a/src/backend/catalog/pg_shdepend.c +++ b/src/backend/catalog/pg_shdepend.c @@ -670,7 +670,7 @@ checkSharedDependencies(Oid classId, Oid objectId) ereport(LOG, (errmsg("there are objects dependent on %s", getObjectDescription(&obj)), - errdetail(alldescs.data))); + errdetail("%s", alldescs.data))); } pfree(alldescs.data); diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index aeee1ca906..adab55e63d 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -212,10 +212,10 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, (errmsg("relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful free space", get_namespace_name(RelationGetNamespace(onerel)), RelationGetRelationName(onerel)), - errhint((vacrelstats->tot_free_pages > vacrelstats->rel_pages * 0.20 ? - /* Only suggest VACUUM FULL if 20% free */ - "Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\"." : - "Consider increasing the configuration parameter \"max_fsm_pages\".")))); + /* Only suggest VACUUM FULL if > 20% free */ + (vacrelstats->tot_free_pages > vacrelstats->rel_pages * 0.20) ? + errhint("Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\".") : + errhint("Consider increasing the configuration parameter \"max_fsm_pages\"."))); /* Update statistics in pg_class */ vac_update_relstats(RelationGetRelid(onerel), diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 736f4634d5..7bbbd8dcae 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -1401,25 +1401,25 @@ xml_ereport_by_code(int level, int sqlcode, switch (code) { case XML_ERR_INVALID_CHAR: - det = "Invalid character value"; + det = gettext_noop("Invalid character value."); break; case XML_ERR_SPACE_REQUIRED: - det = "Space required"; + det = gettext_noop("Space required."); break; case XML_ERR_STANDALONE_VALUE: - det = "standalone accepts only 'yes' or 'no'"; + det = gettext_noop("standalone accepts only 'yes' or 'no'."); break; case XML_ERR_VERSION_MISSING: - det = "Malformed declaration expecting version"; + det = gettext_noop("Malformed declaration: missing version."); break; case XML_ERR_MISSING_ENCODING: - det = "Missing encoding in text declaration"; + det = gettext_noop("Missing encoding in text declaration."); break; case XML_ERR_XMLDECL_NOT_FINISHED: - det = "Parsing XML declaration: '?>' expected"; + det = gettext_noop("Parsing XML declaration: '?>' expected."); break; default: - det = "Unrecognized libxml error code: %d"; + det = gettext_noop("Unrecognized libxml error code: %d."); break; } -- 2.39.5