postgresql/src/test/regress/sql
Tom Lane f2c4ffc330 Fix potential infinite loop in regular expression execution.
In cfindloop(), if the initial call to shortest() reports that a
zero-length match is possible at the current search start point, but then
it is unable to construct any actual match to that, it'll just loop around
with the same start point, and thus make no progress.  We need to force the
start point to be advanced.  This is safe because the loop over "begin"
points has already tried and failed to match starting at "close", so there
is surely no need to try that again.

This bug was introduced in commit e2bd904955,
wherein we allowed continued searching after we'd run out of match
possibilities, but evidently failed to think hard enough about exactly
where we needed to search next.

Because of the way this code works, such a match failure is only possible
in the presence of backrefs --- otherwise, shortest()'s judgment that a
match is possible should always be correct.  That probably explains how
come the bug has escaped detection for several years.

The actual fix is a one-liner, but I took the trouble to add/improve some
comments related to the loop logic.

After fixing that, the submitted test case "()*\1" didn't loop anymore.
But it reported failure, though it seems like it ought to match a
zero-length string; both Tcl and Perl think it does.  That seems to be from
overenthusiastic optimization on my part when I rewrote the iteration match
logic in commit 173e29aa5d: we can't just
"declare victory" for a zero-length match without bothering to set match
data for capturing parens inside the iterator node.

