From efda0d11348782389b9d25c1072b4bc065be5687 Mon Sep 17 00:00:00 2001 From: sohardforaname 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