On Sun, Apr 7, 2024 at 10:42 PM Tomas Vondra <tomas.von...@enterprisedb.com> wrote:
> create table t (a int, b int) with (fillfactor=10); > insert into t select mod((i/22),2), (i/22) from generate_series(0,1000) > S(i); > create index on t(a); > vacuum analyze t; > > set enable_indexonlyscan = off; > set enable_seqscan = off; > explain (analyze, verbose) select 1 from (values (1)) s(x) where exists > (select * from t where a = x); > > KABOOM! FWIW, it seems to me that this assert could be triggered in cases where, during a join, not all inner tuples need to be scanned before skipping to next outer tuple. This can happen for 'single_match' or anti-join. The query provided by Tomas is an example of 'single_match' case. Here is a query for anti-join that can also trigger this assert. explain (analyze, verbose) select t1.a from t t1 left join t t2 on t2.a = 1 where t2.a is null; server closed the connection unexpectedly Thanks Richard