Re: Partitioning, Identity and Uniqueness (given pg 16 changes) - Mailing list pgsql-general

From David Rowley
Subject Re: Partitioning, Identity and Uniqueness (given pg 16 changes)
Date
Msg-id CAApHDvqb73oGdJF7z_Y3-YZxy-fHTbZecEe8v78WCA0Cy9uWfg@mail.gmail.com
Whole thread Raw
In response to Partitioning, Identity and Uniqueness (given pg 16 changes)  (Darryl Green <darryl.green@gmail.com>)
Responses Re: Partitioning, Identity and Uniqueness (given pg 16 changes)  (Ketan Popat <ketanpostgres@gmail.com>)
Re: Partitioning, Identity and Uniqueness (given pg 16 changes)  (Darryl Green <darryl.green@gmail.com>)
List pgsql-general
On Mon, 19 Feb 2024 at 16:32, Darryl Green <darryl.green@gmail.com> wrote:
> 2) It would be nice to be able to specify the id as pk on the table being partitioned (as it was in the
non-partitioneddefinition of the table) once to document and enforce that the partitions simply inherit the id pk. This
wouldseem only to need the "partition by" validation to allow a column not mentioned in partition by clause to be
definedas pk or unique if and only if the pk/unique column is an identity column. Not a big deal but is this
practical/valid?

Unfortunately, it's not as easy as you think. It's not a matter of
dropping the check that requires all PRIMARY KEY columns are present
in the PARTITION BY clause.  For this to work a *single* index (i.e.
non-partitioned index) would have to index all partitions.  Otherwise,
how would Postgres ensure that the value being inserted doesn't exist
in some other partition?

The problem with a single index is that it kinda defeats the purpose
of partitioning, i.e., "my table is large and I want to split it up".
Operations such as DETACH PARTITION would have to become more than
just a metadata operation when you consider having to trawl through
the index and remove all records belonging to a single partition.

It may be possible to still have it work by doing a speculative record
in the index for the target table then go and check all of the other
indexes before marking the speculative entry as valid. I think it
would be very tricky to make it work well, however.  Imagine how
expensive ATTACH PARTITION would be!  There are probably other race
conditions I've not thought about too. Likely, we'd get more
complaints about this being a terrible feature than we do due to the
fact that it's unsupported.

David



pgsql-general by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: Partitioning, Identity and Uniqueness (given pg 16 changes)
Next
From: Peter Eisentraut
Date:
Subject: Re: Partitioning, Identity and Uniqueness (given pg 16 changes)