Skip to content

Commit 1eeac95

Browse files
committed
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.
1 parent a60b113 commit 1eeac95

File tree

6 files changed

+12
-12
lines changed

6 files changed

+12
-12
lines changed

src/backend/catalog/dependency.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,14 +1190,14 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
11901190
(errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
11911191
errmsg("cannot drop %s because other objects depend on it",
11921192
getObjectDescription(origObject, false)),
1193-
errdetail("%s", clientdetail.data),
1193+
errdetail_internal("%s", clientdetail.data),
11941194
errdetail_log("%s", logdetail.data),
11951195
errhint("Use DROP ... CASCADE to drop the dependent objects too.")));
11961196
else
11971197
ereport(ERROR,
11981198
(errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
11991199
errmsg("cannot drop desired object(s) because other objects depend on them"),
1200-
errdetail("%s", clientdetail.data),
1200+
errdetail_internal("%s", clientdetail.data),
12011201
errdetail_log("%s", logdetail.data),
12021202
errhint("Use DROP ... CASCADE to drop the dependent objects too.")));
12031203
}
@@ -1208,7 +1208,7 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
12081208
"drop cascades to %d other objects",
12091209
numReportedClient + numNotReportedClient,
12101210
numReportedClient + numNotReportedClient),
1211-
errdetail("%s", clientdetail.data),
1211+
errdetail_internal("%s", clientdetail.data),
12121212
errdetail_log("%s", logdetail.data)));
12131213
}
12141214
else if (numReportedClient == 1)

src/backend/commands/publicationcmds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ check_simple_rowfilter_expr_walker(Node *node, ParseState *pstate)
580580
ereport(ERROR,
581581
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
582582
errmsg("invalid publication WHERE expression"),
583-
errdetail("%s", errdetail_msg),
583+
errdetail_internal("%s", errdetail_msg),
584584
parser_errposition(pstate, exprLocation(node))));
585585

586586
return expression_tree_walker(node, check_simple_rowfilter_expr_walker,

src/backend/commands/user.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ AlterRole(ParseState *pstate, AlterRoleStmt *stmt)
521521
Oid roleid;
522522

523523
check_rolespec_name(stmt->role,
524-
"Cannot alter reserved roles.");
524+
_("Cannot alter reserved roles."));
525525

526526
/* Extract options from the statement node tree */
527527
foreach(option, stmt->options)
@@ -835,7 +835,7 @@ AlterRoleSet(AlterRoleSetStmt *stmt)
835835
if (stmt->role)
836836
{
837837
check_rolespec_name(stmt->role,
838-
"Cannot alter reserved roles.");
838+
_("Cannot alter reserved roles."));
839839

840840
roletuple = get_rolespec_tuple(stmt->role);
841841
roleform = (Form_pg_authid) GETSTRUCT(roletuple);

src/backend/utils/adt/acl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5309,7 +5309,7 @@ get_rolespec_name(const RoleSpec *role)
53095309

53105310
/*
53115311
* Given a RoleSpec, throw an error if the name is reserved, using detail_msg,
5312-
* if provided.
5312+
* if provided (which must be already translated).
53135313
*
53145314
* If node is NULL, no error is thrown. If detail_msg is NULL then no detail
53155315
* message is provided.
@@ -5330,7 +5330,7 @@ check_rolespec_name(const RoleSpec *role, const char *detail_msg)
53305330
(errcode(ERRCODE_RESERVED_NAME),
53315331
errmsg("role name \"%s\" is reserved",
53325332
role->rolename),
5333-
errdetail("%s", detail_msg)));
5333+
errdetail_internal("%s", detail_msg)));
53345334
else
53355335
ereport(ERROR,
53365336
(errcode(ERRCODE_RESERVED_NAME),

src/backend/utils/adt/jsonfuncs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,13 +615,13 @@ json_ereport_error(JsonParseErrorType error, JsonLexContext *lex)
615615
ereport(ERROR,
616616
(errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
617617
errmsg("unsupported Unicode escape sequence"),
618-
errdetail("%s", json_errdetail(error, lex)),
618+
errdetail_internal("%s", json_errdetail(error, lex)),
619619
report_json_context(lex)));
620620
else
621621
ereport(ERROR,
622622
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
623623
errmsg("invalid input syntax for type %s", "json"),
624-
errdetail("%s", json_errdetail(error, lex)),
624+
errdetail_internal("%s", json_errdetail(error, lex)),
625625
report_json_context(lex)));
626626
}
627627

src/common/jsonapi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,11 +1057,11 @@ extract_token(JsonLexContext *lex)
10571057
}
10581058

10591059
/*
1060-
* Construct a detail message for a JSON error.
1060+
* Construct an (already translated) detail message for a JSON error.
10611061
*
10621062
* Note that the error message generated by this routine may not be
10631063
* palloc'd, making it unsafe for frontend code as there is no way to
1064-
* know if this can be safery pfree'd or not.
1064+
* know if this can be safely pfree'd or not.
10651065
*/
10661066
char *
10671067
json_errdetail(JsonParseErrorType error, JsonLexContext *lex)

0 commit comments

Comments
 (0)