From 5f634670569a3ef8249ff1747af2157b6939f505 Mon Sep 17 00:00:00 2001 From: Andreas Karlsson Date: Sun, 28 Jul 2024 00:04:43 +0200 Subject: [PATCH] WIP: Ugly caching of last locale --- src/backend/utils/adt/pg_locale.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index 4628fcd8dd..e0de7aa625 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -1566,6 +1566,9 @@ init_database_collation(void) ReleaseSysCache(tup); } +static Oid last_collid = InvalidOid; +static pg_locale_t last_locale = NULL; + /* * Create a locale_t from a collation OID. Results are cached for the * lifetime of the backend. Thus, do not free the result with freelocale(). @@ -1587,6 +1590,9 @@ pg_newlocale_from_collation(Oid collid) if (collid == DEFAULT_COLLATION_OID) return &default_locale; + if (collid == last_collid) + return last_locale; + cache_entry = lookup_collation_cache(collid); if (cache_entry->locale == 0) @@ -1712,6 +1718,9 @@ pg_newlocale_from_collation(Oid collid) cache_entry->locale = resultp; } + last_collid = collid; + last_locale = cache_entry->locale; + return cache_entry->locale; } -- 2.43.0