Per fuzz testing by Greg Stark.  The first part of this is a bug in all
supported branches, and the second part is a bug since 9.2 where the
iteration rewrite happened.
2015-10-02 14:26:36 -04:00
..
.gitignore Add a SECURITY LABEL command. 2010-09-27 20:55:27 -04:00
abstime.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
advisory_lock.sql Add transaction-level advisory locks. 2011-02-18 14:05:12 +09:00
aggregates.sql Share transition state between different aggregates when possible. 2015-08-04 17:53:10 +03:00
alter_generic.sql Fix some typos in regression test comments. 2015-07-05 13:14:38 -04:00
alter_operator.sql Fix entirely broken permissions test in new alter_operator regression test. 2015-07-17 14:10:52 -04:00
alter_table.sql Fix pg_dump to handle inherited NOT VALID check constraints correctly. 2015-10-01 16:20:13 -04:00
arrays.sql Fix bug around assignment expressions containing indirections. 2015-07-24 11:52:07 +02:00
async.sql Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
bitmapops.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
boolean.sql Clean up references to SQL92 2013-04-20 11:04:41 -04:00
box.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
brin.sql Fix brin regression test so it actually tests cidr. 2015-06-04 15:24:22 -04:00
btree_index.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
case.sql Clean up references to SQL92 2013-04-20 11:04:41 -04:00
char.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
circle.sql Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LAST 2007-01-09 02:14:16 +00:00
cluster.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
collate.linux.utf8.sql Support range data types. 2011-11-03 13:42:15 +02:00
collate.sql Show sort ordering options in EXPLAIN output. 2015-01-16 18:19:00 -05:00
combocid.sql Avoid incrementing the CommandCounter when CommandCounterIncrement is called 2007-11-30 21:22:54 +00:00
comments.sql Implement nested block comments in the backend and in psql. 2000-07-14 15:43:57 +00:00
conversion.sql Improve test for CONVERT() with GB18030 <-> UTF8. 2015-05-15 17:03:23 -04:00
copy2.sql Fix null-pointer-deref crash while doing COPY IN with check constraints. 2015-02-15 23:26:45 -05:00
copyselect.sql Have \copy go through SendQuery 2012-01-25 18:22:00 -03:00
create_aggregate.sql Allow polymorphic aggregates to have non-polymorphic state data types. 2014-04-23 19:17:41 -04:00
create_cast.sql Make CREATE TYPE print warnings if a datatype's I/O functions are volatile. 2014-11-05 11:44:06 -05:00
create_function_3.sql Move regression test listing of builtin leakproof functions to opr_sanity.sql. 2014-06-05 13:54:25 +02:00
create_index.sql Don't warn about creating temporary or unlogged hash indexes. 2015-06-26 11:37:32 -04:00
create_misc.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_operator.sql Allow named parameters to be specified using => in addition to := 2015-03-10 11:09:41 -04:00
create_table.sql Fix lost persistence setting during REINDEX INDEX 2015-03-30 16:01:44 -03:00
create_table_like.sql Allow CREATE TABLE (LIKE ...) from composite type 2012-03-03 16:03:05 +02:00
create_type.sql Fix pg_dump to dump shell types. 2015-08-04 19:34:12 -04:00
create_view.sql Partial fix for dropped columns in functions returning composite. 2014-07-19 14:28:52 -04:00
date.sql Add make_date() and make_time() functions. 2013-11-17 15:06:50 -05:00
delete.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
dependency.sql Create a separate grantable privilege for TRUNCATE, rather than having it be 2008-09-08 00:47:41 +00:00
domain.sql Use the typcache to cache constraints for domain types. 2015-03-01 14:06:55 -05:00
drop_if_exists.sql Make DROP IF EXISTS more consistently not fail 2014-01-23 14:40:29 -03:00
enum.sql Allow adding values to an enum type created in the current transaction. 2012-12-01 14:27:30 -05:00
equivclass.sql Fix some more problems with nested append relations. 2014-10-01 19:31:12 -04:00
errors.sql Allow empty target list in SELECT. 2013-12-14 20:23:26 -05:00
event_trigger.sql Rearrange the handling of error context reports. 2015-09-05 11:58:33 -04:00
float4.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
float8.sql Revert "Add some regression test cases for denormalized float8 input." 2012-02-04 15:52:09 -05:00
foreign_data.sql Allow foreign tables to participate in inheritance. 2015-03-22 13:53:21 -04:00
foreign_key.sql Fix overlooked relcache invalidation in ALTER TABLE ... ALTER CONSTRAINT. 2015-05-03 11:30:24 -04:00
functional_deps.sql Recognize functional dependency on primary keys. This allows a table's 2010-08-07 02:44:09 +00:00
geometry.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
gin.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
gist.sql Fix potential platform dependence in gist regression test. 2015-08-25 11:43:37 -04:00
groupingsets.sql Fix flattening of nested grouping sets. 2015-07-26 16:50:29 +02:00
guc.sql Add an optional missing_ok argument to SQL function current_setting(). 2015-07-02 16:41:07 -04:00
hash_index.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
horology.sql Fix to_timestamp/to_date's handling of consecutive spaces in format string. 2014-01-20 13:45:51 -05:00
hs_primary_extremes.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
hs_primary_setup.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_allowed.sql regression test: fix hot standby tests by using repeatable read 2014-04-22 17:23:58 -04:00
hs_standby_check.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_disallowed.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_functions.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
indirect_toast.sql Add support for multiple kinds of external toast datums. 2013-07-02 13:38:55 -04:00
inet.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
inherit.sql Fix eclass_useful_for_merging to give valid results for appendrel children. 2015-08-06 20:14:53 -04:00
insert.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
insert_conflict.sql Fix ON CONFLICT DO UPDATE for tables with oids. 2015-09-28 19:29:44 +02:00
int2.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int4.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int8.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
interval.sql interval: tighten precision specification 2014-10-18 10:31:00 -04:00
join.sql Improve regression test case to avoid depending on system catalog stats. 2015-08-13 13:25:22 -04:00
json.sql Fix treatment of nulls in jsonb_agg and jsonb_object_agg 2015-07-24 09:40:46 -04:00
jsonb.sql Fix the fastpath rule for jsonb_concat with an empty operand. 2015-09-13 17:06:45 -04:00
limit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
line.sql Revert "Tweak "line" test to avoid negative zeros on some platforms" 2013-10-25 15:50:31 -04:00
lock.sql Add a basic atomic ops API abstracting away platform/architecture details. 2014-09-25 23:49:05 +02:00
lseg.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
matview.sql Add CINE option for CREATE TABLE AS and CREATE MATERIALIZED VIEW 2014-12-13 13:56:09 -05:00
money.sql Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04:00
name.sql Add a "USING" clause to DELETE, which is equivalent to the FROM clause 2005-04-07 01:51:41 +00:00
namespace.sql Regression tests for SCHEMA commands 2013-12-11 20:45:15 +00:00
numeric.sql Fix possible internal overflow in numeric multiplication. 2015-09-21 12:11:32 -04:00
numeric_big.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
numerology.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
object_address.sql Add transforms to pg_get_object_address and friends 2015-06-21 16:08:49 -03:00
oid.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
oidjoins.sql Update oidjoins regression test for 9.5. 2015-07-25 15:46:26 -04:00
opr_sanity.sql Check that all aliases of a built-in function have same leakproof property. 2015-05-29 13:26:21 -04:00
path.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
pg_lsn.sql Tweak new regression test case for better portability. 2014-06-04 21:31:41 -04:00
plancache.sql Change plan caching to honor, not resist, changes in search_path. 2013-01-25 14:14:41 -05:00
plpgsql.sql Tweak wording of syntax error messages about bad CONTINUE/EXIT statements. 2015-08-23 17:34:47 -04:00
point.sql Fix gist_box_same and gist_point_consistent to handle fuzziness correctly. 2013-02-08 18:03:17 -05:00
polygon.sql regression tests: remove polygon diagrams 2015-03-19 22:10:52 -04:00
polymorphism.sql Allow named parameters to be specified using => in addition to := 2015-03-10 11:09:41 -04:00
portals.sql Fix failure to set ActiveSnapshot while rewinding a cursor. 2014-05-07 14:25:11 -04:00
portals_p2.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
prepare.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
prepared_xacts.sql Remove unnecessary and unreliable test 2015-02-20 14:03:49 -03:00
privileges.sql Improve regression test coverage of table lock modes vs permissions. 2015-07-07 14:35:35 -07:00
psql.sql Rearrange the handling of error context reports. 2015-09-05 11:58:33 -04:00
random.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
rangefuncs.sql Support flattening of empty-FROM subqueries and one-row VALUES tables. 2015-03-11 23:18:03 -04:00
rangetypes.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
regex.sql Fix potential infinite loop in regular expression execution. 2015-10-02 14:26:36 -04:00
regproc.sql Add new OID alias type regnamespace 2015-05-09 13:36:52 -04:00
reltime.sql Add a "USING" clause to DELETE, which is equivalent to the FROM clause 2005-04-07 01:51:41 +00:00
replica_identity.sql psql: conditionally display oids and replication identity 2014-04-15 13:28:54 -04:00
returning.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
roleattributes.sql Clean up roles from roleattributes test 2015-08-21 15:51:24 -04:00
rolenames.sql Allow CURRENT/SESSION_USER to be used in certain commands 2015-03-09 15:41:54 -03:00
rowsecurity.sql Ensure a few policies remain for pg_upgrade 2015-09-28 15:48:36 -04:00
rowtypes.sql Ensure that RowExprs and whole-row Vars produce the expected column names. 2014-11-10 15:21:09 -05:00
rules.sql Fix yet another bug in ON CONFLICT rule deparsing. 2015-05-23 02:16:24 +02:00
sanity_check.sql Use unaligned output in selected regression queries to reduce diff noise. 2013-10-26 11:24:04 -04:00
security_label.sql Move security_label test 2014-12-01 16:12:43 -03:00
select.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_distinct.sql Alter some gratuitous uses of "ANSI" when "SQL standard" might have been 2009-07-11 21:15:32 +00:00
select_distinct_on.sql Fix assertion failure when a SELECT DISTINCT ON expression is volatile. 2009-09-12 00:04:59 +00:00
select_having.sql Make the behavior of HAVING without GROUP BY conform to the SQL spec. 2005-03-10 23:21:26 +00:00
select_implicit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_into.sql Restructure SELECT INTO's parsetree representation into CreateTableAsStmt. 2012-03-19 21:38:12 -04:00
select_views.sql Improve qual pushdown for RLS and SB views 2015-04-27 12:29:42 -04:00
sequence.sql Add tests for sequence privileges 2014-10-22 21:39:07 -04:00
spgist.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
stats.sql Have TRUNCATE update pgstat tuple counters 2015-02-20 12:10:01 -03:00
strings.sql Fix regexp_matches() handling of zero-length matches. 2013-07-31 11:31:22 -04:00
subselect.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
tablesample.sql Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
temp.sql Don't refer to the database name "regression" inside the regression test 2008-07-03 16:01:10 +00:00
text.sql Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -04:00
time.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
timestamp.sql Constructors for interval, timestamp, timestamptz 2014-03-04 15:09:43 -03:00
timestamptz.sql Don't require bleeding-edge timezone data in timestamptz regression test. 2014-11-18 21:36:39 -05:00
timetz.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
tinterval.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
transactions.sql Fix subtransaction cleanup after an outer-subtransaction portal fails. 2015-09-04 13:37:14 -04:00
triggers.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
truncate.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
tsdicts.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
tsearch.sql Fix ts_rank_cd() to ignore stripped lexemes 2014-03-24 14:37:16 -04:00
tstypes.sql Extend GIN to support partial-match searches, and extend tsquery to support 2008-05-16 16:31:02 +00:00
txid.sql Handle duplicate XIDs in txid_snapshot. 2014-05-15 18:29:20 +03:00
type_sanity.sql In type_sanity, check I/O functions of built-in types are not volatile. 2014-10-23 15:59:40 -04:00
typed_table.sql Only allow typed tables to hang off composite types, not e.g. tables. 2011-04-18 10:19:46 -04:00
union.sql Forward-patch regression test for "could not find pathkey item to sort". 2014-06-26 10:41:48 -07:00
updatable_views.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
update.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
vacuum.sql Avoid unexpected slowdown in vacuum regression test. 2015-01-12 15:13:53 -05:00
varchar.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
window.sql Allow pushdown of WHERE quals into subqueries with window functions. 2014-06-27 23:08:08 -07:00
with.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
without_oid.sql Combine cmin and cmax fields of HeapTupleHeaders into a single field, by 2007-02-09 03:35:35 +00:00
xml.sql Fix namespace handling in xpath function 2015-01-06 23:06:13 -05:00
xmlmap.sql Add regression tests for XML mapping of domains 2013-03-13 22:42:57 -04:00