Remove pg_regex_collation
authorPeter Eisentraut <[email protected]>
Thu, 5 Dec 2024 06:19:37 +0000 (07:19 +0100)
committerPeter Eisentraut <[email protected]>
Thu, 5 Dec 2024 06:19:37 +0000 (07:19 +0100)
We can also use the existing pg_regex_locale as the cache key, which
is the only use of this variable.

Reviewed-by: Jeff Davis <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/b1b92ae1-2e06-4619-a87a-4b4858e547ec%40eisentraut.org

src/backend/regex/regc_pg_locale.c

index b75784b6ce5aa794a3e33de6e1a043588a2f2a6d..e07d4a8868c99a1c89ecace1c0edbb5277507416 100644 (file)
@@ -74,7 +74,6 @@ typedef enum
 
 static PG_Locale_Strategy pg_regex_strategy;
 static pg_locale_t pg_regex_locale;
-static Oid pg_regex_collation;
 
 /*
  * Hard-wired character properties for C locale
@@ -254,7 +253,7 @@ pg_set_regex_collation(Oid collation)
         * pg_newlocale_from_collation().
         */
        strategy = PG_REGEX_STRATEGY_C;
-       collation = C_COLLATION_OID;
+       locale = 0;
    }
    else
    {
@@ -273,7 +272,6 @@ pg_set_regex_collation(Oid collation)
             */
            strategy = PG_REGEX_STRATEGY_C;
            locale = 0;
-           collation = C_COLLATION_OID;
        }
        else if (locale->provider == COLLPROVIDER_BUILTIN)
        {
@@ -298,7 +296,6 @@ pg_set_regex_collation(Oid collation)
 
    pg_regex_strategy = strategy;
    pg_regex_locale = locale;
-   pg_regex_collation = collation;
 }
 
 static int
@@ -628,7 +625,7 @@ typedef int (*pg_wc_probefunc) (pg_wchar c);
 typedef struct pg_ctype_cache
 {
    pg_wc_probefunc probefunc;  /* pg_wc_isalpha or a sibling */
-   Oid         collation;      /* collation this entry is for */
+   pg_locale_t locale;         /* locale this entry is for */
    struct cvec cv;             /* cache entry contents */
    struct pg_ctype_cache *next;    /* chain link */
 } pg_ctype_cache;
@@ -697,7 +694,7 @@ pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
    for (pcc = pg_ctype_cache_list; pcc != NULL; pcc = pcc->next)
    {
        if (pcc->probefunc == probefunc &&
-           pcc->collation == pg_regex_collation)
+           pcc->locale == pg_regex_locale)
            return &pcc->cv;
    }
 
@@ -708,7 +705,7 @@ pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
    if (pcc == NULL)
        return NULL;
    pcc->probefunc = probefunc;
-   pcc->collation = pg_regex_collation;
+   pcc->locale = pg_regex_locale;
    pcc->cv.nchrs = 0;
    pcc->cv.chrspace = 128;
    pcc->cv.chrs = (chr *) malloc(pcc->cv.chrspace * sizeof(chr));