Re: coredump of 9.3.2

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Teodor Sigaev <teodor(at)sigaev(dot)ru>
Cc: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: coredump of 9.3.2
Date: 2013-12-10 19:13:13
Message-ID: 14219.1386702793@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Teodor Sigaev <teodor(at)sigaev(dot)ru> writes:
> SELECT
> *
> FROM
> t
> WHERE (
> CASE
> WHEN a%2 IN (SELECT c FROM tt) THEN a
> END IN (SELECT c FROM tt)
> );

> I suppose, the problem is connected to hashed subplan, but I'm not very familiar
> with executor. And this affects all supported versions of pgsql.

It seems to be a planner bug: it's doing the wrong thing with the
PARAM_SUBLINK Params for the nested IN SubLinks. (They don't look
to be nested textually, but they are, and convert_testexpr is
mistakenly replacing the inner one's Params when it should only
be replacing the outer one's Params.)

I think this has probably been broken since about 2005 :-(.
The comment on convert_testexpr claims it doesn't need to worry
about nested cases; which is true when it's called during
SS_process_sublinks, but not so much when it's called from
convert_ANY_sublink_to_join. Some digging in the git history
suggests that the latter call existed at the time, meaning the
comment was wrong even when written.

regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2013-12-10 19:16:23 Re: Errors on missing pg_subtrans/ files with 9.3
Previous Message Josh Berkus 2013-12-10 19:12:03 Re: Errors on missing pg_subtrans/ files with 9.3