Re: Lock table in non-volatile functions
От | Gaetano Mendola |
---|---|
Тема | Re: Lock table in non-volatile functions |
Дата | |
Msg-id | 45FB4196.9090709@bigfoot.com обсуждение исходный текст |
Ответ на | Re: Lock table in non-volatile functions (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Lock table in non-volatile functions
|
Список | pgsql-hackers |
Tom Lane wrote: > Gaetano Mendola <mendola@bigfoot.com> writes: >> I'm observing that is not allowed to LOCK a table in a >> STABLE/IMMUTABLE function but at same time is allowed >> a SELECT FOR UPDATE. > > Really? AFAICS, CommandIsReadOnly() will reject SELECT FOR UPDATE too. kalman=# select version(); version -------------------------------------------------------------------------------------------------------- PostgreSQL 8.2.3on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-51) (1 row) kalman=# CREATE TABLE test( a integer ); CREATE TABLE kalman=# INSERT INTO test VALUES ( 1 ); INSERT 0 1 kalman=# CREATE OR REPLACE FUNCTION sp_test() kalman-# RETURNS INTEGER AS $body$ kalman$# DECLARE kalman$# my_integer integer; kalman$# my_port_set RECORD; kalman$# BEGIN kalman$# FOR my_port_set IN kalman$# SELECT a kalman$# FROM test kalman$# FOR UPDATE kalman$# LOOP kalman$# my_integer = 0; kalman$# END LOOP; kalman$# RETURN 0; kalman$# END; kalman$# $body$ language 'plpgsql' kalman-# STABLE; CREATE FUNCTION kalman=# select sp_test(); sp_test --------- 0 (1 row) BTW why forbid the lock in a non volatile function or (if you fix this) the SELECT FOR UPDATE ? Regards Gaetano Mendola
В списке pgsql-hackers по дате отправления: