mirror of
https://github.com/postgres/postgres.git
synced 2025-06-22 02:52:08 +03:00
Miscellaneous cleanup of regular-expression compiler.
Revert our previous addition of "all" flags to copyins() and copyouts(); they're no longer needed, and were never anything but an unsightly hack. Improve a couple of infelicities in the REG_DEBUG code for dumping the NFA data structure, including adding code to count the total number of states and arcs. Add a couple of missed error checks. Add some more documentation in the README file, and some regression tests illustrating cases that exceeded the state-count limit and/or took unreasonable amounts of time before this set of patches. Back-patch to all supported branches.
This commit is contained in:
@ -55,6 +55,17 @@ select 'dd x' ~ '(^(?!aa)(?!bb)(?!cc))+';
|
||||
select 'a' ~ '((((((a)*)*)*)*)*)*';
|
||||
select 'a' ~ '((((((a+|)+|)+|)+|)+|)+|)';
|
||||
|
||||
-- These cases used to give too-many-states failures
|
||||
select 'x' ~ 'abcd(\m)+xyz';
|
||||
select 'a' ~ '^abcd*(((((^(a c(e?d)a+|)+|)+|)+|)+|a)+|)';
|
||||
select 'x' ~ 'a^(^)bcd*xy(((((($a+|)+|)+|)+$|)+|)+|)^$';
|
||||
select 'x' ~ 'xyz(\Y\Y)+';
|
||||
select 'x' ~ 'x|(?:\M)+';
|
||||
|
||||
-- This generates O(N) states but O(N^2) arcs, so it causes problems
|
||||
-- if arc count is not constrained
|
||||
select 'x' ~ repeat('x*y*z*', 1000);
|
||||
|
||||
-- Test backref in combination with non-greedy quantifier
|
||||
-- https://core.tcl.tk/tcl/tktview/6585b21ca8fa6f3678d442b97241fdd43dba2ec0
|
||||
select 'Programmer' ~ '(\w).*?\1' as t;
|
||||
|
Reference in New Issue
Block a user