Re: BUG #18077: PostgreSQL server subprocess crashed by a SELECT statement with WITH clause

Andrei Lepikhov <a.lepikhov@postgrespro.ru>

From: "Lepikhov Andrei" <a.lepikhov@postgrespro.ru>
To: "Richard Guo" <guofenglinux@gmail.com>
Cc: "Tom Lane" <tgl@sss.pgh.pa.us>, fuboat@outlook.com, pgsql-bugs@lists.postgresql.org
Date: 2023-09-06T07:14:40Z
Lists: pgsql-bugs

On Wed, Sep 6, 2023, at 1:55 PM, Richard Guo wrote:
> On Wed, Sep 6, 2023 at 11:40 AM Lepikhov Andrei 
> <a.lepikhov@postgrespro.ru> wrote:
>> Hi,
>> 
>> I am writing here just because you change this specific part of code.
>> Designing a custom node I found the problem with CTE and Subqueries. The reproduction sample looks quite similar to yours:
>> 
>> create view tt24v as
>> with cte as materialized (select r from (values(1,2),(3,4)) r)
>> select (r).column2 as col_a, (rr).column2 as col_b from
>>   cte join (select rr from (values(1,7),(3,8)) rr limit 2) ss
>>   on (r).column1 = (rr).column1;
>> explain (verbose, costs off) select * from tt24v;
>> 
>> but fails with the error "failed to find plan for CTE ..." with a custom node over a JOIN. 
>
> The error message indicates that something must have gone wrong.  I
> don't know well enough about custom scan, but I cannot reproduce this
> error with your query.  Am I missing something?
Yeah, you should design cusom node to reproduce it. I can't publish my current code, but will try to invent a simple example.

-- 
Regards,
Andrei Lepikhov



Commits

  1. Track nesting depth correctly when drilling down into RECORD Vars.

  2. Fix get_expr_result_type() to find field names for RECORD Consts.

  3. Allow extracting fields from a ROW() expression in more cases.