From b3cb74e43d438f8bd23dac6784a2907db8215fc5 Mon Sep 17 00:00:00 2001
From: sohardforaname <organic_chemistry@foxmail.com>
Date: Fri, 11 Sep 2026 15:23:11 +0800
Subject: [PATCH 1/2] Return early from repeat() for empty results

Avoid entering the copy loop when the repeat count is zero or the source
string is empty.
---
 src/backend/utils/adt/oracle_compat.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c
index 7422a454397..fe33a0729e4 100644
--- a/src/backend/utils/adt/oracle_compat.c
+++ b/src/backend/utils/adt/oracle_compat.c
@@ -1186,6 +1186,10 @@ repeat(PG_FUNCTION_ARGS)
 	SET_VARSIZE(result, tlen);
 	cp = VARDATA(result);
 	sp = VARDATA_ANY(string);
+
+	if (count == 0 || slen == 0)
+		PG_RETURN_TEXT_P(result);
+
 	for (i = 0; i < count; i++)
 	{
 		memcpy(cp, sp, slen);
-- 
2.34.1

