diff options
Diffstat (limited to 'src/backend/utils/adt/formatting.c')
-rw-r--r-- | src/backend/utils/adt/formatting.c | 96 |
1 files changed, 45 insertions, 51 deletions
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index e8f996ac83d..d4c2e7b0692 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1641,6 +1641,19 @@ str_tolower(const char *buff, size_t nbytes, Oid collid) if (!buff) return NULL; + if (!OidIsValid(collid)) + { + /* + * This typically means that the parser could not resolve a + * conflict of implicit collations, so report it that way. + */ + ereport(ERROR, + (errcode(ERRCODE_INDETERMINATE_COLLATION), + errmsg("could not determine which collation to use for %s function", + "lower()"), + errhint("Use the COLLATE clause to set the collation explicitly."))); + } + /* C/POSIX collations use this path regardless of database encoding */ if (lc_ctype_is_c(collid)) { @@ -1648,24 +1661,9 @@ str_tolower(const char *buff, size_t nbytes, Oid collid) } else { - pg_locale_t mylocale = 0; + pg_locale_t mylocale; - if (collid != DEFAULT_COLLATION_OID) - { - if (!OidIsValid(collid)) - { - /* - * This typically means that the parser could not resolve a - * conflict of implicit collations, so report it that way. - */ - ereport(ERROR, - (errcode(ERRCODE_INDETERMINATE_COLLATION), - errmsg("could not determine which collation to use for %s function", - "lower()"), - errhint("Use the COLLATE clause to set the collation explicitly."))); - } - mylocale = pg_newlocale_from_collation(collid); - } + mylocale = pg_newlocale_from_collation(collid); #ifdef USE_ICU if (mylocale && mylocale->provider == COLLPROVIDER_ICU) @@ -1765,6 +1763,19 @@ str_toupper(const char *buff, size_t nbytes, Oid collid) if (!buff) return NULL; + if (!OidIsValid(collid)) + { + /* + * This typically means that the parser could not resolve a + * conflict of implicit collations, so report it that way. + */ + ereport(ERROR, + (errcode(ERRCODE_INDETERMINATE_COLLATION), + errmsg("could not determine which collation to use for %s function", + "upper()"), + errhint("Use the COLLATE clause to set the collation explicitly."))); + } + /* C/POSIX collations use this path regardless of database encoding */ if (lc_ctype_is_c(collid)) { @@ -1772,24 +1783,9 @@ str_toupper(const char *buff, size_t nbytes, Oid collid) } else { - pg_locale_t mylocale = 0; + pg_locale_t mylocale; - if (collid != DEFAULT_COLLATION_OID) - { - if (!OidIsValid(collid)) - { - /* - * This typically means that the parser could not resolve a - * conflict of implicit collations, so report it that way. - */ - ereport(ERROR, - (errcode(ERRCODE_INDETERMINATE_COLLATION), - errmsg("could not determine which collation to use for %s function", - "upper()"), - errhint("Use the COLLATE clause to set the collation explicitly."))); - } - mylocale = pg_newlocale_from_collation(collid); - } + mylocale = pg_newlocale_from_collation(collid); #ifdef USE_ICU if (mylocale && mylocale->provider == COLLPROVIDER_ICU) @@ -1890,6 +1886,19 @@ str_initcap(const char *buff, size_t nbytes, Oid collid) if (!buff) return NULL; + if (!OidIsValid(collid)) + { + /* + * This typically means that the parser could not resolve a + * conflict of implicit collations, so report it that way. + */ + ereport(ERROR, + (errcode(ERRCODE_INDETERMINATE_COLLATION), + errmsg("could not determine which collation to use for %s function", + "initcap()"), + errhint("Use the COLLATE clause to set the collation explicitly."))); + } + /* C/POSIX collations use this path regardless of database encoding */ if (lc_ctype_is_c(collid)) { @@ -1897,24 +1906,9 @@ str_initcap(const char *buff, size_t nbytes, Oid collid) } else { - pg_locale_t mylocale = 0; + pg_locale_t mylocale; - if (collid != DEFAULT_COLLATION_OID) - { - if (!OidIsValid(collid)) - { - /* - * This typically means that the parser could not resolve a - * conflict of implicit collations, so report it that way. - */ - ereport(ERROR, - (errcode(ERRCODE_INDETERMINATE_COLLATION), - errmsg("could not determine which collation to use for %s function", - "initcap()"), - errhint("Use the COLLATE clause to set the collation explicitly."))); - } - mylocale = pg_newlocale_from_collation(collid); - } + mylocale = pg_newlocale_from_collation(collid); #ifdef USE_ICU if (mylocale && mylocale->provider == COLLPROVIDER_ICU) |