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:

Previous
From: pinker
Date:
Subject: Re: Postgres 13 signal 11: Segmentation fault tested on 2 independent machines
Next
From: Tom Lane
Date:
Subject: Re: Postgres 13 signal 11: Segmentation fault tested on 2 independent machines