diff --git a/src/backend/tsearch/to_tsany.c b/src/backend/tsearch/to_tsany.c
index 3b6d41f9e8..d0f49a357f 100644
--- a/src/backend/tsearch/to_tsany.c
+++ b/src/backend/tsearch/to_tsany.c
@@ -254,7 +254,8 @@ to_tsvector_byid(PG_FUNCTION_ARGS)
 		prs.lenwords = 2;
 	prs.curwords = 0;
 	prs.pos = 0;
-	prs.words = (ParsedWord *) palloc(sizeof(ParsedWord) * prs.lenwords);
+	prs.words = (ParsedWord *) palloc_extended(sizeof(ParsedWord) * prs.lenwords,
+											   MCXT_ALLOC_HUGE);
 
 	parsetext(cfgId, &prs, VARDATA_ANY(in), VARSIZE_ANY_EXHDR(in));
 
diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c
index fb80fdd63f..70ad1f8680 100644
--- a/src/backend/tsearch/wparser_def.c
+++ b/src/backend/tsearch/wparser_def.c
@@ -307,12 +307,14 @@ TParserInit(char *str, int len)
 			 * char2wchar doesn't work for C-locale and sizeof(pg_wchar) could
 			 * be different from sizeof(wchar_t)
 			 */
-			prs->pgwstr = (pg_wchar *) palloc(sizeof(pg_wchar) * (prs->lenstr + 1));
+			prs->pgwstr = (pg_wchar *) palloc_extended(sizeof(pg_wchar) * (prs->lenstr + 1),
+													   MCXT_ALLOC_HUGE);
 			pg_mb2wchar_with_len(prs->str, prs->pgwstr, prs->lenstr);
 		}
 		else
 		{
-			prs->wstr = (wchar_t *) palloc(sizeof(wchar_t) * (prs->lenstr + 1));
+			prs->wstr = (wchar_t *) palloc_extended(sizeof(wchar_t) * (prs->lenstr + 1),
+													MCXT_ALLOC_HUGE);
 			char2wchar(prs->wstr, prs->lenstr + 1, prs->str, prs->lenstr,
 					   mylocale);
 		}
