diff options
author | Andres Freund <andres@anarazel.de> | 2015-05-13 00:13:22 +0200 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2015-05-13 00:13:22 +0200 |
commit | 4af6e61a363246cf7fff3368a76603b0ce9945dd (patch) | |
tree | 95812a969e049a62dedc89eb60c96304b81f5a5a /src/backend/executor/nodeModifyTable.c | |
parent | 5c7df74204e2fb9440b576518d40fcf3ac65c8ac (diff) | |
download | postgresql-4af6e61a363246cf7fff3368a76603b0ce9945dd.tar.gz postgresql-4af6e61a363246cf7fff3368a76603b0ce9945dd.zip |
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.
Diffstat (limited to 'src/backend/executor/nodeModifyTable.c')
-rw-r--r-- | src/backend/executor/nodeModifyTable.c | 1 |
1 files changed, 1 insertions, 0 deletions
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 */ |