Re: BUG #13920: pg_try_advisory_xact_lock bigint trouble

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: BUG #13920: pg_try_advisory_xact_lock bigint trouble
Дата
Msg-id CAHyXU0xn=gsEObRjr_HOChtcFQZBVUCATReRvp9=HtXmhO1nuw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #13920: pg_try_advisory_xact_lock bigint trouble  ("Valeriy A." <mtakvel@gmail.com>)
Список pgsql-bugs
On Tue, Feb 9, 2016 at 3:01 AM, Valeriy A. <mtakvel@gmail.com> wrote:
> Here my simple example
>
> --- SQL Begin
> create table table1 (
>     id bigserial PRIMARY KEY
>     -- other fields);
>
> create table table2 (
>     id bigserial PRIMARY KEY
>     -- other fields);
>
>
> CREATE FUNCTION do_action_on_table1(keyID bigint ) returns int2 LANGUAGE
> plpgsql AS $$
> DECLARE
>   isLocked boolean;
> BEGIN
>   EXECUTE 'SELECT pg_try_advisory_xact_lock($1)' INTO isLocked USING keyID;
>
>   if isLocked THEN
>      --SOME action on table1
>      RETURN 1;
>   END IF;
>
>   RETURN 0;
> END$$
>
> CREATE FUNCTION do_action_on_table2(keyID bigint ) returnS int2
> LANGUAGE plpgsql
> AS $$
> DECLARE
>   isLocked boolean;
> BEGIN
>   EXECUTE 'SELECT pg_try_advisory_xact_lock($1)' INTO isLocked USING keyID;
>
>   if isLocked THEN
>      --SOME action on table2
>      RETURN 1;
>   END IF;
>
>   RETURN 0;
> END$$
> -- SQL End

The problenm is
you can do it via:
create sequence lock_seq;
create domain lockid bigint default nextval('lock_seq');

create table table1 (
    id lockid PRIMARY KEY
    -- other fields);

create table table2 (
    id lockid PRIMARY KEY
    -- other fields);

...

merlin

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: Re: BUG #13920: pg_try_advisory_xact_lock bigint trouble
Следующее
От: Andres Freund
Дата:
Сообщение: Re: BUG #13844: Logical decoding bug with subxact + row locking