diff options
author | Robert Haas <rhaas@postgresql.org> | 2016-12-22 17:31:52 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2016-12-22 17:36:37 -0500 |
commit | 2ac3ef7a01df859c62d0a02333b646d65eaec5ff (patch) | |
tree | 850532b8c6aac27df50cff9c45a5873b4c0da743 /src/backend/executor/nodeRecursiveunion.c | |
parent | 12bd7dd317e8f4346fb3507578aca790ede6ebea (diff) | |
download | postgresql-2ac3ef7a01df859c62d0a02333b646d65eaec5ff.tar.gz postgresql-2ac3ef7a01df859c62d0a02333b646d65eaec5ff.zip |
Fix tuple routing in cases where tuple descriptors don't match.
The previous coding failed to work correctly when we have a
multi-level partitioned hierarchy where tables at successive levels
have different attribute numbers for the partition key attributes. To
fix, have each PartitionDispatch object store a standalone
TupleTableSlot initialized with the TupleDesc of the corresponding
partitioned table, along with a TupleConversionMap to map tuples from
the its parent's rowtype to own rowtype. After tuple routing chooses
a leaf partition, we must use the leaf partition's tuple descriptor,
not the root table's. To that end, a dedicated TupleTableSlot for
tuple routing is now allocated in EState.
Amit Langote
Diffstat (limited to 'src/backend/executor/nodeRecursiveunion.c')
0 files changed, 0 insertions, 0 deletions