Commit 3ca7eddb authored by Teodor Sigaev's avatar Teodor Sigaev

Fix bug with multiple evaluation of tsearch2 compatibility trigger, trigger

data should be restored.
Backpatch only for 8.3 because previous versions haven't such layer.
parent 61fd2c51
......@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/contrib/tsearch2/tsearch2.c,v 1.8 2009/01/01 17:23:32 momjian Exp $
* $PostgreSQL: pgsql/contrib/tsearch2/tsearch2.c,v 1.9 2009/01/28 18:31:32 teodor Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -367,8 +367,10 @@ tsa_tsearch2(PG_FUNCTION_ARGS)
{
TriggerData *trigdata;
Trigger *trigger;
char **tgargs;
char **tgargs,
**tgargs_old;
int i;
Datum res;
/* Check call context */
if (!CALLED_AS_TRIGGER(fcinfo)) /* internal error */
......@@ -388,10 +390,20 @@ tsa_tsearch2(PG_FUNCTION_ARGS)
tgargs[1] = pstrdup(GetConfigOptionByName("default_text_search_config",
NULL));
tgargs_old = trigger->tgargs;
trigger->tgargs = tgargs;
trigger->tgnargs++;
return tsvector_update_trigger_byid(fcinfo);
res = tsvector_update_trigger_byid(fcinfo);
/* restore old trigger data */
trigger->tgargs = tgargs_old;
trigger->tgnargs--;
pfree(tgargs[1]);
pfree(tgargs);
return res;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment