Assertion failure in new outer/semi/anti join code

Started by Bruce Momjianover 17 years ago2 messageshackers
Jump to latest
#1Bruce Momjian
bruce@momjian.us

The following query causes an assertion failure on CVS head:

SELECT * FROM (SELECT 1 AS i) AS a WHERE NOT EXISTS (SELECT 1 WHERE 1 <> i);

TRAP: FailedAssertion("!(!bms_is_empty(min_righthand))", File: "initsplan.c", Line: 685)

Looks like it's assuming there's at least one relation on each side of the
join. Incidentally originally triggered with a VALUES clause but I think by
the point the code runs that distinction is long gone.

--
Gregory Stark
EnterpriseDB http://www.enterprisedb.com
Ask me about EnterpriseDB's Slony Replication support!

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#1)
Re: Assertion failure in new outer/semi/anti join code

Gregory Stark <stark@enterprisedb.com> writes:

The following query causes an assertion failure on CVS head:

SELECT * FROM (SELECT 1 AS i) AS a WHERE NOT EXISTS (SELECT 1 WHERE 1 <> i);

Fixed, thanks for the report.

Looks like it's assuming there's at least one relation on each side of the
join.

Yeah. I don't think we can remove that assumption easily; best to just
not try to optimize this case.

regards, tom lane