Re: Posible Bug

From: Oswaldo <listas(at)soft-com(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Posible Bug
Date: 2013-05-03 16:10:13
Message-ID: 5183E165.7030604@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 03/05/2013 17:12, Jaime Casanova escribió:
> 2013/5/3 Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>:
>> Oswaldo escribió:
>>
>>>
>>> En el resultado final la columna 'dom' tiene un valor NULL cuando
>>> según las reglas definidas esto no deberia ser posible y se deberia
>>> haber producido una excepción.
>>
>> Hola, no tengo claro que esto sea un bug, pero como es un caso de borde,
>> siéntete libre de reportarlo y ver qué opinan los desarrolladores.
>>
>
> Saludos,
>
> El caso parece que ya es conocido, por ejemplo en
> http://www.postgresql.org/docs/9.2/static/sql-createdomain.html dice:
> """
> NOT NULL
>
> Values of this domain are normally prevented from being null. However,
> it is still possible for a domain with this constraint to take a null
> value if it is assigned a matching domain type that has become null,
> e.g. via a LEFT OUTER JOIN, or INSERT INTO tab (domcol) VALUES
> ((SELECT domcol FROM tab WHERE false)).
> """

Eso es exactamente lo que esta pasando.

También sucede si desde una funcion normal o trigger se intenta esto:

select into v_rec * from test2 where false;
update test2 set dom=v_rec.dom;

El declarar en el dominio explícitamente un check tampoco vale:

create domain t_dom as varchar default '' CONSTRAINT "dominio no nulo"
check (value is not null);

Da la impresión de que al provenir el valor de una columna del mismo
tipo se omiten los chequeos.

>
> Sin embargo, concuerdo en que debería reportarse para ver si eso
> conlleva a alguna resolución
>

Ok, lo reportaré. De momento seguiré el consejo de Álvaro y revisaré
todas las declaraciones de tablas agregándole el not null a las columnas
aunque ya esté definido en el dominio.

Gracias por vuestra ayuda.

--
Oswaldo

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2013-05-03 16:14:41 Re: Posible Bug
Previous Message Omar Beltrán Cano 2013-05-03 16:00:25 Re: Problema con consulta compleja