Re: BUG #17768: Assert triggered on initsplan.c

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: tharakan(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17768: Assert triggered on initsplan.c
Date: 2023-02-02 09:13:18
Message-ID: CAMbWs490BcsZqXF+foXiQ0zdw-FffZJA6+vBNYtJF0vkDyJ98g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Thu, Feb 2, 2023 at 3:34 PM PG Bug reporting form <noreply(at)postgresql(dot)org>
wrote:

> The following bug has been logged on the website:
>
> Bug reference: 17768
> Logged by: Robins Tharakan
> Email address: tharakan(at)gmail(dot)com
> PostgreSQL version: 15.1
> Operating system: Ubuntu 20.04
> Description:
>
> This assert() is not easily reproducible, but thought may be of interest.
> Can provide full backtrace, if required.
>
> Git: 253432f426(at)master
> OS: Ubuntu 20.04
>
> TRAP: failed Assert("j->jointype == JOIN_INNER"), File: "initsplan.c",
> Line:
> 1206, PID: 3285978

Thanks for the report! I can reproduce this issue with the following
query.

create table t1(a int);
create table t2(a int);
create table t3(a int);
create table t4(a int);
create table t5(a int);

select * from t1, lateral (select * from t2 inner join t3 on t1.a = 1 inner
join (t4 right join t5 on true) on true) as sub;

There is something wrong about postponing quals. We are supposed to
postpone quals only from children to their parent nodes. But here in
deconstruct_distribute we scan all the jointree nodes in depth-first
traversal order and any quals postponed by left children may be checked
against right children. If the right subtree is an outer join as in
this example, the assertion would be triggered.

Thanks
Richard

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2023-02-02 11:56:16 BUG #17769: Assert triggered in indxpath.c
Previous Message Kyotaro Horiguchi 2023-02-02 08:38:40 Re: BUG #17767: psql: tab-completion causes warnings when standard_conforming_strings = off