On Wed, Sep 06, 2023 at 07:57:03AM -0300, Ranier Vilela wrote: > I think no one objected.
Looking closer, there is much more inconsistency in this file depending on the routine called. How about something like the v2 attached instead to provide more context in the error message about the function called? Let's say, when the provider is known, we could use: + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strncoll", locale->provider); And when the provider is not known, we could use: + elog(ERROR, "unsupported collprovider (%s)", "pg_myfunc"); @Jeff (added now in CC), the refactoring done in d87d548c seems to be at the origin of this confusion, because, before this commit, we never generated this specific error for all these APIs where the locale is undefined. What is your take here? -- Michael
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index aa9da99308..ad57249685 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -2031,7 +2031,8 @@ pg_strcoll(const char *arg1, const char *arg2, pg_locale_t locale) #endif else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strcoll", locale->provider); return result; } @@ -2067,7 +2068,8 @@ pg_strncoll(const char *arg1, size_t len1, const char *arg2, size_t len2, #endif else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strncoll", locale->provider); return result; } @@ -2086,7 +2088,8 @@ pg_strxfrm_libc(char *dest, const char *src, size_t destsize, return strxfrm(dest, src, destsize); #else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strxfrm_libc", locale->provider); return 0; /* keep compiler quiet */ #endif } @@ -2282,7 +2285,8 @@ pg_strxfrm_enabled(pg_locale_t locale) return true; else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strxfrm_enabled", locale->provider); return false; /* keep compiler quiet */ } @@ -2314,7 +2318,8 @@ pg_strxfrm(char *dest, const char *src, size_t destsize, pg_locale_t locale) #endif else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strxfrm", locale->provider); return result; } @@ -2351,7 +2356,8 @@ pg_strnxfrm(char *dest, size_t destsize, const char *src, size_t srclen, #endif else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strnxfrm", locale->provider); return result; } @@ -2369,7 +2375,8 @@ pg_strxfrm_prefix_enabled(pg_locale_t locale) return true; else /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strxfrm_prefix_enabled", locale->provider); return false; /* keep compiler quiet */ } @@ -2393,17 +2400,15 @@ pg_strxfrm_prefix(char *dest, const char *src, size_t destsize, { size_t result = 0; /* keep compiler quiet */ - if (!locale || locale->provider == COLLPROVIDER_LIBC) - elog(ERROR, "collprovider '%c' does not support pg_strxfrm_prefix()", - locale->provider); + if (!locale) + elog(ERROR, "unsupported collprovider (%s)", "pg_strxfrm_prefix"); #ifdef USE_ICU else if (locale->provider == COLLPROVIDER_ICU) result = pg_strnxfrm_prefix_icu(dest, src, -1, destsize, locale); #endif else - /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); - + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strxfrm_prefix", locale->provider); return result; } @@ -2430,16 +2435,15 @@ pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src, { size_t result = 0; /* keep compiler quiet */ - if (!locale || locale->provider == COLLPROVIDER_LIBC) - elog(ERROR, "collprovider '%c' does not support pg_strnxfrm_prefix()", - locale->provider); + if (!locale) + elog(ERROR, "unsupported collprovider (%s)", "pg_strnxfrm_prefix"); #ifdef USE_ICU else if (locale->provider == COLLPROVIDER_ICU) result = pg_strnxfrm_prefix_icu(dest, src, -1, destsize, locale); #endif else - /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "unsupported collprovider (%s): %c", + "pg_strnxfrm_prefix", locale->provider); return result; }
signature.asc
Description: PGP signature