pgsql: Fix incorrect handling of lookahead constraints in pg_regprefix( - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Fix incorrect handling of lookahead constraints in pg_regprefix(
Date
Msg-id E1ZoHSc-0006Nx-50@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix incorrect handling of lookahead constraints in pg_regprefix().

pg_regprefix was doing nothing with lookahead constraints, which would
be fine if it were the right kind of nothing, but it isn't: we have to
terminate our search for a fixed prefix, not just pretend the LACON arc
isn't there.  Otherwise, if the current state has both a LACON outarc and a
single plain-color outarc, we'd falsely conclude that the color represents
an addition to the fixed prefix, and generate an extracted index condition
that restricts the indexscan too much.  (See added regression test case.)

Terminating the search is conservative: we could traverse the LACON arc
(thus assuming that the constraint can be satisfied at runtime) and then
examine the outarcs of the linked-to state.  But that would be a lot more
work than it seems worth, because writing a LACON followed by a single
plain character is a pretty silly thing to do.

This makes a difference only in rather contrived cases, but it's a bug,
so back-patch to all supported branches.

Branch
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/05e62ff59676af1583a0c61546669adbc1dc2f4c

Modified Files
--------------
src/backend/regex/regprefix.c       |   10 ++++------
src/test/regress/expected/regex.out |    8 ++++++++
src/test/regress/sql/regex.sql      |    1 +
3 files changed, 13 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix incorrect handling of lookahead constraints in pg_regprefix(
Next
From: Tom Lane
Date:
Subject: pgsql: Fix incorrect handling of lookahead constraints in pg_regprefix(