On Fri, 21 Dec 2018 at 08:17, Jaime Casanova
<jaime.casan...@2ndquadrant.com> wrote:
>
> On Thu, 20 Dec 2018 at 09:08, Stephen Amell <stephenam...@inbox.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.
>

mmm... de hecho al hacer pruebas más completas, veo que es un bug que
acepte ese índice para particionar.
por qué puedo hacer que el id se repita en distintas particiones

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

Reply via email to