@@ -67,8 +67,6 @@ typedef enum
6767{
6868PG_REGEX_LOCALE_C ,/* C locale (encoding independent) */
6969PG_REGEX_BUILTIN ,/* built-in Unicode semantics */
70- PG_REGEX_LOCALE_WIDE ,/* Use <wctype.h> functions */
71- PG_REGEX_LOCALE_1BYTE ,/* Use <ctype.h> functions */
7270PG_REGEX_LOCALE_WIDE_L ,/* Use locale_t <wctype.h> functions */
7371PG_REGEX_LOCALE_1BYTE_L ,/* Use locale_t <ctype.h> functions */
7472PG_REGEX_LOCALE_ICU ,/* Use ICU uchar.h functions */
@@ -261,33 +259,23 @@ pg_set_regex_collation(Oid collation)
261259(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
262260errmsg ("nondeterministic collations are not supported for regular expressions" )));
263261
264- if (pg_regex_locale && pg_regex_locale -> provider == COLLPROVIDER_BUILTIN )
262+ if (pg_regex_locale -> provider == COLLPROVIDER_BUILTIN )
265263{
266264Assert (GetDatabaseEncoding ()== PG_UTF8 );
267265pg_regex_strategy = PG_REGEX_BUILTIN ;
268266}
269267#ifdef USE_ICU
270- else if (pg_regex_locale && pg_regex_locale -> provider == COLLPROVIDER_ICU )
268+ else if (pg_regex_locale -> provider == COLLPROVIDER_ICU )
271269{
272270pg_regex_strategy = PG_REGEX_LOCALE_ICU ;
273271}
274272#endif
275273else
276274{
277275if (GetDatabaseEncoding ()== PG_UTF8 )
278- {
279- if (pg_regex_locale )
280- pg_regex_strategy = PG_REGEX_LOCALE_WIDE_L ;
281- else
282- pg_regex_strategy = PG_REGEX_LOCALE_WIDE ;
283- }
276+ pg_regex_strategy = PG_REGEX_LOCALE_WIDE_L ;
284277else
285- {
286- if (pg_regex_locale )
287- pg_regex_strategy = PG_REGEX_LOCALE_1BYTE_L ;
288- else
289- pg_regex_strategy = PG_REGEX_LOCALE_1BYTE ;
290- }
278+ pg_regex_strategy = PG_REGEX_LOCALE_1BYTE_L ;
291279}
292280
293281pg_regex_collation = collation ;
@@ -304,13 +292,6 @@ pg_wc_isdigit(pg_wchar c)
304292(pg_char_properties [c ]& PG_ISDIGIT ));
305293case PG_REGEX_BUILTIN :
306294return pg_u_isdigit (c , true);
307- case PG_REGEX_LOCALE_WIDE :
308- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
309- return iswdigit ((wint_t )c );
310- /* FALL THRU */
311- case PG_REGEX_LOCALE_1BYTE :
312- return (c <= (pg_wchar )UCHAR_MAX &&
313- isdigit ((unsignedchar )c ));
314295case PG_REGEX_LOCALE_WIDE_L :
315296if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
316297return iswdigit_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -338,13 +319,6 @@ pg_wc_isalpha(pg_wchar c)
338319(pg_char_properties [c ]& PG_ISALPHA ));
339320case PG_REGEX_BUILTIN :
340321return pg_u_isalpha (c );
341- case PG_REGEX_LOCALE_WIDE :
342- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
343- return iswalpha ((wint_t )c );
344- /* FALL THRU */
345- case PG_REGEX_LOCALE_1BYTE :
346- return (c <= (pg_wchar )UCHAR_MAX &&
347- isalpha ((unsignedchar )c ));
348322case PG_REGEX_LOCALE_WIDE_L :
349323if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
350324return iswalpha_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -372,13 +346,6 @@ pg_wc_isalnum(pg_wchar c)
372346(pg_char_properties [c ]& PG_ISALNUM ));
373347case PG_REGEX_BUILTIN :
374348return pg_u_isalnum (c , true);
375- case PG_REGEX_LOCALE_WIDE :
376- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
377- return iswalnum ((wint_t )c );
378- /* FALL THRU */
379- case PG_REGEX_LOCALE_1BYTE :
380- return (c <= (pg_wchar )UCHAR_MAX &&
381- isalnum ((unsignedchar )c ));
382349case PG_REGEX_LOCALE_WIDE_L :
383350if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
384351return iswalnum_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -415,13 +382,6 @@ pg_wc_isupper(pg_wchar c)
415382(pg_char_properties [c ]& PG_ISUPPER ));
416383case PG_REGEX_BUILTIN :
417384return pg_u_isupper (c );
418- case PG_REGEX_LOCALE_WIDE :
419- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
420- return iswupper ((wint_t )c );
421- /* FALL THRU */
422- case PG_REGEX_LOCALE_1BYTE :
423- return (c <= (pg_wchar )UCHAR_MAX &&
424- isupper ((unsignedchar )c ));
425385case PG_REGEX_LOCALE_WIDE_L :
426386if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
427387return iswupper_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -449,13 +409,6 @@ pg_wc_islower(pg_wchar c)
449409(pg_char_properties [c ]& PG_ISLOWER ));
450410case PG_REGEX_BUILTIN :
451411return pg_u_islower (c );
452- case PG_REGEX_LOCALE_WIDE :
453- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
454- return iswlower ((wint_t )c );
455- /* FALL THRU */
456- case PG_REGEX_LOCALE_1BYTE :
457- return (c <= (pg_wchar )UCHAR_MAX &&
458- islower ((unsignedchar )c ));
459412case PG_REGEX_LOCALE_WIDE_L :
460413if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
461414return iswlower_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -483,13 +436,6 @@ pg_wc_isgraph(pg_wchar c)
483436(pg_char_properties [c ]& PG_ISGRAPH ));
484437case PG_REGEX_BUILTIN :
485438return pg_u_isgraph (c );
486- case PG_REGEX_LOCALE_WIDE :
487- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
488- return iswgraph ((wint_t )c );
489- /* FALL THRU */
490- case PG_REGEX_LOCALE_1BYTE :
491- return (c <= (pg_wchar )UCHAR_MAX &&
492- isgraph ((unsignedchar )c ));
493439case PG_REGEX_LOCALE_WIDE_L :
494440if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
495441return iswgraph_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -517,13 +463,6 @@ pg_wc_isprint(pg_wchar c)
517463(pg_char_properties [c ]& PG_ISPRINT ));
518464case PG_REGEX_BUILTIN :
519465return pg_u_isprint (c );
520- case PG_REGEX_LOCALE_WIDE :
521- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
522- return iswprint ((wint_t )c );
523- /* FALL THRU */
524- case PG_REGEX_LOCALE_1BYTE :
525- return (c <= (pg_wchar )UCHAR_MAX &&
526- isprint ((unsignedchar )c ));
527466case PG_REGEX_LOCALE_WIDE_L :
528467if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
529468return iswprint_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -551,13 +490,6 @@ pg_wc_ispunct(pg_wchar c)
551490(pg_char_properties [c ]& PG_ISPUNCT ));
552491case PG_REGEX_BUILTIN :
553492return pg_u_ispunct (c , true);
554- case PG_REGEX_LOCALE_WIDE :
555- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
556- return iswpunct ((wint_t )c );
557- /* FALL THRU */
558- case PG_REGEX_LOCALE_1BYTE :
559- return (c <= (pg_wchar )UCHAR_MAX &&
560- ispunct ((unsignedchar )c ));
561493case PG_REGEX_LOCALE_WIDE_L :
562494if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
563495return iswpunct_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -585,13 +517,6 @@ pg_wc_isspace(pg_wchar c)
585517(pg_char_properties [c ]& PG_ISSPACE ));
586518case PG_REGEX_BUILTIN :
587519return pg_u_isspace (c );
588- case PG_REGEX_LOCALE_WIDE :
589- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
590- return iswspace ((wint_t )c );
591- /* FALL THRU */
592- case PG_REGEX_LOCALE_1BYTE :
593- return (c <= (pg_wchar )UCHAR_MAX &&
594- isspace ((unsignedchar )c ));
595520case PG_REGEX_LOCALE_WIDE_L :
596521if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
597522return iswspace_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -620,20 +545,6 @@ pg_wc_toupper(pg_wchar c)
620545return c ;
621546case PG_REGEX_BUILTIN :
622547return unicode_uppercase_simple (c );
623- case PG_REGEX_LOCALE_WIDE :
624- /* force C behavior for ASCII characters, per comments above */
625- if (c <= (pg_wchar )127 )
626- return pg_ascii_toupper ((unsignedchar )c );
627- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
628- return towupper ((wint_t )c );
629- /* FALL THRU */
630- case PG_REGEX_LOCALE_1BYTE :
631- /* force C behavior for ASCII characters, per comments above */
632- if (c <= (pg_wchar )127 )
633- return pg_ascii_toupper ((unsignedchar )c );
634- if (c <= (pg_wchar )UCHAR_MAX )
635- return toupper ((unsignedchar )c );
636- return c ;
637548case PG_REGEX_LOCALE_WIDE_L :
638549if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
639550return towupper_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -662,20 +573,6 @@ pg_wc_tolower(pg_wchar c)
662573return c ;
663574case PG_REGEX_BUILTIN :
664575return unicode_lowercase_simple (c );
665- case PG_REGEX_LOCALE_WIDE :
666- /* force C behavior for ASCII characters, per comments above */
667- if (c <= (pg_wchar )127 )
668- return pg_ascii_tolower ((unsignedchar )c );
669- if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
670- return towlower ((wint_t )c );
671- /* FALL THRU */
672- case PG_REGEX_LOCALE_1BYTE :
673- /* force C behavior for ASCII characters, per comments above */
674- if (c <= (pg_wchar )127 )
675- return pg_ascii_tolower ((unsignedchar )c );
676- if (c <= (pg_wchar )UCHAR_MAX )
677- return tolower ((unsignedchar )c );
678- return c ;
679576case PG_REGEX_LOCALE_WIDE_L :
680577if (sizeof (wchar_t ) >=4 || c <= (pg_wchar )0xFFFF )
681578return towlower_l ((wint_t )c ,pg_regex_locale -> info .lt );
@@ -829,11 +726,9 @@ pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
829726case PG_REGEX_BUILTIN :
830727max_chr = (pg_wchar )MAX_SIMPLE_CHR ;
831728break ;
832- case PG_REGEX_LOCALE_WIDE :
833729case PG_REGEX_LOCALE_WIDE_L :
834730max_chr = (pg_wchar )MAX_SIMPLE_CHR ;
835731break ;
836- case PG_REGEX_LOCALE_1BYTE :
837732case PG_REGEX_LOCALE_1BYTE_L :
838733#if MAX_SIMPLE_CHR >=UCHAR_MAX
839734max_chr = (pg_wchar )UCHAR_MAX ;