Insecure initialization of required_relids field

Поиск
Список
Период
Сортировка
От Andrey Lepikhov
Тема Insecure initialization of required_relids field
Дата
Msg-id 5c21029d-81a2-c999-6744-6a898fcc9a19@postgrespro.ru
обсуждение исходный текст
Ответы Re: Insecure initialization of required_relids field  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,

commit a31ad27fc5d introduced required_relids field. By default, it 
links to the clause_relids.
It works good while we do not modify clause_relids or required_relids.
But in the case of modification such initialization demands us to 
remember, that this field is shared. And we need to do bms_copy() before 
making any changes (see [1] for example).
Also, we make some changes of the RestrictInfo fields (see patch [2]) 
during removing of unneeded self joins.
I propose to do more secure initialization way of required_relids (see 
patch in attachment).

[1] commit 4e97631e6a9, analyzejoins.c, line 434,435:
rinfo->required_relids = bms_copy(rinfo->required_relids);
rinfo->required_relids = bms_del_member(rinfo->required_relids, relid);
[2] https://commitfest.postgresql.org/23/1712/

-- 
Andrey Lepikhov
Postgres Professional
https://postgrespro.com
The Russian Postgres Company

Вложения

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

Предыдущее
От: Edmund Horner
Дата:
Сообщение: Re: Tid scan improvements
Следующее
От: Konstantin Knizhnik
Дата:
Сообщение: Re: Built-in connection pooler