Fix race condition in statext_store().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 31 Mar 2020 21:06:22 +0000 (17:06 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 31 Mar 2020 21:06:22 +0000 (17:06 -0400)
commitfe3036527a1ff715bceb22ff5cba919001262a71
tree7212e3ea0194214b7fe802c29b53f0437085216d
parent33cd0e5ea65d1fad0a579fa7ef0bab337246c231
Fix race condition in statext_store().

Must hold some lock on the pg_statistic_ext_data catalog *before*
we look up the tuple we aim to replace.  Otherwise a concurrent
VACUUM FULL or similar operation could move it to a different TID,
leaving us trying to replace the wrong tuple.

Back-patch to v12 where this got broken.

Credit goes to Dean Rasheed; I'm just doing the clerical work.

Discussion: https://postgr.es/m/CAEZATCU0zHMDiQV0g8P2U+YSP9C1idUPrn79DajsbonwkN0xvQ@mail.gmail.com
src/backend/statistics/extended_stats.c