From 6eb47127225ba2e97f3b5f2e9befef5c35e4f065 Mon Sep 17 00:00:00 2001
From: John Naylor <john.naylor@postgresql.org>
Date: Fri, 17 Dec 2021 12:40:01 -0400
Subject: [PATCH v2 3/3] Specialize pg_mbstrlen_with_len() for UTF-8

---
 src/backend/utils/mb/mbutils.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 91eea625b9..c03eadaf61 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -1011,7 +1011,13 @@ pg_mbstrlen_with_len(const char *mbstr, int limit)
 
 	while (limit > 0 && *mbstr)
 	{
-		int			l = pg_mblen(mbstr);
+		int			l;
+
+		/* avoid the overhead of a function call for UTF-8 */
+		if (GetDatabaseEncoding() == PG_UTF8)
+			l = pg_utf_mblen_fast((const unsigned char *) mbstr);
+		else
+			l = pg_mblen(mbstr);
 
 		limit -= l;
 		mbstr += l;
-- 
2.31.1

