FOR PORTION OF assertion failure in ExecInitPartitionInfo()

Started by Peter Eisentraut4 days ago2 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

The following test case triggers an assertion failure in
ExecInitPartitionInfo():

CREATE TABLE temporal_partitioned_by_range (
id int4range,
valid_at daterange,
name text
) PARTITION BY RANGE (valid_at);

CREATE TABLE temporal_partitioned_early
PARTITION OF temporal_partitioned_by_range
FOR VALUES FROM (MINVALUE) TO ('[2000-06-01,)');
CREATE TABLE temporal_partitioned_late
PARTITION OF temporal_partitioned_by_range
FOR VALUES FROM ('[2000-06-01,)') TO (MAXVALUE);

INSERT INTO temporal_partitioned_by_range (id, valid_at, name)
VALUES ('[1,2)', daterange('2000-01-01', '2010-01-01'), 'one');

DELETE FROM temporal_partitioned_by_range
FOR PORTION OF valid_at FROM '2000-03-01' TO '2000-07-01'
WHERE valid_at < '[2000-06-01,)'::daterange
RETURNING id, valid_at, name;

It appears to work correctly with assertions disabled, so maybe just
some of the Assert()s in ExecInitPartitionInfo() need some updates?

#2Paul A Jungwirth
pj@illuminatedcomputing.com
In reply to: Peter Eisentraut (#1)
Re: FOR PORTION OF assertion failure in ExecInitPartitionInfo()

On Wed, Aug 19, 2026 at 10:26 PM Peter Eisentraut <peter@eisentraut.org> wrote:

The following test case triggers an assertion failure in
ExecInitPartitionInfo():

CREATE TABLE temporal_partitioned_by_range (
id int4range,
valid_at daterange,
name text
) PARTITION BY RANGE (valid_at);

CREATE TABLE temporal_partitioned_early
PARTITION OF temporal_partitioned_by_range
FOR VALUES FROM (MINVALUE) TO ('[2000-06-01,)');
CREATE TABLE temporal_partitioned_late
PARTITION OF temporal_partitioned_by_range
FOR VALUES FROM ('[2000-06-01,)') TO (MAXVALUE);

INSERT INTO temporal_partitioned_by_range (id, valid_at, name)
VALUES ('[1,2)', daterange('2000-01-01', '2010-01-01'), 'one');

DELETE FROM temporal_partitioned_by_range
FOR PORTION OF valid_at FROM '2000-03-01' TO '2000-07-01'
WHERE valid_at < '[2000-06-01,)'::daterange
RETURNING id, valid_at, name;

It appears to work correctly with assertions disabled, so maybe just
some of the Assert()s in ExecInitPartitionInfo() need some updates?

Thanks for catching this! I'm on a family backpacking trip, so the
earliest I'll be able to look closely is after the 30th.

Yours,

--
Paul ~{:-)
pj@illuminatedcomputing.com