diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2022-11-29 09:39:36 +0100 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2022-11-29 09:39:36 +0100 |
commit | ad86d159b6ab90b195b06fb5c7b593900a7f9cd8 (patch) | |
tree | acea26f7f4dd2c3bfd2e17dea81d3bc616926594 /src/backend/executor/execPartition.c | |
parent | 00ae5d6f588e9d21fa4f4d267811f3f602fe45af (diff) |
Add 'missing_ok' argument to build_attrmap_by_name
When it's given as true, return a 0 in the position of the missing
column rather than raising an error.
This is currently unused, but it allows us to reimplement column
permission checking in a subsequent commit. It seems worth breaking
into a separate commit because it affects unrelated code.
Author: Amit Langote <amitlangote09@gmail.com>
Discussion: https://postgr.es/m/CA+HiwqFfiai=qBxPDTjaio_ZcaqUKh+FC=prESrB8ogZgFNNNQ@mail.gmail.com
Diffstat (limited to 'src/backend/executor/execPartition.c')
-rw-r--r-- | src/backend/executor/execPartition.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c index 262cabd9403..e85f9b8f5a0 100644 --- a/src/backend/executor/execPartition.c +++ b/src/backend/executor/execPartition.c @@ -582,7 +582,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate, */ part_attmap = build_attrmap_by_name(RelationGetDescr(partrel), - RelationGetDescr(firstResultRel)); + RelationGetDescr(firstResultRel), + false); wcoList = (List *) map_variable_attnos((Node *) wcoList, firstVarno, 0, @@ -639,7 +640,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate, if (part_attmap == NULL) part_attmap = build_attrmap_by_name(RelationGetDescr(partrel), - RelationGetDescr(firstResultRel)); + RelationGetDescr(firstResultRel), + false); returningList = (List *) map_variable_attnos((Node *) returningList, firstVarno, 0, @@ -780,7 +782,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate, if (part_attmap == NULL) part_attmap = build_attrmap_by_name(RelationGetDescr(partrel), - RelationGetDescr(firstResultRel)); + RelationGetDescr(firstResultRel), + false); onconflset = (List *) map_variable_attnos((Node *) onconflset, INNER_VAR, 0, @@ -878,7 +881,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate, if (part_attmap == NULL) part_attmap = build_attrmap_by_name(RelationGetDescr(partrel), - RelationGetDescr(firstResultRel)); + RelationGetDescr(firstResultRel), + false); if (unlikely(!leaf_part_rri->ri_projectNewInfoValid)) ExecInitMergeTupleSlots(mtstate, leaf_part_rri); @@ -1147,7 +1151,8 @@ ExecInitPartitionDispatchInfo(EState *estate, * routing. */ pd->tupmap = build_attrmap_by_name_if_req(RelationGetDescr(parent_pd->reldesc), - tupdesc); + tupdesc, + false); pd->tupslot = pd->tupmap ? MakeSingleTupleTableSlot(tupdesc, &TTSOpsVirtual) : NULL; } |