summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2018-08-21 06:18:00 +0000
committerMichael Paquier2018-08-21 06:18:00 +0000
commit90b0f30aea0ee456614ec97f518ffaf8ca6c3b05 (patch)
tree3e37d9ffeac226e17dcc719557ecb16683a986bb
parent72329ba03b601bcd0cfe1349a9acdd251972cbd0 (diff)
Fix set of NLS translation issues
While monitoring the code, a couple of issues related to string translation has showed up: - Some routines for auto-updatable views return an error string, which sometimes missed the shot. A comment regarding string translation is added for each routine to help with future features. - GSSAPI authentication missed two translations. - vacuumdb handles non-translated strings. Reported-by: Kyotaro Horiguchi Author: Kyotaro Horiguchi Reviewed-by: Michael Paquier, Tom Lane Discussion: https://postgr.es/m/20180810.152131.31921918.horiguchi.kyotaro@lab.ntt.co.jp Backpatch-through: 9.3
-rw-r--r--src/backend/commands/tablecmds.c2
-rw-r--r--src/backend/commands/view.c2
-rw-r--r--src/backend/libpq/auth.c13
-rw-r--r--src/backend/rewrite/rewriteHandler.c9
-rw-r--r--src/bin/scripts/vacuumdb.c2
5 files changed, 23 insertions, 5 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 1f7c732c02c..9a82313e2f4 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -9553,7 +9553,7 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("WITH CHECK OPTION is supported only on automatically updatable views"),
- errhint("%s", view_updatable_error)));
+ errhint("%s", _(view_updatable_error))));
}
}
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index d582ecd7921..7395eeea33f 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -496,7 +496,7 @@ DefineView(ViewStmt *stmt, const char *queryString)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("WITH CHECK OPTION is supported only on automatically updatable views"),
- errhint("%s", view_updatable_error)));
+ errhint("%s", _(view_updatable_error))));
}
/*
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index 9c77701785f..52b379c7f08 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -771,6 +771,10 @@ static GSS_DLLIMP gss_OID GSS_C_NT_USER_NAME = &GSS_C_NT_USER_NAME_desc;
#endif
+/*
+ * Generate an error for GSSAPI authentication. The caller should apply
+ * _() to errmsg to make it translatable.
+ */
static void
pg_GSS_error(int severity, char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat)
{
@@ -960,7 +964,7 @@ pg_GSS_recvauth(Port *port)
{
gss_delete_sec_context(&lmin_s, &port->gss->ctx, GSS_C_NO_BUFFER);
pg_GSS_error(ERROR,
- gettext_noop("accepting GSS security context failed"),
+ _("accepting GSS security context failed"),
maj_stat, min_stat);
}
@@ -986,7 +990,7 @@ pg_GSS_recvauth(Port *port)
maj_stat = gss_display_name(&min_stat, port->gss->name, &gbuf, NULL);
if (maj_stat != GSS_S_COMPLETE)
pg_GSS_error(ERROR,
- gettext_noop("retrieving GSS user name failed"),
+ _("retrieving GSS user name failed"),
maj_stat, min_stat);
/*
@@ -1050,6 +1054,11 @@ pg_GSS_recvauth(Port *port)
*----------------------------------------------------------------
*/
#ifdef ENABLE_SSPI
+
+/*
+ * Generate an error for SSPI authentication. The caller should apply
+ * _() to errmsg to make it translatable.
+ */
static void
pg_SSPI_error(int severity, const char *errmsg, SECURITY_STATUS r)
{
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index b481ac50b60..677c4a4b84b 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -2154,6 +2154,9 @@ view_has_instead_trigger(Relation view, CmdType event)
* is auto-updatable. Returns NULL (if the column can be updated) or a message
* string giving the reason that it cannot be.
*
+ * The returned string has not been translated; if it is shown as an error
+ * message, the caller should apply _() to translate it.
+ *
* Note that the checks performed here are local to this view. We do not check
* whether the referenced column of the underlying base relation is updatable.
*/
@@ -2193,6 +2196,9 @@ view_col_is_auto_updatable(RangeTblRef *rtr, TargetEntry *tle)
* view_query_is_auto_updatable - test whether the specified view definition
* represents an auto-updatable view. Returns NULL (if the view can be updated)
* or a message string giving the reason that it cannot be.
+
+ * The returned string has not been translated; if it is shown as an error
+ * message, the caller should apply _() to translate it.
*
* If check_cols is true, the view is required to have at least one updatable
* column (necessary for INSERT/UPDATE). Otherwise the view's columns are not
@@ -2332,6 +2338,9 @@ view_query_is_auto_updatable(Query *viewquery, bool check_cols)
* required columns can be updated) or a message string giving the reason that
* they cannot be.
*
+ * The returned string has not been translated; if it is shown as an error
+ * message, the caller should apply _() to translate it.
+ *
* This should be used for INSERT/UPDATE to ensure that we don't attempt to
* assign to any non-updatable columns.
*
diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c
index 6ee773fbf21..20dd1d2e601 100644
--- a/src/bin/scripts/vacuumdb.c
+++ b/src/bin/scripts/vacuumdb.c
@@ -369,7 +369,7 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
{
if (stage != ANALYZE_NO_STAGE)
printf(_("%s: processing database \"%s\": %s\n"),
- progname, PQdb(conn), stage_messages[stage]);
+ progname, PQdb(conn), _(stage_messages[stage]));
else
printf(_("%s: vacuuming database \"%s\"\n"),
progname, PQdb(conn));