aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2022-09-28 17:14:53 +0200
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2022-09-28 17:14:53 +0200
commit1eeac95dc4a639c51ff6cc6e2ac6ae52dab32b32 (patch)
tree9b9cfe8ed3471748f4c3b8ce051a00606745b312
parenta60b11327bbd4ae9f661563644a15b0c324f3d9d (diff)
downloadpostgresql-1eeac95dc4a639c51ff6cc6e2ac6ae52dab32b32.tar.gz
postgresql-1eeac95dc4a639c51ff6cc6e2ac6ae52dab32b32.zip
Change some errdetail() to errdetail_internal()
This prevents marking the argument string for translation for gettext, and it also prevents the given string (which is already translated) from being translated at runtime. Also, mark the strings used as arguments to check_rolespec_name for translation. Backpatch all the way back as appropriate. None of this is caught by any tests (necessarily so), so I verified it manually.
-rw-r--r--src/backend/catalog/dependency.c6
-rw-r--r--src/backend/commands/publicationcmds.c2
-rw-r--r--src/backend/commands/user.c4
-rw-r--r--src/backend/utils/adt/acl.c4
-rw-r--r--src/backend/utils/adt/jsonfuncs.c4
-rw-r--r--src/common/jsonapi.c4
6 files changed, 12 insertions, 12 deletions
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 71b8505b322..85e2a902a2c 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1190,14 +1190,14 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
(errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
errmsg("cannot drop %s because other objects depend on it",
getObjectDescription(origObject, false)),
- errdetail("%s", clientdetail.data),
+ errdetail_internal("%s", clientdetail.data),
errdetail_log("%s", logdetail.data),
errhint("Use DROP ... CASCADE to drop the dependent objects too.")));
else
ereport(ERROR,
(errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
errmsg("cannot drop desired object(s) because other objects depend on them"),
- errdetail("%s", clientdetail.data),
+ errdetail_internal("%s", clientdetail.data),
errdetail_log("%s", logdetail.data),
errhint("Use DROP ... CASCADE to drop the dependent objects too.")));
}
@@ -1208,7 +1208,7 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
"drop cascades to %d other objects",
numReportedClient + numNotReportedClient,
numReportedClient + numNotReportedClient),
- errdetail("%s", clientdetail.data),
+ errdetail_internal("%s", clientdetail.data),
errdetail_log("%s", logdetail.data)));
}
else if (numReportedClient == 1)
diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c
index d2ed70ee3dd..473c72eae51 100644
--- a/src/backend/commands/publicationcmds.c
+++ b/src/backend/commands/publicationcmds.c
@@ -580,7 +580,7 @@ check_simple_rowfilter_expr_walker(Node *node, ParseState *pstate)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("invalid publication WHERE expression"),
- errdetail("%s", errdetail_msg),
+ errdetail_internal("%s", errdetail_msg),
parser_errposition(pstate, exprLocation(node))));
return expression_tree_walker(node, check_simple_rowfilter_expr_walker,
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index 984305ba31c..cba8e1979b6 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -521,7 +521,7 @@ AlterRole(ParseState *pstate, AlterRoleStmt *stmt)
Oid roleid;
check_rolespec_name(stmt->role,
- "Cannot alter reserved roles.");
+ _("Cannot alter reserved roles."));
/* Extract options from the statement node tree */
foreach(option, stmt->options)
@@ -835,7 +835,7 @@ AlterRoleSet(AlterRoleSetStmt *stmt)
if (stmt->role)
{
check_rolespec_name(stmt->role,
- "Cannot alter reserved roles.");
+ _("Cannot alter reserved roles."));
roletuple = get_rolespec_tuple(stmt->role);
roleform = (Form_pg_authid) GETSTRUCT(roletuple);
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 772c04155c3..5b7236abc98 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -5309,7 +5309,7 @@ get_rolespec_name(const RoleSpec *role)
/*
* Given a RoleSpec, throw an error if the name is reserved, using detail_msg,
- * if provided.
+ * if provided (which must be already translated).
*
* If node is NULL, no error is thrown. If detail_msg is NULL then no detail
* message is provided.
@@ -5330,7 +5330,7 @@ check_rolespec_name(const RoleSpec *role, const char *detail_msg)
(errcode(ERRCODE_RESERVED_NAME),
errmsg("role name \"%s\" is reserved",
role->rolename),
- errdetail("%s", detail_msg)));
+ errdetail_internal("%s", detail_msg)));
else
ereport(ERROR,
(errcode(ERRCODE_RESERVED_NAME),
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index 177b1c5e3f2..ccc32795758 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -615,13 +615,13 @@ json_ereport_error(JsonParseErrorType error, JsonLexContext *lex)
ereport(ERROR,
(errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
errmsg("unsupported Unicode escape sequence"),
- errdetail("%s", json_errdetail(error, lex)),
+ errdetail_internal("%s", json_errdetail(error, lex)),
report_json_context(lex)));
else
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for type %s", "json"),
- errdetail("%s", json_errdetail(error, lex)),
+ errdetail_internal("%s", json_errdetail(error, lex)),
report_json_context(lex)));
}
diff --git a/src/common/jsonapi.c b/src/common/jsonapi.c
index 98e4ef09426..90abe2687f4 100644
--- a/src/common/jsonapi.c
+++ b/src/common/jsonapi.c
@@ -1057,11 +1057,11 @@ extract_token(JsonLexContext *lex)
}
/*
- * Construct a detail message for a JSON error.
+ * Construct an (already translated) detail message for a JSON error.
*
* Note that the error message generated by this routine may not be
* palloc'd, making it unsafe for frontend code as there is no way to
- * know if this can be safery pfree'd or not.
+ * know if this can be safely pfree'd or not.
*/
char *
json_errdetail(JsonParseErrorType error, JsonLexContext *lex)