Thread: [COMMITTERS] pgsql: Prevent crash when ts_rewrite() replaces a non-top-levelsubtree
[COMMITTERS] pgsql: Prevent crash when ts_rewrite() replaces a non-top-levelsubtree
From
Tom Lane
Date:
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_6_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/c8bfe055be9c688d7084546245c59f7f12a7c606 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(-)