Fix various infelicities that have snuck into usage of errdetail() and
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 24 Mar 2008 19:12:58 +0000 (19:12 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 24 Mar 2008 19:12:58 +0000 (19:12 +0000)
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
src/backend/catalog/pg_shdepend.c
src/backend/commands/vacuumlazy.c
src/backend/utils/adt/xml.c

index 82016de1a974a3ee2270b753b0658c91439fd173..4514e48e11b0a426795631292206f78ec077fc38 100644 (file)
@@ -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;
                }
index f350c4194840e79cea4f344bf8e065a67038e7b7..12c8b3c358fd890e5f0279f4c36e10c93c4c606f 100644 (file)
@@ -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);
index aeee1ca906f8b2d60e6dfd7082ea4586c049bebf..adab55e63d2a05a34249826c1cd0ee6bf9bf8513 100644 (file)
@@ -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),
index 736f4634d5a55096efe0a95433c8d8f4444fccd6..7bbbd8dcaeddf3c70bde06a8019f9775c5e65ad2 100644 (file)
@@ -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;
        }