postgresql/contrib/pg_trgm
Tom Lane 0e6aa8747d Avoid determining regexp subexpression matches, when possible.
Identifying the precise match locations for parenthesized subexpressions
is a fairly expensive task given the way our regexp engine works, both
at regexp compile time (where we must create an optimized NFA for each
parenthesized subexpression) and at runtime (where determining exact
match locations requires laborious search).

Up to now we've made little attempt to optimize this situation.  This
patch identifies cases where we know at compile time that we won't
need to know subexpression match locations, and teaches the regexp
compiler to not bother creating per-subexpression regexps for
parenthesis pairs that are not referenced by backrefs elsewhere in
the regexp.  (To preserve semantics, we obviously still have to
pin down the match locations of backref references.)  Users could
have obtained the same results before this by being careful to
write "non capturing" parentheses wherever possible, but few people
bother with that.

Discussion: https://postgr.es/m/2219936.1628115334@sss.pgh.pa.us
2021-08-09 11:26:34 -04:00
..
data Add files forgotten in f576b17cd6 2016-03-16 19:23:41 +03:00
expected Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
sql Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
.gitignore Support "make check" in contrib 2011-04-25 22:27:11 +03:00
Makefile Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
pg_trgm--1.0--1.1.sql Fix typo in update scripts for some contrib modules. 2013-07-19 04:13:01 +09:00
pg_trgm--1.1--1.2.sql Add word_similarity to pg_trgm contrib module. 2016-03-16 18:59:21 +03:00
pg_trgm--1.2--1.3.sql Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
pg_trgm--1.3--1.4.sql Add strict_word_similarity to pg_trgm module 2018-03-21 14:57:42 +03:00
pg_trgm--1.3.sql Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
pg_trgm--1.4--1.5.sql Fix typo in contrib/pg_trgm/pg_trgm--1.4--1.5.sql 2020-11-12 08:55:09 +03:00
pg_trgm--1.5--1.6.sql Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
pg_trgm.control Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
trgm.h Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
trgm_gin.c Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
trgm_gist.c Handle equality operator in contrib/pg_trgm 2020-11-15 08:52:35 +03:00
trgm_op.c Introduce macros for typalign and typstorage constants. 2020-03-04 10:34:25 -05:00
trgm_regexp.c Avoid determining regexp subexpression matches, when possible. 2021-08-09 11:26:34 -04:00