@ -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 )