Обсуждение: BUG #2839: after record with NULL field, query result is wrong

Поиск
Список
Период
Сортировка

BUG #2839: after record with NULL field, query result is wrong

От
"Vladimir"
Дата:
The following bug has been logged online:

Bug reference:      2839
Logged by:          Vladimir
Email address:      dvs@fon.kamchatka.ru
PostgreSQL version: 8.1.3
Operating system:   FreeBSD
Description:        after record with NULL field, query result is wrong
Details:

create table tst (a int[]);
insert into tst values ('{1}'); -- (1)
insert into tst values (null);
insert into tst values ('{2}'); -- (3)
select z.a from tst z where exists (select 1 from
(
select generate_series(1,1) as s,* from (select z.a as arr0) qq
) q
where (q.arr0[q.s] is null)  );
  a
-----

 {2}
(2 rows)

-- What difference between (1) and (3) records?
-- really, my query more complex (auto generated) and table has many
columns, wrong rows return after row where tested field is null

Re: BUG #2839: after record with NULL field, query result is wrong

От
Tom Lane
Дата:
"Vladimir" <dvs@fon.kamchatka.ru> writes:
> create table tst (a int[]);
> insert into tst values ('{1}'); -- (1)
> insert into tst values (null);
> insert into tst values ('{2}'); -- (3)
> select z.a from tst z where exists (select 1 from
> (
> select generate_series(1,1) as s,* from (select z.a as arr0) qq
> ) q
> where (q.arr0[q.s] is null)  );

Hmm, surprising this hasn't been found before, because the underlying
bug has been around for a long time :-(.  Fix committed --- thanks for
the report!

            regards, tom lane