pgsql: Fix bugs in contrib/pg_visibility.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix bugs in contrib/pg_visibility.
Дата
Msg-id E1bqQxy-0005N8-2N@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix bugs in contrib/pg_visibility.

collect_corrupt_items() failed to initialize tuple.t_self.  While
HeapTupleSatisfiesVacuum() doesn't actually use that value, it does
Assert that it's valid, so that the code would dump core if ip_posid
chanced to be zero.  (That's somewhat unlikely, which probably explains
how this got missed.  In any case it wouldn't matter for field use.)

Also, collect_corrupt_items was returning the wrong TIDs, that is the
contents of t_ctid rather than the tuple's own location.  This would
be the same thing in simple cases, but it could be wrong if, for
example, a past update attempt had been rolled back, leaving a live
tuple whose t_ctid doesn't point at itself.

Also, in pg_visibility(), guard against trying to read a page past
the end of the rel.  The VM code handles inquiries beyond the end
of the map by silently returning zeroes, and it seems like we should
do the same thing here.

I ran into the assertion failure while using pg_visibility to check
pg_upgrade's behavior, and then noted the other problems while
reading the code.

Report: <29043.1475288648@sss.pgh.pa.us>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/9a109452da1b923e183f20fcf5516984d448ece9

Modified Files
--------------
contrib/pg_visibility/pg_visibility.c | 38 ++++++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 12 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix bugs in contrib/pg_visibility.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Do ClosePostmasterPorts() earlier in SubPostmasterMain().