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