Re: Multiple primary key on partition table?

Amul Sul <sulamul@gmail.com>

From: amul sul <sulamul@gmail.com>
To: Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2018-09-18T05:49:44Z
Lists: pgsql-hackers

Attachments

On Mon, Sep 17, 2018 at 9:06 PM amul sul <sulamul@gmail.com> wrote:
>
> Nice catch Rajkumar.
>
> In index_check_primary_key(), relationHasPrimaryKey() called only for the an
> alter command but I think we need to call in this case as well, like this:
>
> diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
> index 7eb3e35166..c8714395fe 100644
> --- a/src/backend/catalog/index.c
> +++ b/src/backend/catalog/index.c
> @@ -223,7 +223,7 @@ index_check_primary_key(Relation heapRel,
>      * and CREATE INDEX doesn't have a way to say PRIMARY KEY, so it's no
>      * problem either.
>      */
> -   if (is_alter_table &&
> +   if ((is_alter_table || heapRel->rd_rel->relispartition) &&
>         relationHasPrimaryKey(heapRel))
>     {
>         ereport(ERROR,
>
> Thoughts?
>

Here is the complete patch proposes the aforesaid fix with regression test.

Regards,
Amul

Commits

  1. Fix duplicate primary keys in partitions