Cleanup: PGProc->links doesn't need to be the first field anymore

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Cleanup: PGProc->links doesn't need to be the first field anymore
Дата
Msg-id 22aa749e-cc1a-424a-b455-21325473a794@iki.fi
обсуждение исходный текст
Ответы Re: Cleanup: PGProc->links doesn't need to be the first field anymore
Re: Cleanup: PGProc->links doesn't need to be the first field anymore
Список pgsql-hackers
pgproc.h has this:

> struct PGPROC
> {
>     /* proc->links MUST BE FIRST IN STRUCT (see ProcSleep,ProcWakeup,etc) */
>     dlist_node    links;            /* list link if process is in a list */
>     dlist_head *procgloballist; /* procglobal list that owns this PGPROC */
> ...

I don't see any particular reason for 'links' to be the first field. We 
used to do things like "proc = (PGPROC *) waitQueue->links.next", but 
since commit 5764f611e1, this has been a "dlist", and dlist_container() 
can handle the list link being anywhere in the struct.

I tried moving it and ran the regression tests. That revealed one place 
where we still don't use dlist_container:

>     if (!dlist_is_empty(procgloballist))
>     {
>         MyProc = (PGPROC *) dlist_pop_head_node(procgloballist);
> ...

I believe that was just an oversight. Trivial patch attached.

-- 
Heikki Linnakangas
Neon (https://neon.tech)
Вложения

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

Предыдущее
От: David Rowley
Дата:
Сообщение: Re: Incorrect Assert in BufFileSize()?
Следующее
От: Noah Misch
Дата:
Сообщение: Re: race condition in pg_class