Re: Postgres 13 signal 11: Segmentation fault tested on 2 independent machines - Mailing list pgsql-bugs
| From | Tom Lane |
|---|---|
| Subject | Re: Postgres 13 signal 11: Segmentation fault tested on 2 independent machines |
| Date | |
| Msg-id | 247080.1603065654@sss.pgh.pa.us Whole thread Raw |
| In response to | Re: Postgres 13 signal 11: Segmentation fault tested on 2 independent machines (pinker <pinker@onet.eu>) |
| Responses |
Re: Postgres 13 signal 11: Segmentation fault tested on 2 independent machines
|
| List | pgsql-bugs |
pinker <pinker@onet.eu> writes:
> cast to text those 2 columns helped:
> sut.schemaname::TEXT, sut.relname::TEXT
Yeah, I was just concluding that something is failing to handle
the required implicit coercions from name to text. Haven't found
where yet, though I'm betting 913bbd88d overlooked something.
For the archives' sake, attached is an actual reproduction script,
hopefully without the multiple whitespace problems in the previous
messages.
regards, tom lane
CREATE TABLE public.stat_user_tables (
now timestamp with time zone,
relid oid,
schemaname name,
relname name,
seq_scan bigint,
seq_tup_read bigint,
idx_scan bigint,
idx_tup_fetch bigint,
n_tup_ins bigint,
n_tup_upd bigint,
n_tup_del bigint,
n_tup_hot_upd bigint,
n_live_tup bigint,
n_dead_tup bigint,
n_mod_since_analyze bigint,
last_vacuum timestamp with time zone,
last_autovacuum timestamp with time zone,
last_analyze timestamp with time zone,
last_autoanalyze timestamp with time zone,
vacuum_count bigint,
autovacuum_count bigint,
analyze_count bigint,
autoanalyze_count bigint
);
CREATE TABLE public.table_sizes (
now timestamp with time zone,
oid oid,
table_schema name,
table_name name,
row_estimate real,
total_bytes bigint,
index_bytes bigint,
toast_bytes bigint,
table_bytes bigint,
total text,
index text,
toast text,
"table" text
);
COPY public.stat_user_tables (now, relid, schemaname, relname, seq_scan,
seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_upd, n_tup_del,
n_tup_hot_upd, n_live_tup, n_dead_tup, n_mod_since_analyze, last_vacuum,
last_autovacuum, last_analyze, last_autoanalyze, vacuum_count,
autovacuum_count, analyze_count, autoanalyze_count) FROM stdin;
2020-10-17 01:35:01.935309+02 16802 public promotion 311 7775 0 0 0 0 0 0 25 0
0 \N 2020-10-07 09:08:41.061339+02 2020-10-16 04:47:58.421258+02 \N 0 1 1 0
2020-10-17 01:35:01.935309+02 123040 public promotion 2 0 1 0 0 0 0 0 0 0 0
\N 2020-10-07 09:08:41.264478+02 2020-10-16 04:47:31.591375+02 \N 0 1 1 0
\.
COPY public.table_sizes (now, oid, table_schema, table_name, row_estimate,
total_bytes, index_bytes, toast_bytes, table_bytes, total, index, toast,
"table") FROM stdin;
2020-10-16 18:13:57.089157+02 123045 public promotion 1910 23142400 5496832 139264 17506304
22MB 5368 kB 136 kB 17 MB
2020-10-16 18:13:57.089157+02 16802 public promotion 25 57344 16384 \N 40960 56 kB 16 kB
\N 40 kB
\.
CREATE FUNCTION public.abs(interval) RETURNS interval
LANGUAGE sql IMMUTABLE
AS $_$ select case when ($1<interval '0') then -$1 else $1 end; $_$;
CREATE FUNCTION public.vacuum_dead_size(i_now timestamp with time zone, OUT
schemaname text, OUT relname text, OUT total_bytes numeric, OUT
dead_tup_size numeric) RETURNS SETOF record
LANGUAGE sql
AS $_$
WITH closest_metric_stat_user_tables AS (
SELECT now FROM stat_user_tables ORDER BY abs(now-$1) LIMIT 1
), closest_metric_table_sizes AS (
SELECT now FROM table_sizes ORDER BY abs(now - $1) LIMIT 1
)
SELECT sut.schemaname, sut.relname, ts.total_bytes, 1::numeric
FROM stat_user_tables sut
LEFT JOIN table_sizes ts ON ts.table_name = sut.relname AND
ts.table_schema = sut.schemaname
WHERE ts.now = (SELECT now FROM closest_metric_table_sizes) AND sut.now
= (SELECT now FROM closest_metric_stat_user_tables)
ORDER BY 1;
$_$;
SELECT * FROM vacuum_dead_size(now());
pgsql-bugs by date: