Re: Clarification regarding managing advisory locks in postgresql

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: Clarification regarding managing advisory locks in postgresql
Дата
Msg-id CAHyXU0y1C+bxAw=Wsa=OH91QP+ZYJrRWLToNW4XE_tmZOQQCdw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Clarification regarding managing advisory locks in postgresql  (Sasmit Utkarsh <utkarshsasmit@gmail.com>)
Список pgsql-general
On Thu, Jan 25, 2024 at 4:44 AM Sasmit Utkarsh <utkarshsasmit@gmail.com> wrote:
Okay Thanks. Also please help me understand the below scenarios

From the above statement, I understand is (please correct if I'm wrong here), When we fork a client process, each process gets its own database connection or transaction context.
So far so good
 
Therefore, locks acquired in one process (or transaction) do not directly affect locks in another process (or transaction).
Not following you here. By definition, a lock impacts other processes; that's the entire purpose.  The affect other processes in that two processes cannot take a lock on the same thing at the same time.
 
Now, I'm faced with another situation where I'm using libpq in C as client programs and while calling some function it acquires pg_advisory_lock for the request  with some identifier in transaction A. This can be thought of as “lock the operation with id = X”  and then make some SQL requests(retrieve) from the database. During that if it forks into another process B,

Client side code should not fork and preserve connections across the fork.  This is multi-threaded access to a connection, and generally speaking you should not have 2+ threads hitting the same connection returned from libpq.  This is undefined behavior, so that your questions below this I suspect are moot.

merlin

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

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Fwd: pgadmin not opening in concurrent sessions
Следующее
От: veem v
Дата:
Сообщение: Re: Partitioning options