postgresql/src/include
Tom Lane 08c0d6ad65 Invent "rainbow" arcs within the regex engine.
Some regular expression constructs, most notably the "." match-anything
metacharacter, produce a sheaf of parallel NFA arcs covering all
possible colors (that is, character equivalence classes).  We can make
a noticeable improvement in the space and time needed to process large
regexes by replacing such cases with a single arc bearing the special
color code "RAINBOW".  This requires only minor additional complication
in places such as pull() and push().

Callers of pg_reg_getoutarcs() must now be prepared for the possibility
of seeing a RAINBOW arc.  For the one known user, contrib/pg_trgm,
that's a net benefit since it cuts the number of arcs to be dealt with,
and the handling isn't any different than for other colors that contain
too many characters to be dealt with individually.

This is part of a patch series that in total reduces the regex engine's
runtime by about a factor of four on a large corpus of real-world regexes.

Patch by me, reviewed by Joel Jacobson

Discussion: https://postgr.es/m/1340281.1613018383@sss.pgh.pa.us
2021-02-20 18:11:56 -05:00
..
access Fix heap_page_prune() parameter order confusion introduced in dc7420c2c9. 2021-02-15 17:12:12 -08:00
bootstrap Update copyright for 2021 2021-01-02 13:06:25 -05:00
catalog Update snowball 2021-02-19 08:10:15 +01:00
commands Allow multiple xacts during table sync in logical replication. 2021-02-12 07:41:51 +05:30
common Add result size as argument of pg_cryptohash_final() for overflow checks 2021-02-15 10:18:34 +09:00
datatype Update copyright for 2021 2021-01-02 13:06:25 -05:00
executor Fix permission checks on constraint violation errors on partitions. 2021-02-08 11:01:51 +02:00
fe_utils Generalize parallel slot result handling. 2021-02-05 16:08:45 -05:00
foreign Implement support for bulk inserts in postgres_fdw 2021-01-20 23:57:27 +01:00
jit Update copyright for 2021 2021-01-02 13:06:25 -05:00
lib Update copyright for 2021 2021-01-02 13:06:25 -05:00
libpq Allow specifying CRL directory 2021-02-18 07:59:10 +01:00
mb Add mbverifystr() functions specific to each encoding. 2021-01-28 14:40:07 +02:00
nodes Make ExecGetInsertedCols() and friends more robust and improve comments. 2021-02-15 09:28:08 +02:00
optimizer Remove [Merge]AppendPath.partitioned_rels. 2021-02-01 14:43:54 -05:00
parser Remove no-longer-used RTE argument of markVarForSelectPriv(). 2021-02-11 11:23:25 -05:00
partitioning Remove [Merge]AppendPath.partitioned_rels. 2021-02-01 14:43:54 -05:00
port Default to wal_sync_method=fdatasync on FreeBSD. 2021-02-15 16:04:59 +13:00
portability Update copyright for 2021 2021-01-02 13:06:25 -05:00
postmaster Update copyright for 2021 2021-01-02 13:06:25 -05:00
regex Invent "rainbow" arcs within the regex engine. 2021-02-20 18:11:56 -05:00
replication Fix the warnings introduced in commit ce0fdbfe97. 2021-02-15 07:28:02 +05:30
rewrite SEARCH and CYCLE clauses 2021-02-01 14:32:51 +01:00
snowball Update snowball 2021-02-19 08:10:15 +01:00
statistics Update copyright for 2021 2021-01-02 13:06:25 -05:00
storage Display the time when the process started waiting for the lock, in pg_locks, take 2 2021-02-15 15:13:37 +09:00
tcop Update copyright for 2021 2021-01-02 13:06:25 -05:00
tsearch Convert tsginidx.c's GIN indexing logic to fully ternary operation. 2021-02-16 12:07:14 -05:00
utils Preserve pg_attribute.attstattarget across REINDEX CONCURRENTLY 2021-02-10 13:06:48 +09:00
.gitignore Refactor dlopen() support 2018-09-06 11:33:04 +02:00
c.h Tweak compiler version cutoff for no_sanitize("alignment") support. 2021-02-12 17:33:14 -05:00
fmgr.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
funcapi.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
getaddrinfo.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
getopt_long.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
Makefile Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
miscadmin.h Add idle_session_timeout. 2021-01-06 18:28:52 -05:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Simplify code related to compilation of SSL and OpenSSL 2021-02-10 15:28:19 +09:00
pg_config.h.in Fix inconsistent configure data for --with-ssl 2021-02-20 10:17:10 +09:00
pg_getopt.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_trace.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgstat.h Bump PGSTAT_FILE_FORMAT_ID 2021-01-18 17:51:49 +01:00
pgtar.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgtime.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
port.h Provide pg_preadv() and pg_pwritev(). 2021-01-11 15:24:38 +13:00
postgres_ext.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
postgres_fe.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
postgres.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
rusagestub.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
windowapi.h Update copyright for 2021 2021-01-02 13:06:25 -05:00