Thread: BUG #2539: PL/PgSQL doesn't disallow COPY commands on compile, even though it disallows them.

The following bug has been logged online:

Bug reference:      2539
Logged by:          David Fetter
Email address:      david@fetter.org
PostgreSQL version: All
Operating system:   Linux and OSX that I've tested
Description:        PL/PgSQL doesn't disallow COPY commands on compile, even
though it disallows them.
Details:

Here's a repro:

davidfetter=> SHOW check_function_bodies ;
 check_function_bodies
-----------------------
 on
(1 row)

davidfetter=> CREATE OR REPLACE FUNCTION bad_func()
RETURNS VOID
LANGUAGE plpgsql
AS $$
BEGIN
    CREATE TEMPORARY TABLE bad(i INTEGER) ON COMMIT DROP;
    INSERT INTO bad
    SELECT s.i FROM generate_series(1,10) AS s(i);
    COPY bad TO stdout;
END;
$$;
CREATE FUNCTION
davidfetter=> select bad_func();
ERROR:  SPI_execute_plan failed executing query "COPY bad TO stdout":
SPI_ERROR_COPY
CONTEXT:  PL/pgSQL function "bad_func" line 5 at SQL statement
"David Fetter" <david@fetter.org> writes:
> Description:        PL/PgSQL doesn't disallow COPY commands on compile, even
> though it disallows them.

There are many many things that won't be checked until execution.
I can't get excited about this one.

            regards, tom lane
On Wed, Jul 19, 2006 at 07:02:15PM -0400, Tom Lane wrote:
> "David Fetter" <david@fetter.org> writes:
> > Description:        PL/PgSQL doesn't disallow COPY commands on
> > compile, even though it disallows them.
>
> There are many many things that won't be checked until execution.  I
> can't get excited about this one.

I just wanted to get it in the queue, wherever it should be. :)

Cheers,
D
--
David Fetter <david@fetter.org> http://fetter.org/
phone: +1 415 235 3778        AIM: dfetter666
                              Skype: davidfetter

Remember to vote!