XX000: tuple concurrently deleted during DROP STATISTICS

From: Justin Pryzby <pryzby(at)telsasoft(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>
Subject: XX000: tuple concurrently deleted during DROP STATISTICS
Date: 2023-11-08 15:10:51
Message-ID: ZUuk-8CfbYeq6g_u@pryzbyj2023
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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.

(gdb) bt
#0 0x00000000009442a0 in pg_re_throw ()
#1 0x0000000000943504 in errfinish ()
#2 0x00000000004fcafe in simple_heap_delete ()
#3 0x0000000000639d3f in RemoveStatisticsDataById ()
#4 0x0000000000639d79 in RemoveStatisticsById ()
#5 0x000000000057a428 in deleteObjectsInList ()
#6 0x000000000057a8f0 in performMultipleDeletions ()
#7 0x000000000060b5ed in RemoveObjects ()
#8 0x00000000008099ce in ProcessUtilitySlow.isra.1 ()
#9 0x0000000000808c71 in standard_ProcessUtility ()
#10 0x00007efbfed7a508 in pgss_ProcessUtility () from /usr/pgsql-16/lib/pg_stat_statements.so
#11 0x000000000080745a in PortalRunUtility ()
#12 0x0000000000807579 in PortalRunMulti ()
#13 0x00000000008079dc in PortalRun ()
#14 0x0000000000803927 in exec_simple_query ()
#15 0x0000000000803f28 in PostgresMain ()
#16 0x000000000077bae6 in ServerLoop ()
#17 0x000000000077cbaa in PostmasterMain ()
#18 0x00000000004ba788 in main ()

--
Justin

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2023-11-08 15:19:51 Re: meson documentation build open issues
Previous Message Alexander Lakhin 2023-11-08 15:00:00 Re: Cleaning up array_in()