From 188675256e15f7ad4d24ae976d1bb5fbb84f43e1 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Mon, 14 Dec 2015 16:44:40 -0300 Subject: [PATCH] Add missing CHECK_FOR_INTERRUPTS in lseg_inside_poly Apparently, there are bugs in this code that cause it to loop endlessly. That bug still needs more research, but in the meantime it's clear that the loop is missing a check for interrupts so that it can be cancelled timely. Backpatch to 9.1 -- this has been missing since 49475aab8d0d. --- src/backend/utils/adt/geo_ops.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c index a3af08ad6b..ad48dfcb4b 100644 --- a/src/backend/utils/adt/geo_ops.c +++ b/src/backend/utils/adt/geo_ops.c @@ -20,6 +20,7 @@ #include #include "libpq/pqformat.h" +#include "miscadmin.h" #include "utils/builtins.h" #include "utils/geo_decls.h" @@ -3931,6 +3932,8 @@ lseg_inside_poly(Point *a, Point *b, POLYGON *poly, int start) { Point *interpt; + CHECK_FOR_INTERRUPTS(); + s.p[1] = poly->p[i]; if (on_ps_internal(t.p, &s))