Re: PG11 Particionamiento y PKs

From: Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>
To: Stephen Amell <StephenAmell(at)inbox(dot)lv>
Cc: "pgsql-es-ayuda(at)lists(dot)postgresql(dot)org" <pgsql-es-ayuda(at)lists(dot)postgresql(dot)org>
Subject: Re: PG11 Particionamiento y PKs
Date: 2018-12-21 13:17:52
Message-ID: CAJGNTeOEJ2LrG=8wy6emBWMZcusZKFXzXGx6iYE7-w-_nkMpvg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, 20 Dec 2018 at 09:08, Stephen Amell <StephenAmell(at)inbox(dot)lv> wrote:
>
> Hola Lista!
>
> Como andan?
>
> Hoy les escribo porque tengo un problema con el nuevo particionamiento
> de postgres 11, el objetivo es conservar la PK de una tabla
> particionando por fecha.
>
> En un prototipo cree una tabla, copiando la idea de la original:
>
> CREATE TABLE public.daf
> (
> id serial NOT NULL,
> fecha timestamp without time zone,
> testo character varying(100),
> PRIMARY KEY (id) ---> le digo que pk quiero
> ) partition by range ( fecha ); ---> y por que quiero particionar
>
> No le gusta, ya lo veía venir por lo visto en la docu:
>
> ERROR: insufficient columns in PRIMARY KEY constraint definition
> DETAIL: PRIMARY KEY constraint on table "daf" lacks column "fecha"
> which is part of the partition key.
> SQL state: 0A000
>
[...]
>
> Hasta acá, todo esperado, tengo dos id 5 para dos fechas distintas, pero
> me mata no poder conservar la pk que necesito que es solo el campo ID.
>

Esto es un problema en 10, pero no en 11. La definición correcta de la tabla es:

CREATE TABLE public.daf
(
id serial NOT NULL,
fecha timestamp without time zone,
testo character varying(100),
PRIMARY KEY (id) INCLUDE (fecha)
) partition by range ( fecha );

El include hace que el índice tenga el valor de fecha por lo que el
sistema de particionamiento no molesta pero al no ser parte del índice
la unicidad se verifica solo sobre id.

--
Jaime Casanova www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2018-12-21 13:36:06 Re: PG11 Particionamiento y PKs
Previous Message Kernel 2018-12-21 07:47:38 cambio de nombre de tag _x005F