Re: [HACKERS] Add support for tuple routing to foreign partitions
Amit Langote <langote_amit_f8@lab.ntt.co.jp>
From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>,
Stephen Frost <sfrost@snowman.net>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>,
Maksim Milyutin <milyutinma@gmail.com>,
Robert Haas <robertmhaas@gmail.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-03-20T06:57:34Z
Lists: pgsql-hackers
On 2018/03/19 20:25, Amit Langote wrote:
> That's all I have for now.
While testing this patch, I noticed a crash when performing EXPLAIN on
update of a partition tree containing foreign partitions. Crash occurs in
postgresEndForeignRouting() due to the following Assert failing:
Assert(fmstate != NULL);
It seems the problem is that ExecCleanupTupleRouting() invokes the
EndForeignRouting() function even if ri_PartitionIsValid is not set. So I
suppose we need this:
/*
- * If this is INSERT/UPDATE, allow any FDWs to shut down
+ * If this is INSERT/UPDATE, allow any FDWs to shut down if it has
+ * initialized tuple routing information at all.
*/
if (node &&
+ resultRelInfo->ri_PartitionIsValid &&
resultRelInfo->ri_FdwRoutine != NULL &&
resultRelInfo->ri_FdwRoutine->EndForeignRouting != NULL)
resultRelInfo->ri_FdwRoutine->EndForeignRouting(node->ps.state,
BTW,patch needs to be rebased because of two commits this morning:
6666ee49f [1] and ee0a1fc84 [2].
Thanks,
Amit
[1] https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=6666ee49f
[2] https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=ee0a1fc84
Commits
-
Allow insert and update tuple routing and COPY for foreign tables.
- 3d956d9562aa 11.0 landed
-
Refactor PgFdwModifyState creation/destruction into separate functions.
- 870d89608e5f 11.0 landed