• Robert Haas's avatar
    Be more aggressive in avoiding tuple conversion. · 3838074f
    Robert Haas authored
    According to the comments in tupconvert.c, it's necessary to perform
    tuple conversion when either table has OIDs, and this was previously
    checked by ensuring that the tdtypeid value matched between the tables
    in question.  However, that's overly stringent: we have access to
    tdhasoid and can test directly whether OIDs are present, which lets us
    avoid conversion in cases where the type OIDs are different but the
    tuple descriptors are entirely the same (and neither has OIDs).  This
    is useful to the partitioning code, which can thereby avoid converting
    tuples when inserting into a partition whose columns appear in the
    same order as the parent columns, the normal case.  It's possible
    for the tuple routing code to avoid some additional overhead in this
    case as well, so do that, too.
    
    It's not clear whether it would be OK to skip this when both tables
    have OIDs: do callers count on this to build a new tuple (losing the
    previous OID) in such instances?  Until we figure it out, leave the
    behavior in that case alone.
    
    Amit Langote, reviewed by me.
    3838074f
tupconvert.c 11 KB