From 12f25e70a6feb40b7fba1dcc17deabcffcdfcc3d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 23 Oct 2007 01:44:40 +0000 Subject: Fix two-argument form of ts_rewrite() so it actually works for cases where a later rewrite rule should change a subtree modified by an earlier one. Per my gripe of a few days ago. --- src/backend/utils/adt/tsquery_util.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/backend/utils/adt/tsquery_util.c') diff --git a/src/backend/utils/adt/tsquery_util.c b/src/backend/utils/adt/tsquery_util.c index a4fd0937c4e..07561920024 100644 --- a/src/backend/utils/adt/tsquery_util.c +++ b/src/backend/utils/adt/tsquery_util.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_util.c,v 1.4 2007/09/07 16:03:40 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_util.c,v 1.5 2007/10/23 01:44:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -381,3 +381,20 @@ QTNCopy(QTNode *in) return out; } + +void +QTNClearFlags(QTNode *in, uint32 flags) +{ + /* since this function recurses, it could be driven to stack overflow. */ + check_stack_depth(); + + in->flags &= ~flags; + + if (in->valnode->type != QI_VAL) + { + int i; + + for (i = 0; i < in->nchild; i++) + QTNClearFlags(in->child[i], flags); + } +} -- cgit v1.2.3