From 53ec3ac3d061a5397657c943569593e98150b3a4 Mon Sep 17 00:00:00 2001
From: Jeff Davis <jeff@j-davis.com>
Date: Wed, 5 Jun 2024 14:48:07 -0700
Subject: [PATCH v2 3/7] ts_locale.c: do not use NULL to mean the database
 collation.

Use pg_newlocale_from_collation(DEFAULT_COLLATION_OID) to explicitly
get the database collation.
---
 src/backend/tsearch/ts_locale.c   | 13 +++++++------
 src/backend/tsearch/wparser_def.c |  3 ++-
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/backend/tsearch/ts_locale.c b/src/backend/tsearch/ts_locale.c
index bc44599de6..86c3d6e790 100644
--- a/src/backend/tsearch/ts_locale.c
+++ b/src/backend/tsearch/ts_locale.c
@@ -13,6 +13,7 @@
  */
 #include "postgres.h"
 
+#include "catalog/pg_collation.h"
 #include "common/string.h"
 #include "storage/fd.h"
 #include "tsearch/ts_locale.h"
@@ -36,7 +37,7 @@ t_isdigit(const char *ptr)
 {
 	int			clen = pg_mblen(ptr);
 	wchar_t		character[WC_BUF_LEN];
-	pg_locale_t mylocale = 0;	/* TODO */
+	pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);
 
 	if (clen == 1 || database_ctype_is_c)
 		return isdigit(TOUCHAR(ptr));
@@ -51,7 +52,7 @@ t_isspace(const char *ptr)
 {
 	int			clen = pg_mblen(ptr);
 	wchar_t		character[WC_BUF_LEN];
-	pg_locale_t mylocale = 0;	/* TODO */
+	pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);
 
 	if (clen == 1 || database_ctype_is_c)
 		return isspace(TOUCHAR(ptr));
@@ -66,7 +67,7 @@ t_isalpha(const char *ptr)
 {
 	int			clen = pg_mblen(ptr);
 	wchar_t		character[WC_BUF_LEN];
-	pg_locale_t mylocale = 0;	/* TODO */
+	pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);
 
 	if (clen == 1 || database_ctype_is_c)
 		return isalpha(TOUCHAR(ptr));
@@ -81,7 +82,7 @@ t_isalnum(const char *ptr)
 {
 	int			clen = pg_mblen(ptr);
 	wchar_t		character[WC_BUF_LEN];
-	pg_locale_t mylocale = 0;	/* TODO */
+	pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);
 
 	if (clen == 1 || database_ctype_is_c)
 		return isalnum(TOUCHAR(ptr));
@@ -96,7 +97,7 @@ t_isprint(const char *ptr)
 {
 	int			clen = pg_mblen(ptr);
 	wchar_t		character[WC_BUF_LEN];
-	pg_locale_t mylocale = 0;	/* TODO */
+	pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);;
 
 	if (clen == 1 || database_ctype_is_c)
 		return isprint(TOUCHAR(ptr));
@@ -266,7 +267,7 @@ char *
 lowerstr_with_len(const char *str, int len)
 {
 	char	   *out;
-	pg_locale_t mylocale = 0;	/* TODO */
+	pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);
 
 	if (len == 0)
 		return pstrdup("");
diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c
index 3919ef27b5..a333d46802 100644
--- a/src/backend/tsearch/wparser_def.c
+++ b/src/backend/tsearch/wparser_def.c
@@ -17,6 +17,7 @@
 #include <limits.h>
 #include <wctype.h>
 
+#include "catalog/pg_collation.h"
 #include "commands/defrem.h"
 #include "mb/pg_wchar.h"
 #include "miscadmin.h"
@@ -299,7 +300,7 @@ TParserInit(char *str, int len)
 	 */
 	if (prs->charmaxlen > 1)
 	{
-		pg_locale_t mylocale = 0;	/* TODO */
+		pg_locale_t mylocale = pg_newlocale_from_collation(DEFAULT_COLLATION_OID);
 
 		prs->usewide = true;
 		if (database_ctype_is_c)
-- 
2.34.1

