{
text *key = PG_GETARG_TEXT_PP(0);
Oid collid = PG_GET_COLLATION();
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
Datum result;
if (!collid)
errmsg("could not determine which collation to use for string hashing"),
errhint("Use the COLLATE clause to set the collation explicitly.")));
- if (!lc_collate_is_c(collid))
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
if (pg_locale_deterministic(mylocale))
{
{
text *key = PG_GETARG_TEXT_PP(0);
Oid collid = PG_GET_COLLATION();
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
Datum result;
if (!collid)
errmsg("could not determine which collation to use for string hashing"),
errhint("Use the COLLATE clause to set the collation explicitly.")));
- if (!lc_collate_is_c(collid))
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
if (pg_locale_deterministic(mylocale))
{
{
PG_REGEX_LOCALE_C, /* C locale (encoding independent) */
PG_REGEX_BUILTIN, /* built-in Unicode semantics */
- PG_REGEX_LOCALE_WIDE, /* Use <wctype.h> functions */
- PG_REGEX_LOCALE_1BYTE, /* Use <ctype.h> functions */
PG_REGEX_LOCALE_WIDE_L, /* Use locale_t <wctype.h> functions */
PG_REGEX_LOCALE_1BYTE_L, /* Use locale_t <ctype.h> functions */
PG_REGEX_LOCALE_ICU, /* Use ICU uchar.h functions */
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("nondeterministic collations are not supported for regular expressions")));
- if (pg_regex_locale && pg_regex_locale->provider == COLLPROVIDER_BUILTIN)
+ if (pg_regex_locale->provider == COLLPROVIDER_BUILTIN)
{
Assert(GetDatabaseEncoding() == PG_UTF8);
pg_regex_strategy = PG_REGEX_BUILTIN;
}
#ifdef USE_ICU
- else if (pg_regex_locale && pg_regex_locale->provider == COLLPROVIDER_ICU)
+ else if (pg_regex_locale->provider == COLLPROVIDER_ICU)
{
pg_regex_strategy = PG_REGEX_LOCALE_ICU;
}
else
{
if (GetDatabaseEncoding() == PG_UTF8)
- {
- if (pg_regex_locale)
- pg_regex_strategy = PG_REGEX_LOCALE_WIDE_L;
- else
- pg_regex_strategy = PG_REGEX_LOCALE_WIDE;
- }
+ pg_regex_strategy = PG_REGEX_LOCALE_WIDE_L;
else
- {
- if (pg_regex_locale)
- pg_regex_strategy = PG_REGEX_LOCALE_1BYTE_L;
- else
- pg_regex_strategy = PG_REGEX_LOCALE_1BYTE;
- }
+ pg_regex_strategy = PG_REGEX_LOCALE_1BYTE_L;
}
pg_regex_collation = collation;
(pg_char_properties[c] & PG_ISDIGIT));
case PG_REGEX_BUILTIN:
return pg_u_isdigit(c, true);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswdigit((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isdigit((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswdigit_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISALPHA));
case PG_REGEX_BUILTIN:
return pg_u_isalpha(c);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswalpha((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isalpha((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswalpha_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISALNUM));
case PG_REGEX_BUILTIN:
return pg_u_isalnum(c, true);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswalnum((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isalnum((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswalnum_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISUPPER));
case PG_REGEX_BUILTIN:
return pg_u_isupper(c);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswupper((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isupper((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswupper_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISLOWER));
case PG_REGEX_BUILTIN:
return pg_u_islower(c);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswlower((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- islower((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswlower_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISGRAPH));
case PG_REGEX_BUILTIN:
return pg_u_isgraph(c);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswgraph((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isgraph((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswgraph_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISPRINT));
case PG_REGEX_BUILTIN:
return pg_u_isprint(c);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswprint((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isprint((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswprint_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISPUNCT));
case PG_REGEX_BUILTIN:
return pg_u_ispunct(c, true);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswpunct((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- ispunct((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswpunct_l((wint_t) c, pg_regex_locale->info.lt);
(pg_char_properties[c] & PG_ISSPACE));
case PG_REGEX_BUILTIN:
return pg_u_isspace(c);
- case PG_REGEX_LOCALE_WIDE:
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return iswspace((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- return (c <= (pg_wchar) UCHAR_MAX &&
- isspace((unsigned char) c));
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return iswspace_l((wint_t) c, pg_regex_locale->info.lt);
return c;
case PG_REGEX_BUILTIN:
return unicode_uppercase_simple(c);
- case PG_REGEX_LOCALE_WIDE:
- /* force C behavior for ASCII characters, per comments above */
- if (c <= (pg_wchar) 127)
- return pg_ascii_toupper((unsigned char) c);
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return towupper((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- /* force C behavior for ASCII characters, per comments above */
- if (c <= (pg_wchar) 127)
- return pg_ascii_toupper((unsigned char) c);
- if (c <= (pg_wchar) UCHAR_MAX)
- return toupper((unsigned char) c);
- return c;
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return towupper_l((wint_t) c, pg_regex_locale->info.lt);
return c;
case PG_REGEX_BUILTIN:
return unicode_lowercase_simple(c);
- case PG_REGEX_LOCALE_WIDE:
- /* force C behavior for ASCII characters, per comments above */
- if (c <= (pg_wchar) 127)
- return pg_ascii_tolower((unsigned char) c);
- if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
- return towlower((wint_t) c);
- /* FALL THRU */
- case PG_REGEX_LOCALE_1BYTE:
- /* force C behavior for ASCII characters, per comments above */
- if (c <= (pg_wchar) 127)
- return pg_ascii_tolower((unsigned char) c);
- if (c <= (pg_wchar) UCHAR_MAX)
- return tolower((unsigned char) c);
- return c;
case PG_REGEX_LOCALE_WIDE_L:
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
return towlower_l((wint_t) c, pg_regex_locale->info.lt);
case PG_REGEX_BUILTIN:
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
break;
- case PG_REGEX_LOCALE_WIDE:
case PG_REGEX_LOCALE_WIDE_L:
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
break;
- case PG_REGEX_LOCALE_1BYTE:
case PG_REGEX_LOCALE_1BYTE_L:
#if MAX_SIMPLE_CHR >= UCHAR_MAX
max_chr = (pg_wchar) UCHAR_MAX;
mylocale = pg_newlocale_from_collation(collid);
#ifdef USE_ICU
- if (mylocale && mylocale->provider == COLLPROVIDER_ICU)
+ if (mylocale->provider == COLLPROVIDER_ICU)
{
int32_t len_uchar;
int32_t len_conv;
}
else
#endif
- if (mylocale && mylocale->provider == COLLPROVIDER_BUILTIN)
+ if (mylocale->provider == COLLPROVIDER_BUILTIN)
{
const char *src = buff;
size_t srclen = nbytes;
}
else
{
- Assert(!mylocale || mylocale->provider == COLLPROVIDER_LIBC);
+ Assert(mylocale->provider == COLLPROVIDER_LIBC);
if (pg_database_encoding_max_length() > 1)
{
char2wchar(workspace, nbytes + 1, buff, nbytes, mylocale);
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
- {
- if (mylocale)
- workspace[curr_char] = towlower_l(workspace[curr_char], mylocale->info.lt);
- else
- workspace[curr_char] = towlower(workspace[curr_char]);
- }
+ workspace[curr_char] = towlower_l(workspace[curr_char], mylocale->info.lt);
/*
* Make result large enough; case change might change number
* collations you get exactly what the collation says.
*/
for (p = result; *p; p++)
- {
- if (mylocale)
- *p = tolower_l((unsigned char) *p, mylocale->info.lt);
- else
- *p = pg_tolower((unsigned char) *p);
- }
+ *p = tolower_l((unsigned char) *p, mylocale->info.lt);
}
}
}
mylocale = pg_newlocale_from_collation(collid);
#ifdef USE_ICU
- if (mylocale && mylocale->provider == COLLPROVIDER_ICU)
+ if (mylocale->provider == COLLPROVIDER_ICU)
{
int32_t len_uchar,
len_conv;
}
else
#endif
- if (mylocale && mylocale->provider == COLLPROVIDER_BUILTIN)
+ if (mylocale->provider == COLLPROVIDER_BUILTIN)
{
const char *src = buff;
size_t srclen = nbytes;
}
else
{
- Assert(!mylocale || mylocale->provider == COLLPROVIDER_LIBC);
+ Assert(mylocale->provider == COLLPROVIDER_LIBC);
if (pg_database_encoding_max_length() > 1)
{
char2wchar(workspace, nbytes + 1, buff, nbytes, mylocale);
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
- {
- if (mylocale)
- workspace[curr_char] = towupper_l(workspace[curr_char], mylocale->info.lt);
- else
- workspace[curr_char] = towupper(workspace[curr_char]);
- }
+ workspace[curr_char] = towupper_l(workspace[curr_char], mylocale->info.lt);
/*
* Make result large enough; case change might change number
* collations you get exactly what the collation says.
*/
for (p = result; *p; p++)
- {
- if (mylocale)
- *p = toupper_l((unsigned char) *p, mylocale->info.lt);
- else
- *p = pg_toupper((unsigned char) *p);
- }
+ *p = toupper_l((unsigned char) *p, mylocale->info.lt);
}
}
}
mylocale = pg_newlocale_from_collation(collid);
#ifdef USE_ICU
- if (mylocale && mylocale->provider == COLLPROVIDER_ICU)
+ if (mylocale->provider == COLLPROVIDER_ICU)
{
int32_t len_uchar,
len_conv;
}
else
#endif
- if (mylocale && mylocale->provider == COLLPROVIDER_BUILTIN)
+ if (mylocale->provider == COLLPROVIDER_BUILTIN)
{
const char *src = buff;
size_t srclen = nbytes;
}
else
{
- Assert(!mylocale || mylocale->provider == COLLPROVIDER_LIBC);
+ Assert(mylocale->provider == COLLPROVIDER_LIBC);
if (pg_database_encoding_max_length() > 1)
{
for (curr_char = 0; workspace[curr_char] != 0; curr_char++)
{
- if (mylocale)
- {
- if (wasalnum)
- workspace[curr_char] = towlower_l(workspace[curr_char], mylocale->info.lt);
- else
- workspace[curr_char] = towupper_l(workspace[curr_char], mylocale->info.lt);
- wasalnum = iswalnum_l(workspace[curr_char], mylocale->info.lt);
- }
+ if (wasalnum)
+ workspace[curr_char] = towlower_l(workspace[curr_char], mylocale->info.lt);
else
- {
- if (wasalnum)
- workspace[curr_char] = towlower(workspace[curr_char]);
- else
- workspace[curr_char] = towupper(workspace[curr_char]);
- wasalnum = iswalnum(workspace[curr_char]);
- }
+ workspace[curr_char] = towupper_l(workspace[curr_char], mylocale->info.lt);
+ wasalnum = iswalnum_l(workspace[curr_char], mylocale->info.lt);
}
/*
*/
for (p = result; *p; p++)
{
- if (mylocale)
- {
- if (wasalnum)
- *p = tolower_l((unsigned char) *p, mylocale->info.lt);
- else
- *p = toupper_l((unsigned char) *p, mylocale->info.lt);
- wasalnum = isalnum_l((unsigned char) *p, mylocale->info.lt);
- }
+ if (wasalnum)
+ *p = tolower_l((unsigned char) *p, mylocale->info.lt);
else
- {
- if (wasalnum)
- *p = pg_tolower((unsigned char) *p);
- else
- *p = pg_toupper((unsigned char) *p);
- wasalnum = isalnum((unsigned char) *p);
- }
+ *p = toupper_l((unsigned char) *p, mylocale->info.lt);
+ wasalnum = isalnum_l((unsigned char) *p, mylocale->info.lt);
}
}
}
*p;
int slen,
plen;
- pg_locale_t locale = 0;
- bool locale_is_c = false;
+ pg_locale_t locale;
if (!OidIsValid(collation))
{
errhint("Use the COLLATE clause to set the collation explicitly.")));
}
- if (lc_ctype_is_c(collation))
- locale_is_c = true;
- else
- locale = pg_newlocale_from_collation(collation);
+ locale = pg_newlocale_from_collation(collation);
if (!pg_locale_deterministic(locale))
ereport(ERROR,
plen = VARSIZE_ANY_EXHDR(pat);
s = VARDATA_ANY(str);
slen = VARSIZE_ANY_EXHDR(str);
- return SB_IMatchText(s, slen, p, plen, locale, locale_is_c);
+ return SB_IMatchText(s, slen, p, plen, locale, locale->ctype_is_c);
}
}
bool
pg_locale_deterministic(pg_locale_t locale)
{
- /* default locale must always be deterministic */
- if (locale == NULL)
- return true;
- else
- return locale->deterministic;
+ return locale->deterministic;
}
/*
* pg_strncoll_libc_win32_utf8
*
* Win32 does not have UTF-8. Convert UTF8 arguments to wide characters and
- * invoke wcscoll() or wcscoll_l().
+ * invoke wcscoll_l().
*/
#ifdef WIN32
static int
int r;
int result;
- Assert(!locale || locale->provider == COLLPROVIDER_LIBC);
+ Assert(locale->provider == COLLPROVIDER_LIBC);
Assert(GetDatabaseEncoding() == PG_UTF8);
#ifndef WIN32
Assert(false);
((LPWSTR) a2p)[r] = 0;
errno = 0;
- if (locale)
- result = wcscoll_l((LPWSTR) a1p, (LPWSTR) a2p, locale->info.lt);
- else
- result = wcscoll((LPWSTR) a1p, (LPWSTR) a2p);
+ result = wcscoll_l((LPWSTR) a1p, (LPWSTR) a2p, locale->info.lt);
if (result == 2147483647) /* _NLSCMPERROR; missing from mingw headers */
ereport(ERROR,
(errmsg("could not compare Unicode strings: %m")));
/*
* pg_strcoll_libc
*
- * Call strcoll(), strcoll_l(), wcscoll(), or wcscoll_l() as appropriate for
- * the given locale, platform, and database encoding. If the locale is NULL,
- * use the database collation.
+ * Call strcoll_l() or wcscoll_l() as appropriate for the given locale,
+ * platform, and database encoding. If the locale is NULL, use the database
+ * collation.
*
* Arguments must be encoded in the database encoding and nul-terminated.
*/
{
int result;
- Assert(!locale || locale->provider == COLLPROVIDER_LIBC);
+ Assert(locale->provider == COLLPROVIDER_LIBC);
#ifdef WIN32
if (GetDatabaseEncoding() == PG_UTF8)
{
}
else
#endif /* WIN32 */
- if (locale)
result = strcoll_l(arg1, arg2, locale->info.lt);
- else
- result = strcoll(arg1, arg2);
return result;
}
char *arg2n;
int result;
- Assert(!locale || locale->provider == COLLPROVIDER_LIBC);
+ Assert(locale->provider == COLLPROVIDER_LIBC);
#ifdef WIN32
/* check for this case before doing the work for nul-termination */
/*
* pg_strcoll
*
- * Call ucol_strcollUTF8(), ucol_strcoll(), strcoll(), strcoll_l(), wcscoll(),
- * or wcscoll_l() as appropriate for the given locale, platform, and database
- * encoding. If the locale is not specified, use the database collation.
+ * Call ucol_strcollUTF8(), ucol_strcoll(), strcoll_l() or wcscoll_l() as
+ * appropriate for the given locale, platform, and database encoding. If the
+ * locale is not specified, use the database collation.
*
* Arguments must be encoded in the database encoding and nul-terminated.
*
{
int result;
- if (!locale || locale->provider == COLLPROVIDER_LIBC)
+ if (locale->provider == COLLPROVIDER_LIBC)
result = pg_strcoll_libc(arg1, arg2, locale);
#ifdef USE_ICU
else if (locale->provider == COLLPROVIDER_ICU)
/*
* pg_strncoll
*
- * Call ucol_strcollUTF8(), ucol_strcoll(), strcoll(), strcoll_l(), wcscoll(),
- * or wcscoll_l() as appropriate for the given locale, platform, and database
- * encoding. If the locale is not specified, use the database collation.
+ * Call ucol_strcollUTF8(), ucol_strcoll(), strcoll_l() or wcscoll_l() as
+ * appropriate for the given locale, platform, and database encoding. If the
+ * locale is not specified, use the database collation.
*
* Arguments must be encoded in the database encoding.
*
{
int result;
- if (!locale || locale->provider == COLLPROVIDER_LIBC)
+ if (locale->provider == COLLPROVIDER_LIBC)
result = pg_strncoll_libc(arg1, len1, arg2, len2, locale);
#ifdef USE_ICU
else if (locale->provider == COLLPROVIDER_ICU)
pg_strxfrm_libc(char *dest, const char *src, size_t destsize,
pg_locale_t locale)
{
- Assert(!locale || locale->provider == COLLPROVIDER_LIBC);
+ Assert(locale->provider == COLLPROVIDER_LIBC);
#ifdef TRUST_STRXFRM
- if (locale)
- return strxfrm_l(dest, src, destsize, locale->info.lt);
- else
- return strxfrm(dest, src, destsize);
+ return strxfrm_l(dest, src, destsize, locale->info.lt);
#else
/* shouldn't happen */
PGLOCALE_SUPPORT_ERROR(locale->provider);
size_t bufsize = srclen + 1;
size_t result;
- Assert(!locale || locale->provider == COLLPROVIDER_LIBC);
+ Assert(locale->provider == COLLPROVIDER_LIBC);
if (bufsize > TEXTBUFLEN)
buf = palloc(bufsize);
bool
pg_strxfrm_enabled(pg_locale_t locale)
{
- if (!locale || locale->provider == COLLPROVIDER_LIBC)
+ if (locale->provider == COLLPROVIDER_LIBC)
#ifdef TRUST_STRXFRM
return true;
#else
{
size_t result = 0; /* keep compiler quiet */
- if (!locale || locale->provider == COLLPROVIDER_LIBC)
+ if (locale->provider == COLLPROVIDER_LIBC)
result = pg_strxfrm_libc(dest, src, destsize, locale);
#ifdef USE_ICU
else if (locale->provider == COLLPROVIDER_ICU)
{
size_t result = 0; /* keep compiler quiet */
- if (!locale || locale->provider == COLLPROVIDER_LIBC)
+ if (locale->provider == COLLPROVIDER_LIBC)
result = pg_strnxfrm_libc(dest, src, srclen, destsize, locale);
#ifdef USE_ICU
else if (locale->provider == COLLPROVIDER_ICU)
bool
pg_strxfrm_prefix_enabled(pg_locale_t locale)
{
- if (!locale || locale->provider == COLLPROVIDER_LIBC)
+ if (locale->provider == COLLPROVIDER_LIBC)
return false;
else if (locale->provider == COLLPROVIDER_ICU)
return true;
{
size_t result = 0; /* keep compiler quiet */
- if (!locale)
- PGLOCALE_SUPPORT_ERROR(COLLPROVIDER_LIBC);
#ifdef USE_ICU
- else if (locale->provider == COLLPROVIDER_ICU)
+ if (locale->provider == COLLPROVIDER_ICU)
result = pg_strnxfrm_prefix_icu(dest, src, -1, destsize, locale);
-#endif
else
+#endif
PGLOCALE_SUPPORT_ERROR(locale->provider);
return result;
{
size_t result = 0; /* keep compiler quiet */
- if (!locale)
- PGLOCALE_SUPPORT_ERROR(COLLPROVIDER_LIBC);
#ifdef USE_ICU
- else if (locale->provider == COLLPROVIDER_ICU)
+ if (locale->provider == COLLPROVIDER_ICU)
result = pg_strnxfrm_prefix_icu(dest, src, -1, destsize, locale);
-#endif
else
+#endif
PGLOCALE_SUPPORT_ERROR(locale->provider);
return result;
Oid collid = PG_GET_COLLATION();
char *keydata;
int keylen;
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
Datum result;
if (!collid)
keydata = VARDATA_ANY(key);
keylen = bcTruelen(key);
- if (!lc_collate_is_c(collid))
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
if (pg_locale_deterministic(mylocale))
{
Oid collid = PG_GET_COLLATION();
char *keydata;
int keylen;
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
Datum result;
if (!collid)
keydata = VARDATA_ANY(key);
keylen = bcTruelen(key);
- if (!lc_collate_is_c(collid))
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
if (pg_locale_deterministic(mylocale))
{
{
int len1 = VARSIZE_ANY_EXHDR(t1);
int len2 = VARSIZE_ANY_EXHDR(t2);
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
check_collation_set(collid);
- if (!lc_collate_is_c(collid))
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
if (!pg_locale_deterministic(mylocale))
ereport(ERROR,
texteq(PG_FUNCTION_ARGS)
{
Oid collid = PG_GET_COLLATION();
- bool locale_is_c = false;
pg_locale_t mylocale = 0;
bool result;
check_collation_set(collid);
- if (lc_collate_is_c(collid))
- locale_is_c = true;
- else
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
- if (locale_is_c || pg_locale_deterministic(mylocale))
+ if (pg_locale_deterministic(mylocale))
{
Datum arg1 = PG_GETARG_DATUM(0);
Datum arg2 = PG_GETARG_DATUM(1);
textne(PG_FUNCTION_ARGS)
{
Oid collid = PG_GET_COLLATION();
- bool locale_is_c = false;
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
bool result;
check_collation_set(collid);
- if (lc_collate_is_c(collid))
- locale_is_c = true;
- else
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
- if (locale_is_c || pg_locale_deterministic(mylocale))
+ if (pg_locale_deterministic(mylocale))
{
Datum arg1 = PG_GETARG_DATUM(0);
Datum arg2 = PG_GETARG_DATUM(1);
Datum arg1 = PG_GETARG_DATUM(0);
Datum arg2 = PG_GETARG_DATUM(1);
Oid collid = PG_GET_COLLATION();
- pg_locale_t mylocale = 0;
+ pg_locale_t mylocale;
bool result;
Size len1,
len2;
check_collation_set(collid);
- if (!lc_collate_is_c(collid))
- mylocale = pg_newlocale_from_collation(collid);
+ mylocale = pg_newlocale_from_collation(collid);
if (!pg_locale_deterministic(mylocale))
ereport(ERROR,