diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-10-23 01:44:40 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-10-23 01:44:40 +0000 |
commit | 12f25e70a6feb40b7fba1dcc17deabcffcdfcc3d (patch) | |
tree | c90064d7f7a870365267683adf6ddc911dd4bd14 /src/backend/utils/adt/tsquery_rewrite.c | |
parent | bb36c51fcdca16ad4dfd4c03e2673f2471c7e341 (diff) | |
download | postgresql-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.c | 9 |
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); + } } } |