mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-05 23:19:21 +02:00
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
This commit is contained in:
parent
7b009944c2
commit
3ccae5445c
@ -19,7 +19,7 @@
|
|||||||
#include "utils/builtins.h"
|
#include "utils/builtins.h"
|
||||||
#include "utils/formatting.h"
|
#include "utils/formatting.h"
|
||||||
#include "mb/pg_wchar.h"
|
#include "mb/pg_wchar.h"
|
||||||
|
#include "miscadmin.h"
|
||||||
|
|
||||||
static text *dotrim(const char *string, int stringlen,
|
static text *dotrim(const char *string, int stringlen,
|
||||||
const char *set, int setlen,
|
const char *set, int setlen,
|
||||||
@ -1062,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);
|
||||||
|
Loading…
Reference in New Issue
Block a user