• Robert Haas's avatar
    Fix tuple routing in cases where tuple descriptors don't match. · 2ac3ef7a
    Robert Haas authored
    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
    2ac3ef7a
execnodes.h 73.6 KB