Commit 887cdff4 authored by Joe Conway's avatar Joe Conway

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
parent 5b1c61e8
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "common/int.h" #include "common/int.h"
#include "mb/pg_wchar.h" #include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "utils/builtins.h" #include "utils/builtins.h"
#include "utils/formatting.h" #include "utils/formatting.h"
...@@ -1061,6 +1062,7 @@ repeat(PG_FUNCTION_ARGS) ...@@ -1061,6 +1062,7 @@ repeat(PG_FUNCTION_ARGS)
{ {
memcpy(cp, sp, slen); memcpy(cp, sp, slen);
cp += slen; cp += slen;
CHECK_FOR_INTERRUPTS();
} }
PG_RETURN_TEXT_P(result); PG_RETURN_TEXT_P(result);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment