mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Control ctype behavior internally with a method table.
Previously, pattern matching and case mapping behavior branched based on the provider. Refactor to use a method table, which is less error-prone. This is also a step toward multiple provider versions, which we may want to support in the future. Reviewed-by: Andreas Karlsson <andreas@proxel.se> Reviewed-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://postgr.es/m/2830211e1b6e6a2e26d845780b03e125281ea17b.camel%40j-davis.com
This commit is contained in:
@@ -1495,13 +1495,8 @@ pattern_char_isalpha(char c, bool is_multibyte,
|
||||
{
|
||||
if (locale->ctype_is_c)
|
||||
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
|
||||
else if (is_multibyte && IS_HIGHBIT_SET(c))
|
||||
return true;
|
||||
else if (locale->provider != COLLPROVIDER_LIBC)
|
||||
return IS_HIGHBIT_SET(c) ||
|
||||
(c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
|
||||
else
|
||||
return isalpha_l((unsigned char) c, locale->info.lt);
|
||||
return char_is_cased(c, locale);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user