mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
Remove lc_ctype_is_c().
Instead always fetch the locale and look at the ctype_is_c field. hba.c relies on regexes working for the C locale without needing catalog access, which worked before due to a special case for C_COLLATION_OID in lc_ctype_is_c(). Move the special case to pg_set_regex_collation() now that lc_ctype_is_c() is gone. Author: Andreas Karlsson Discussion: https://postgr.es/m/60929555-4709-40a7-b136-bcb44cff5a3c@proxel.se
This commit is contained in:
@@ -1266,32 +1266,6 @@ lookup_collation_cache(Oid collation)
|
||||
return cache_entry;
|
||||
}
|
||||
|
||||
/*
|
||||
* Detect whether collation's LC_CTYPE property is C
|
||||
*/
|
||||
bool
|
||||
lc_ctype_is_c(Oid collation)
|
||||
{
|
||||
/*
|
||||
* If we're asked about "collation 0", return false, so that the code will
|
||||
* go into the non-C path and report that the collation is bogus.
|
||||
*/
|
||||
if (!OidIsValid(collation))
|
||||
return false;
|
||||
|
||||
/*
|
||||
* If we're asked about the built-in C/POSIX collations, we know that.
|
||||
*/
|
||||
if (collation == C_COLLATION_OID ||
|
||||
collation == POSIX_COLLATION_OID)
|
||||
return true;
|
||||
|
||||
/*
|
||||
* Otherwise, we have to consult pg_collation, but we cache that.
|
||||
*/
|
||||
return pg_newlocale_from_collation(collation)->ctype_is_c;
|
||||
}
|
||||
|
||||
/* simple subroutine for reporting errors from newlocale() */
|
||||
static void
|
||||
report_newlocale_failure(const char *localename)
|
||||
|
||||
Reference in New Issue
Block a user