From 4af6e61a363246cf7fff3368a76603b0ce9945dd Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Wed, 13 May 2015 00:13:22 +0200 Subject: Fix ON CONFLICT bugs that manifest when used in rules. Specifically the tlist and rti of the pseudo "excluded" relation weren't properly treated by expression_tree_walker, which lead to errors when excluded was referenced inside a rule because the varnos where not properly adjusted. Similar omissions in OffsetVarNodes and expression_tree_mutator had less impact, but should obviously be fixed nonetheless. A couple tests of for ON CONFLICT UPDATE into INSERT rule bearing relations have been added. In passing I updated a couple comments. --- src/backend/executor/nodeModifyTable.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/backend/executor/nodeModifyTable.c') diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index aec41510946..89f1f57ae3d 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -1675,6 +1675,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags) ExecSetSlotDescriptor(mtstate->mt_existing, resultRelInfo->ri_RelationDesc->rd_att); + /* carried forward solely for the benefit of explain */ mtstate->mt_excludedtlist = node->exclRelTlist; /* create target slot for UPDATE SET projection */ -- cgit v1.2.3