Re: BUG #6379: SQL Function Causes Back-end Crash - Mailing list pgsql-bugs

From hubert depesz lubaczewski
Subject Re: BUG #6379: SQL Function Causes Back-end Crash
Date
Msg-id 20120104192524.GA8370@depesz.com
Whole thread Raw
In response to BUG #6379: SQL Function Causes Back-end Crash  (pramsey@cleverelephant.ca)
Responses Re: BUG #6379: SQL Function Causes Back-end Crash  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: BUG #6379: SQL Function Causes Back-end Crash  (Paul Ramsey <pramsey@cleverelephant.ca>)
List pgsql-bugs
On Wed, Jan 04, 2012 at 07:17:17PM +0000, pramsey@cleverelephant.ca wrote:
> The following bug has been logged on the website:
>
> Bug reference:      6379
> Logged by:          Paul Ramsey
> Email address:      pramsey@cleverelephant.ca
> PostgreSQL version: 9.1.2
> Operating system:   OSX 10.6.8
> Description:
>
> CREATE OR REPLACE FUNCTION kill_backend()
> RETURNS VOID
> AS $$
>   DROP TABLE if EXISTS foo;
>   CREATE TABLE foo AS SELECT * FROM pg_class LIMIT 1;
> $$ LANGUAGE 'SQL';

Cannot replicate:

(depesz@localhost:5910) 20:23:43 [depesz]
$ CREATE OR REPLACE FUNCTION kill_backend()
>> RETURNS VOID
>> AS $$
>>   DROP TABLE if EXISTS foo;
>>   CREATE TABLE foo AS SELECT * FROM pg_class LIMIT 1;
>> $$ LANGUAGE 'SQL';
CREATE FUNCTION
(depesz@localhost:5910) 20:23:49 [depesz]
$ select kill_backend();
NOTICE:  table "foo" does not exist, skipping
CONTEXT:  SQL function "kill_backend" statement 1
 kill_backend
--------------
 [null]
(1 row)

(depesz@localhost:5910) 20:23:55 [depesz]
$ select kill_backend();
 kill_backend
--------------
 [null]
(1 row)

(depesz@localhost:5910) 20:23:56 [depesz]
$ select kill_backend();
 kill_backend
--------------
 [null]
(1 row)

(depesz@localhost:5910) 20:23:58 [depesz]
$ select version();
                                                version
-------------------------------------------------------------------------------------------------------
 PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc-4.6.real (Debian 4.6.2-5) 4.6.2, 64-bit
(1 row)

Side note - definition as is, doesn't work on 9.2:
$ CREATE OR REPLACE FUNCTION kill_backend()
                                                                         
>> RETURNS VOID
                                                                          
>> AS $$
                                                                          
>>   DROP TABLE if EXISTS foo;
                                                                          
>>   CREATE TABLE foo AS SELECT * FROM pg_class LIMIT 1;
                                                                          
>> $$ LANGUAGE 'SQL';
                                                                          
ERROR:  language "SQL" does not exist

changing it to proper sql (not uppercase) fixed this problem.

Best regards,

depesz

--
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/

pgsql-bugs by date:

Previous
From: pramsey@cleverelephant.ca
Date:
Subject: BUG #6379: SQL Function Causes Back-end Crash
Next
From: Pavel Stehule
Date:
Subject: Re: BUG #6379: SQL Function Causes Back-end Crash