Re: [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116
От | Amit Langote |
---|---|
Тема | Re: [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116 |
Дата | |
Msg-id | 2fdf81b5-9148-b948-7743-379974689997@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116 (Andreas Seltenreich <seltenreich@gmx.de>) |
Ответы |
Re: [sqlsmith] Failed assertion in postgres_fdw/deparse.c:1116
|
Список | 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
Вложения
В списке pgsql-hackers по дате отправления: