Hi,

The 'locale' or 'lc_collate/lc_ctype' argument of an ICU collation may
have a complicated syntax, especially with non-deterministic
collations, and input mistakes in these names will not necessarily be
detected as such by ICU.

The "display name" of a locale is a simple way to get human-readable
feedback about the characteristics of that locale.
pg_import_system_collations() already push these as comments when
creating locales en masse.

I think it would be nice to have CREATE COLLATION report this
information as feedback in the form of a NOTICE message.
PFA a simple patch implementing that.


Best regards,
-- 
Daniel Vérité
PostgreSQL-powered mailer: http://www.manitou-mail.org
Twitter: @DanielVerite
diff --git a/src/backend/commands/collationcmds.c 
b/src/backend/commands/collationcmds.c
index 919e092483..ad011d149c 100644
--- a/src/backend/commands/collationcmds.c
+++ b/src/backend/commands/collationcmds.c
@@ -36,6 +36,10 @@
 #include "utils/syscache.h"
 
 
+#ifdef USE_ICU
+static char *get_icu_locale_comment(const char *localename);
+#endif
+
 typedef struct
 {
        char       *localename;         /* name of locale, as per "locale -a" */
@@ -232,6 +236,16 @@ DefineCollation(ParseState *pstate, List *names, List 
*parameters, bool if_not_e
        if (!OidIsValid(newoid))
                return InvalidObjectAddress;
 
+#ifdef USE_ICU
+       if (collprovider == COLLPROVIDER_ICU)
+       {
+               char *display_name = get_icu_locale_comment(collcollate);
+               if (display_name != NULL)
+                       ereport(NOTICE,
+                                       (errmsg("ICU locale: \"%s\"", 
display_name)));
+       }
+#endif
+
        /*
         * Check that the locales can be loaded.  NB: 
pg_newlocale_from_collation
         * is only supposed to be called on non-C-equivalent locales.

Reply via email to