From efda0d11348782389b9d25c1072b4bc065be5687 Mon Sep 17 00:00:00 2001
From: sohardforaname <organic_chemistry@foxmail.com>
Date: Fri, 11 Sep 2026 15:23:45 +0800
Subject: [PATCH 2/2] Use memset() in repeat() for single-byte strings

When the source string is one byte long, fill the result with memset()
instead of issuing one memcpy() call per repetition.
---
 src/backend/utils/adt/oracle_compat.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c
index fe33a0729e4..8a99028b4dd 100644
--- a/src/backend/utils/adt/oracle_compat.c
+++ b/src/backend/utils/adt/oracle_compat.c
@@ -1190,6 +1190,13 @@ repeat(PG_FUNCTION_ARGS)
 	if (count == 0 || slen == 0)
 		PG_RETURN_TEXT_P(result);
 
+	if (slen == 1)
+	{
+		memset(cp, *sp, count);
+		CHECK_FOR_INTERRUPTS();
+		PG_RETURN_TEXT_P(result);
+	}
+
 	for (i = 0; i < count; i++)
 	{
 		memcpy(cp, sp, slen);
-- 
2.34.1

