postgres.git / summary / log / commit / refs

commit    bfb9595a786e62359d0a2c1613f4acdd3e1b88e6
Author:   Joe Conway <mail@joeconway.com>
Date:     Thu May 28 17:17:28 2020 +0000
First released in: 13.0, 9.5.23, 9.6.19, 10.14, 11.9, 12.4

    Add CHECK_FOR_INTERRUPTS() to the repeat() function
    
    The repeat() function loops for potentially a long time without
    ever checking for interrupts. This prevents, for example, a query
    cancel from interrupting until the work is all done. Fix by
    inserting a CHECK_FOR_INTERRUPTS() into the loop.
    
    Backpatch to all supported versions.
    
    Discussion: https://www.postgresql.org/message-id/flat/8692553c-7fe8-17d9-cbc1-7cddb758f4c6%40joeconway.com


src/backend/utils/adt/oracle_compat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c index 8e896ebf16b..724289226e7 100644 --- a/src/backend/utils/adt/oracle_compat.c +++ b/src/backend/utils/adt/oracle_compat.c @@ -18,7 +18,7 @@ #include "utils/builtins.h" #include "utils/formatting.h" #include "mb/pg_wchar.h" - +#include "miscadmin.h" static text *dotrim(const char *string, int stringlen, const char *set, int setlen, @@ -1068,6 +1068,7 @@ repeat(PG_FUNCTION_ARGS) { memcpy(cp, sp, slen); cp += slen; + CHECK_FOR_INTERRUPTS(); } PG_RETURN_TEXT_P(result); [parent: c893b99360a6]