Re: [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116

From: Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>
To: Andreas Seltenreich <seltenreich(at)gmx(dot)de>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116
Date: 2016-06-07 06:06:40
Message-ID: 2fdf81b5-9148-b948-7743-379974689997@lab.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2016/06/05 23:01, Andreas Seltenreich wrote:
> Creating some foreign tables via postgres_fdw in the regression db of
> master as of de33af8, sqlsmith triggers the following assertion:
>
> TRAP: FailedAssertion("!(((((const Node*)(var))->type) == T_Var))", File: "deparse.c", Line: 1116)
>
> gdb says var is holding a T_PlaceHolderVar instead. In a build without
> assertions, it leads to an error later:
>
> ERROR: cache lookup failed for type 0
>
> Recipe:
>
> --8<---------------cut here---------------start------------->8---
> create extension postgres_fdw;
> create server myself foreign data wrapper postgres_fdw;
> create schema fdw_postgres;
> create user mapping for public server myself options (user :'USER');
> import foreign schema public from server myself into fdw_postgres;
> select subq_0.c0 as c0 from
> (select 31 as c0 from fdw_postgres.a as ref_0
> where 93 >= ref_0.aa) as subq_0
> right join fdw_postgres.rtest_vview5 as ref_1
> on (subq_0.c0 = ref_1.a )
> where 92 = subq_0.c0;
> --8<---------------cut here---------------end--------------->8---

Thanks for the example. It seems that postgres_fdw join-pushdown logic
(within foreign_join_ok()?) should reject a join if any PlaceHolderVars in
its targetlist are required above it. Tried to do that with the attached
patch which trivially fixes the reported assertion failure.

A guess from my reading of the patch's thread [1] is that to support such
a case, join deparse code should be able to construct subqueries which it
currently doesn't support. I may be missing something though.

Thanks,
Amit

[1]
https://www.postgresql.org/message-id/CAFjFpRdHgeNOhM0AB6Gxz1eVx_yOqkYwuKddZeB5vPzfBaeCnQ%40mail.gmail.com

Attachment Content-Type Size
pgfdw-join-pd-bug-1.patch text/x-diff 769 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2016-06-07 06:23:15 Re: [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116
Previous Message Amit Langote 2016-06-07 06:01:09 Re: Typos/Questions in bloom documentation