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