Re: XX000: tuple concurrently deleted during DROP STATISTICS
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Tomas Vondra <tomas.vondra@enterprisedb.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, pgsql-hackers@postgresql.org
Date: 2023-11-08T15:52:28Z
Lists: pgsql-hackers
Tomas Vondra <tomas.vondra@enterprisedb.com> writes: > On 11/8/23 16:10, Justin Pryzby wrote: >> I found this in our logs, and reproduced it under v11-v16. >> >> CREATE TABLE t(a int, b int); >> INSERT INTO t SELECT generate_series(1,999); >> CREATE STATISTICS t_stats ON a,b FROM t; >> >> while :; do psql postgres -qtxc "ANALYZE t"; done & >> while :; do psql postgres -qtxc "begin; DROP STATISTICS t_stats"; done & >> >> It's known that concurrent DDL can hit elog(). But in this case, >> there's only one DDL operation. > AFAICS this happens because store_statext (after ANALYZE builds the new > statistics) does this: Shouldn't DROP STATISTICS be taking a lock on the associated table that is strong enough to lock out ANALYZE? regards, tom lane
Commits
-
Lock table in DROP STATISTICS
- 4f8d3c5b5ade 12.18 landed
- 1e468ea4eace 13.14 landed
- 9dd50e92ed23 14.11 landed
- 0177fc773e3c 15.6 landed
- ee32b824dcc1 16.2 landed
- 28f84f72fbaf 17.0 landed