Re: Declarative partitioning - another take - Mailing list pgsql-hackers

From Ashutosh Bapat
Subject Re: Declarative partitioning - another take
Date
Msg-id CAFjFpRfN1J0C7c_RhSiFJcmEOEwWfH+-kidHZ89kzWZJaqxyNg@mail.gmail.com
Whole thread
In response to Re: Declarative partitioning - another take  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Responses Re: Declarative partitioning - another take
List pgsql-hackers

> 2. A combination of constraints on the partitions should be applicable to
> the parent. We aren't doing that.

How about on seeing that a RELOPT_OTHER_MEMBER_REL is partitioned parent
table, we can have get_relation_constraints() include a constant false
clause in the list of constraints returned for
relation_excluded_by_constraints() to process so that it is not included
in the append result by way of constraint exclusion.  One more option is
to mark such rels dummy in set_rel_size().


I am not complaining about having parent relation there. For the people who are used to seeing the parent relation in the list of append relations, it may be awkward. But +1 if we can do that. If we can't do that, we should at least mark with an OR of all constraints on the partitions, so that constraint exclusion can exclude it if there are conditions incompatible with constraints. This is what would happen in inheritance case as well, if there are constraints on the parent. In the above example, the parent table would have constraints CHECK ((a >= 0 AND a < 250) OR (a >= 250 and a < 500) OR (a >= 500 or a < 600)). It will probably get excluded, if constraint exclusion is smart enough to understand ORing.
--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

pgsql-hackers by date:

Previous
From: Rushabh Lathia
Date:
Subject: Re: Surprising behaviour of \set AUTOCOMMIT ON
Next
From: Michael Banck
Date:
Subject: Re: Exclude schema during pg_restore