El día 3 de mayo de 2013 08:43, Oswaldo <lis...@soft-com.es> escribió:
> Hola,
>
> Creo que he detectado un bug, pero antes de reportarlo os agradecería
> comprobaseis si la demostración es correcta y si también sucede en otras
> versiones de postgres. También desconozco si es un bug ya conocido.
>
[.....]

> Para reproducirlo ejecutar esta secuencia:
>
> begin;
>
> create domain t_dom as varchar default '' not null;
>
> create table test1 (id int, dom t_dom);
> create table test2 (id int, dom t_dom);
>
> insert into test2 (id) values (1);
> update test2 set dom = (select dom from test1 where test1.id = test2.id);
> select * from test2;

test1 no tiene filas, por lo tanto la consulta del sub-query  "select
dom from test1 where test1.id = test2.id" retornará 0 filas,
insertando un NULL.

Una de las cosas que debe saber cualquier desarrollador que trabaje
con SQL es tener MUCHO cuidado con los valores Nulos ya que a veces
son impredecibles.

> 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.

No. Con ese UPDATE, el valor debe ser NULL.

--
Martín Marqués
select 'martin.marques' || '@' || 'gmail.com'
DBA, Programador, Administrador

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

Responder a