mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-26 06:57:19 +02:00
The complement-class escapes \D, \S, \W are now allowed within bracket expressions. There is no semantic difficulty with doing that, but the rather hokey macro-expansion-based implementation previously used here couldn't cope. Also, invent "word" as an allowed character class name, thus "\w" is now equivalent to "[[:word:]]" outside brackets, or "[:word:]" within brackets. POSIX allows such implementation-specific extensions, and the same name is used in e.g. bash. One surprising compatibility issue this raises is that constructs such as "[\w-_]" are now disallowed, as our documentation has always said they should be: character classes can't be endpoints of a range. Previously, because \w was just a macro for "[:alnum:]_", such a construct was read as "[[:alnum:]_-_]", so it was accepted so long as the character after "-" was numerically greater than or equal to "_". Some implementation cleanup along the way: * Remove the lexnest() hack, and in consequence clean up wordchrs() to not interact with the lexer. * Fix colorcomplement() to not be O(N^2) in the number of colors involved. * Get rid of useless-as-far-as-I-can-see calls of element() on single-character character element names in brackpart(). element() always maps these to the character itself, and things would be quite broken if it didn't --- should "[a]" match something different than "a" does? Besides, the shortcut path in brackpart() wasn't doing this anyway, making it even more inconsistent. Discussion: https://postgr.es/m/2845172.1613674385@sss.pgh.pa.us Discussion: https://postgr.es/m/3220564.1613859619@sss.pgh.pa.us |
||
---|---|---|
.. | ||
access | ||
bootstrap | ||
catalog | ||
commands | ||
common | ||
datatype | ||
executor | ||
fe_utils | ||
foreign | ||
jit | ||
lib | ||
libpq | ||
mb | ||
nodes | ||
optimizer | ||
parser | ||
partitioning | ||
port | ||
portability | ||
postmaster | ||
regex | ||
replication | ||
rewrite | ||
snowball | ||
statistics | ||
storage | ||
tcop | ||
tsearch | ||
utils | ||
.gitignore | ||
c.h | ||
fmgr.h | ||
funcapi.h | ||
getaddrinfo.h | ||
getopt_long.h | ||
Makefile | ||
miscadmin.h | ||
pg_config_ext.h.in | ||
pg_config_manual.h | ||
pg_config.h.in | ||
pg_getopt.h | ||
pg_trace.h | ||
pgstat.h | ||
pgtar.h | ||
pgtime.h | ||
port.h | ||
postgres_ext.h | ||
postgres_fe.h | ||
postgres.h | ||
rusagestub.h | ||
windowapi.h |