aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/tsquery_rewrite.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-10-23 01:44:40 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-10-23 01:44:40 +0000
commit12f25e70a6feb40b7fba1dcc17deabcffcdfcc3d (patch)
treec90064d7f7a870365267683adf6ddc911dd4bd14 /src/backend/utils/adt/tsquery_rewrite.c
parentbb36c51fcdca16ad4dfd4c03e2673f2471c7e341 (diff)
downloadpostgresql-12f25e70a6feb40b7fba1dcc17deabcffcdfcc3d.tar.gz
postgresql-12f25e70a6feb40b7fba1dcc17deabcffcdfcc3d.zip
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.
Diffstat (limited to 'src/backend/utils/adt/tsquery_rewrite.c')
-rw-r--r--src/backend/utils/adt/tsquery_rewrite.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/backend/utils/adt/tsquery_rewrite.c b/src/backend/utils/adt/tsquery_rewrite.c
index 77e3a8b173b..109904a5943 100644
--- a/src/backend/utils/adt/tsquery_rewrite.c
+++ b/src/backend/utils/adt/tsquery_rewrite.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_rewrite.c,v 1.4 2007/09/07 16:03:40 teodor Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_rewrite.c,v 1.5 2007/10/23 01:44:39 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -467,6 +467,13 @@ tsquery_rewrite(PG_FUNCTION_ARGS)
QTNFree(qsubs);
if (qtsubs != (TSQuery) DatumGetPointer(sdata))
pfree(qtsubs);
+
+ if (tree)
+ {
+ /* ready the tree for another pass */
+ QTNClearFlags(tree, QTN_NOCHANGE);
+ QTNSort(tree);
+ }
}
}