On Tue, Apr 24, 2018 at 6:19 AM, Amit Langote
<langote_amit...@lab.ntt.co.jp> wrote:
> Given what equalTupleDescs was invented for (commit a152ebeec), reducing
> it down to what can be sensibly used for checking whether tuple conversion
> is needed between a parent and child will, I'm afraid, make it useless for
> its original purpose.  Just looking at a few checks that are now in it,
> for example:
>
>     for (i = 0; i < tupdesc1->natts; i++)
>     {
>         Form_pg_attribute attr1 = TupleDescAttr(tupdesc1, i);
>         Form_pg_attribute attr2 = TupleDescAttr(tupdesc2, i);
>
>         <...snip...>
>
>         if (attr1->attislocal != attr2->attislocal)
>             return false;
>         if (attr1->attinhcount != attr2->attinhcount)
>             return false;
>         <...snip...>
>         /* attacl, attoptions and attfdwoptions are not even present... */
>     }
>
> attislocal and attinhcount obviously can't be same for parent and a child.
>  Also, the comment above seems to assume that this function is being
> called from the only place it was designed for (RelationClearRelation).

+1.  I think we're really abusing equalTupleDescs() for purposes for
which it was not invented.  Instead of changing it, let's invent a new
function that tests for the thing partitioning cares about (same
ordering of the same columns with the same type information) and call
it logicallyEqualTupleDescs() or something like that.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Reply via email to