On 2018/09/04 6:39, Alvaro Herrera wrote:
> I noticed this strange hack in RelationBuildPartitionDesc:
>
> /*
> * It is possible that the pg_class tuple of a partition has not been
> * updated yet to set its relpartbound field. The only case where
> * this happens is when we open the parent relation to check using its
> * partition descriptor that a new partition's bound does not overlap
> * some existing partition.
> */
> if (!((Form_pg_class) GETSTRUCT(tuple))->relispartition)
> {
> ReleaseSysCache(tuple);
> continue;
> }
>
> After looking, it seems that this is just self-inflicted pain: for some
> reason, we store the pg_inherits row for a partition, and immediately
> afterwards compute and store its partition bound, which requires the
> above hack. But if we do things in the opposite order, this is no
> longer needed. I propose to remove it, as in the attached patch.
+1. I remember having facepalmed at this before and had also written a
patch but never got around to submitting it.
Thanks,
Amit