pgsql: Fix crash in BRIN inclusion op functions, due to missing datum c

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix crash in BRIN inclusion op functions, due to missing datum c
Date: 2020-01-20 08:41:50
Message-ID: E1itSd4-00033M-9t@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

Fix crash in BRIN inclusion op functions, due to missing datum copy.

The BRIN add_value() and union() functions need to make a longer-lived
copy of the argument, if they want to store it in the BrinValues struct
also passed as argument. The functions for the "inclusion operator
classes" used with box, range and inet types didn't take into account
that the union helper function might return its argument as is, without
making a copy. Check for that case, and make a copy if necessary. That
case arises at least with the range_union() function, when one of the
arguments is an 'empty' range:

CREATE TABLE brintest (n numrange);
CREATE INDEX brinidx ON brintest USING brin (n);
INSERT INTO brintest VALUES ('empty');
INSERT INTO brintest VALUES (numrange(0, 2^1000::numeric));
INSERT INTO brintest VALUES ('(-1, 0)');

SELECT brin_desummarize_range('brinidx', 0);
SELECT brin_summarize_range('brinidx', 0);

Backpatch down to 9.5, where BRIN was introduced.

Discussion: https://www.postgresql.org/message-id/e6e1d6eb-0a67-36aa-e779-bcca59167c14%40iki.fi
Reviewed-by: Emre Hasegeli, Tom Lane, Alvaro Herrera

Branch
------
REL9_5_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/98f0d283774b68895bc41413d7dd9c19e5608231

Modified Files
--------------
src/backend/access/brin/brin_inclusion.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Andrew Dunstan 2020-01-20 09:00:34 Re: pgsql: Allow 'sslkey' and 'sslcert' in postgres_fdw user mappings
Previous Message Craig Ringer 2020-01-20 07:48:37 Re: pgsql: Allow 'sslkey' and 'sslcert' in postgres_fdw user mappings

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2020-01-20 08:43:53 Re: PATCH: standby crashed when replay block which truncated in standby but failed to truncate in master node
Previous Message Kyotaro Horiguchi 2020-01-20 08:24:07 Re: Remove page-read callback from XLogReaderState.