Check for interrupts in pg_trgm word similarity

Calculating similarity between large strings can be timesconsuming
and overrun configured statement timeouts. Check for interrupts in
the main loop to ensure query cancellation can be performed.

Author: Robins Tharakan <tharakan@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CAEP4nAxvmfc_XWTz73bqXRhgjONi=1HaX4_NhsopA3L6UvnN1g@mail.gmail.com
pull/103/head
Daniel Gustafsson 3 years ago
parent 519be095f2
commit ae4fc52ae2
  1. 7
      contrib/pg_trgm/trgm_op.c

@ -7,6 +7,7 @@
#include "catalog/pg_type.h"
#include "lib/qunique.h"
#include "miscadmin.h"
#include "trgm.h"
#include "tsearch/ts_locale.h"
#include "utils/lsyscache.h"
@ -492,8 +493,12 @@ iterate_word_similarity(int *trg2indexes,
for (i = 0; i < len2; i++)
{
int trgindex;
CHECK_FOR_INTERRUPTS();
/* Get index of next trigram */
int trgindex = trg2indexes[i];
trgindex = trg2indexes[i];
/* Update last position of this trigram */
if (lower >= 0 || found[trgindex])

Loading…
Cancel
Save