Thread: BUG #9737: Trigram Regex degenerate case

BUG #9737: Trigram Regex degenerate case

From
kochismo@gmail.com
Date:
The following bug has been logged on the website:

Bug reference:      9737
Logged by:          Ka Chun Leung
Email address:      kochismo@gmail.com
PostgreSQL version: 9.3.4
Operating system:   Ubuntu Lucid
Description:

Trigram regexes don't seem to handle ranges well.

Without ranges my query runs fine:

explain analyse select * from foos where foo::text ~ 'abc.+def'

Bitmap Heap Scan on foos  (cost=23032.42..25164.29 rows=571 width=56)
(actual time=57.996..62.183 rows=43 loops=1)
  Recheck Cond: ((foo)::text ~ 'abc.+def'::text)
  Rows Removed by Index Recheck: 953
  ->  Bitmap Index Scan on idx_foos_foo_trgm_gin  (cost=0.00..23032.28
rows=571 width=0) (actual time=57.741..57.741 rows=996 loops=1)
        Index Cond: ((foo)::text ~ 'abc.+def'::text)
Total runtime: 62.211 ms

With ranges:

explain analyse select * from foos where foo::text ~ 'abc[0-9]+def'

Bitmap Heap Scan on foos  (cost=27588.42..29720.29 rows=571 width=56)
(actual time=7844.767..7844.993 rows=3 loops=1)
  Recheck Cond: ((foo)::text ~ 'abc[0-9]+def'::text)
  Rows Removed by Index Recheck: 35
  ->  Bitmap Index Scan on idx_foos_foo_trgm_gin  (cost=0.00..27588.28
rows=571 width=0) (actual time=7844.510..7844.510 rows=38 loops=1)
        Index Cond: ((foo)::text ~ 'abc[0-9]+def'::text)
Total runtime: 7845.039 ms