Stack not being popped correctly (was: Re: [HACKERS] plpgsql lacks generic identifier for record in triggers...) - Mailing list pgsql-bugs

From Sean Chittenden
Subject Stack not being popped correctly (was: Re: [HACKERS] plpgsql lacks generic identifier for record in triggers...)
Date
Msg-id 48C2864A-3E83-11D9-841B-000A95C705DC@chittenden.org
Whole thread Raw
Responses Re: Stack not being popped correctly (was: Re: [HACKERS] plpgsql lacks generic identifier for record in triggers...)
List pgsql-bugs
> [snip]  Err... wait, this is a classic case of send first then
> finishing to pondering the gripe.

And sending a reply to ones self without actually testing my suggestion.

>> db=# CREATE FUNCTION schma.tbl_inval() RETURNS TRIGGER AS 'BEGIN
>>         EXECUTE public.mc_init();
>>         EXECUTE public.mc_delete(''mc_key'');
>>         RETURN NULL;
>> END;' LANGUAGE 'plpgsql';
>> db=# CREATE TRIGGER tbl_inval_trg AFTER INSERT OR UPDATE OR DELETE ON
>> schma.tbl FOR EACH STATEMENT EXECUTE PROCEDURE schma.tbl_inval();

Which, doesn't work as expected as it seems as though there's something
left behind on the stack that shouldn't be.  Here's the case to
reproduce (doesn't involve pgmemcache):

test=# CREATE TABLE t5 (i int);
Time: 35.294 ms
test=# CREATE FUNCTION t5_func() RETURNS TRIGGER AS 'BEGIN EXECUTE
TRUE; RETURN NULL; END;' LANGUAGE 'plpgsql';
Time: 101.701 ms
test=# CREATE TRIGGER t5_func_trg AFTER INSERT ON t5 FOR EACH STATEMENT
EXECUTE PROCEDURE t5_func();
Time: 62.345 ms
test=# INSERT INTO t5 VALUES (1);
ERROR:  syntax error at or near "t" at character 1
QUERY:  t
CONTEXT:  PL/pgSQL function "t5_func" line 1 at execute statement
LINE 1: t
         ^
Doh!  Can someone with plpgsql foo look into this?  -sc

--
Sean Chittenden

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #1328: psql don't accept some valid PGCLIENTENCODING values
Next
From: Tom Lane
Date:
Subject: Re: Stack not being popped correctly (was: Re: [HACKERS] plpgsql lacks generic identifier for record in triggers...)