pgsql: Prevent crash when ts_rewrite() replaces a non-top-level subtree

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Prevent crash when ts_rewrite() replaces a non-top-level subtree
Date: 2016-12-11 18:10:14
Message-ID: E1cG8Zi-0007C4-6u@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Prevent crash when ts_rewrite() replaces a non-top-level subtree with null.

When ts_rewrite()'s replacement argument is an empty tsquery, it's supposed
to simplify any operator nodes whose operand(s) become NULL; but it failed
to do that reliably, because dropvoidsubtree() only examined the top level
of the result tree. Rather than make a second recursive pass, let's just
give the responsibility to dofindsubquery() to simplify while it's doing
the main replacement pass. Per report from Andreas Seltenreich.

Artur Zakirov, with some cosmetic changes by me. Back-patch to all
supported branches.

Discussion: https://postgr.es/m/8737i01dew.fsf@credativ.de

Branch
------
REL9_4_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/6f5cb982e7df8f277505fd2028be83211d586769

Modified Files
--------------
src/backend/utils/adt/tsquery_rewrite.c | 58 ++++++++++++++++-----------------
src/test/regress/expected/tsearch.out | 15 +++++++++
src/test/regress/sql/tsearch.sql | 3 ++
3 files changed, 47 insertions(+), 29 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2016-12-11 19:54:40 pgsql: Use "%option prefix" to set API names in ecpg's lexer.
Previous Message Jim Nasby 2016-12-10 23:19:32 Re: [COMMITTERS] pgsql: Implement table partitioning.