82 #define PG_ISDIGIT 0x01 83 #define PG_ISALPHA 0x02 84 #define PG_ISALNUM (PG_ISDIGIT | PG_ISALPHA) 85 #define PG_ISUPPER 0x04 86 #define PG_ISLOWER 0x08 87 #define PG_ISGRAPH 0x10 88 #define PG_ISPRINT 0x20 89 #define PG_ISPUNCT 0x40 90 #define PG_ISSPACE 0x80 243 if (collation == DEFAULT_COLLATION_OID)
261 (
errcode(ERRCODE_INDETERMINATE_COLLATION),
262 errmsg(
"could not determine which collation to use for regular expression"),
263 errhint(
"Use the COLLATE clause to set the collation explicitly.")));
268 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
269 errmsg(
"nondeterministic collations are not supported for regular expressions")));
272 if (pg_regex_locale && pg_regex_locale->
provider == COLLPROVIDER_ICU)
304 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
305 return iswdigit((wint_t) c);
308 return (c <= (
pg_wchar) UCHAR_MAX &&
309 isdigit((
unsigned char) c));
312 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
318 return (c <= (
pg_wchar) UCHAR_MAX &&
340 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
341 return iswalpha((wint_t) c);
344 return (c <= (
pg_wchar) UCHAR_MAX &&
345 isalpha((
unsigned char) c));
348 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
354 return (c <= (
pg_wchar) UCHAR_MAX &&
376 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
377 return iswalnum((wint_t) c);
380 return (c <= (
pg_wchar) UCHAR_MAX &&
381 isalnum((
unsigned char) c));
384 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
390 return (c <= (
pg_wchar) UCHAR_MAX &&
421 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
422 return iswupper((wint_t) c);
425 return (c <= (
pg_wchar) UCHAR_MAX &&
426 isupper((
unsigned char) c));
429 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
435 return (c <= (
pg_wchar) UCHAR_MAX &&
457 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
458 return iswlower((wint_t) c);
461 return (c <= (
pg_wchar) UCHAR_MAX &&
462 islower((
unsigned char) c));
465 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
471 return (c <= (
pg_wchar) UCHAR_MAX &&
493 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
494 return iswgraph((wint_t) c);
497 return (c <= (
pg_wchar) UCHAR_MAX &&
498 isgraph((
unsigned char) c));
501 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
507 return (c <= (
pg_wchar) UCHAR_MAX &&
529 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
530 return iswprint((wint_t) c);
533 return (c <= (
pg_wchar) UCHAR_MAX &&
534 isprint((
unsigned char) c));
537 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
543 return (c <= (
pg_wchar) UCHAR_MAX &&
565 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
566 return iswpunct((wint_t) c);
569 return (c <= (
pg_wchar) UCHAR_MAX &&
570 ispunct((
unsigned char) c));
573 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
579 return (c <= (
pg_wchar) UCHAR_MAX &&
601 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
602 return iswspace((wint_t) c);
605 return (c <= (
pg_wchar) UCHAR_MAX &&
606 isspace((
unsigned char) c));
609 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
615 return (c <= (
pg_wchar) UCHAR_MAX &&
641 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
642 return towupper((wint_t) c);
649 return toupper((
unsigned char) c);
653 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
660 return toupper_l((
unsigned char) c, pg_regex_locale->
info.lt);
685 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
686 return towlower((wint_t) c);
693 return tolower((
unsigned char) c);
697 if (
sizeof(
wchar_t) >= 4 || c <= (
pg_wchar) 0xFFFF)
704 return tolower_l((
unsigned char) c, pg_regex_locale->
info.lt);
801 for (pcc = pg_ctype_cache_list; pcc != NULL; pcc = pcc->
next)
842 #if MAX_SIMPLE_CHR >= 127 855 #if MAX_SIMPLE_CHR >= UCHAR_MAX 875 for (cur_chr = 0; cur_chr <= max_chr; cur_chr++)
877 if ((*probefunc) (cur_chr))
879 else if (nmatches > 0)
881 if (!
store_match(pcc, cur_chr - nmatches, nmatches))
888 if (!
store_match(pcc, cur_chr - nmatches, nmatches))
929 pg_ctype_cache_list = pcc;
static int pg_wc_ispunct(pg_wchar c)
int errhint(const char *fmt,...)
static const unsigned char pg_char_properties[128]
static pg_locale_t pg_regex_locale
pg_wc_probefunc probefunc
static Oid pg_regex_collation
static PG_Locale_Strategy pg_regex_strategy
unsigned char pg_ascii_tolower(unsigned char ch)
int errcode(int sqlerrcode)
unsigned char pg_ascii_toupper(unsigned char ch)
static pg_wchar pg_wc_toupper(pg_wchar c)
#define OidIsValid(objectId)
static int pg_wc_isalpha(pg_wchar c)
static int pg_wc_isspace(pg_wchar c)
struct pg_ctype_cache * next
static struct cvec * pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
static int pg_wc_islower(pg_wchar c)
static pg_wchar pg_wc_tolower(pg_wchar c)
static int pg_wc_isalnum(pg_wchar c)
static pg_ctype_cache * pg_ctype_cache_list
pg_locale_t pg_newlocale_from_collation(Oid collid)
union pg_locale_struct::@140 info
int GetDatabaseEncoding(void)
static int pg_wc_isdigit(pg_wchar c)
#define ereport(elevel,...)
void pg_set_regex_collation(Oid collation)
static bool store_match(pg_ctype_cache *pcc, pg_wchar chr1, int nchrs)
static int pg_wc_isprint(pg_wchar c)
int errmsg(const char *fmt,...)
bool lc_ctype_is_c(Oid collation)
int(* pg_wc_probefunc)(pg_wchar c)
struct pg_ctype_cache pg_ctype_cache
static int pg_wc_isword(pg_wchar c)
static int pg_wc_isupper(pg_wchar c)
static int pg_wc_isgraph(pg_wchar c)