Skip site navigation (1) Skip section navigation (2)

Re: BUG #4629: PL/pgSQL issue

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Martin Blazek" <mblazek(at)8bc(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #4629: PL/pgSQL issue
Date: 2009-02-02 19:30:46
Message-ID: 24555.1233603046@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-bugs
"Martin Blazek" <mblazek(at)8bc(dot)com> writes:
> CREATE FUNCTION test() RETURNS integer AS $$
> BEGIN
> CREATE RULE "rule" AS ON INSERT TO "test" DO INSTEAD INSERT INTO "test"
> VALUES (1);
> END;$$ LANGUAGE plpgsql;

Hm, I guess nobody ever tried to do that in plpgsql before.  It's
taking the INTO as starting a clause that returns values into plpgsql
variables :-(.

There's a special case in there to prevent INTO just after INSERT
from being taken that way, but it only works when the INSERT is at
the start of the statement :-(.  Guess we need to change that.

In the meantime, you can probably work around this by using EXECUTE,
ie

EXECUTE 'CREATE RULE "rule" AS ON INSERT TO "test" DO INSTEAD INSERT INTO "test" VALUES (1)';

			regards, tom lane

In response to

Responses

pgsql-bugs by date

Next:From: Pavel StehuleDate: 2009-02-02 19:43:01
Subject: Re: BUG #4629: PL/pgSQL issue
Previous:From: Robert WalkerDate: 2009-02-02 18:24:28
Subject: BUG #4635: postgres.exe crash when RAISE NOTICE during debugging of PL/pgSQL function in PgAdminIII

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group