Re: obtaining row locking information

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: obtaining row locking information
Дата
Msg-id 26400.1124117833@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: obtaining row locking information  (Tatsuo Ishii <t-ishii@sra.co.jp>)
Ответы Re: obtaining row locking information  (Tatsuo Ishii <t-ishii@sra.co.jp>)
Список pgsql-hackers
Tatsuo Ishii <t-ishii@sra.co.jp> writes:
> To accomplish this I need to add following function into
> storage/ipc/procarray.c. This is similar to BackendPidGetProc() except
> that it accepts xid as an argument. Any objection?

>     if (xid == 0)                /* never match dummy PGPROCs */
>         return NULL;

I think this test should be against InvalidTransactionId, not "0", and
the comment is wrong (you are suppressing matches against idle PGPROCs).

Also note the comment at the top of the function: once you release
ProcArrayLock you have no guarantee that the result means anything at
all; and unlike ProcSendSignal, you have no reason to think that the
target backend can't quit before you get another cycle.  It might be
better to return the pid directly rather than assuming it'll still be
meaningful to indirect through a returned pointer.

Also, what are you going to do about prepared transactions?  They can
hold locks but they don't have PIDs.  On the whole, I'm not sure this
is a good idea at all, because of that.
        regards, tom lane


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

Предыдущее
От: ohp@pyrenet.fr
Дата:
Сообщение: Re: ALTER INDEX OWNER TO
Следующее
От: Stephen Frost
Дата:
Сообщение: Re: ALTER ROLES - questions