Re: Bypassing cursors in postgres_fdw to enable parallel plans

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Rafia Sabih <rafia.pghackers@gmail.com>
Cc: KENAN YILMAZ <kenan.yilmaz@localus.com.tr>, Andy Fan <zhihuifan1213@163.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-07-06T18:19:25Z
Lists: pgsql-hackers
On Fri, Jul 3, 2026 at 8:51 AM Rafia Sabih <rafia.pghackers@gmail.com> wrote:
> On Thu, 2 Jul 2026 at 19:57, Robert Haas <robertmhaas@gmail.com> wrote:
>> On Mon, Jun 29, 2026 at 5:27 AM Rafia Sabih <rafia.pghackers@gmail.com> wrote:
>> > So, do you suggest we can have a backpointer of conn also in active_fsstate...?
>>
>> I think that fsstate and active_fsstate have to be pointing to the
>> same conn_state object. Do you think otherwise?
>>
> No, but I don't understand why you think they can be different in the current implementation.
> Currently, as per init_scan fsstate->conn_state->active_scan = fsstate, and it is never reassigned or anything.
> So they cannot have different conn_state.
> Am I missing something?

I don't think they can be different. I think you shouldn't be passing
both of them, because save_to_tuplestore() is buggy if it ever
references fsstate. If you only pass active_fsstate, then that can't
happen.

-- 
Robert Haas
EDB: http://www.enterprisedb.com