BUG #13790: last row of limit/offset result produces duplicates

Поиск
Список
Период
Сортировка
От pbelbin@gmail.com
Тема BUG #13790: last row of limit/offset result produces duplicates
Дата
Msg-id 20151202210220.5889.53393@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #13790: last row of limit/offset result produces duplicates  ("David G. Johnston" <david.g.johnston@gmail.com>)
Re: BUG #13790: last row of limit/offset result produces duplicates  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13790
Logged by:          Peter Belbin
Email address:      pbelbin@gmail.com
PostgreSQL version: 9.4.5
Operating system:   Mac
Description:

the following table:

CREATE TABLE demo1
(
  id serial NOT NULL,
  code character varying(20),
  match character varying(20),
  CONSTRAINT demo1_pk PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

populated with rows where many of the 'code' rows contain the same value,
and then queried with something like:

select * from proxy_homing order by code limit 10 offset 40

is returning the exact same result in the last row, regardless of the
offset.

here is some sample data:

insert into demo1 (code, match) values ('AAAA', '203' );
insert into demo1 (code, match) values ('BBBB', '204' );
insert into demo1 (code, match) values ('CCCC', '206' );
insert into demo1 (code, match) values ('DDDD', '207' );
insert into demo1 (code, match) values ('EEEE', '208' );
insert into demo1 (code, match) values ('FFFF', '212' );
insert into demo1 (code, match) values ('CHCG', '215' );
insert into demo1 (code, match) values ('CHCG', '216' );
insert into demo1 (code, match) values ('CHCG', '217' );
insert into demo1 (code, match) values ('CHCG', '218' );
insert into demo1 (code, match) values ('CHCG', '219' );
insert into demo1 (code, match) values ('CHCG', '224' );
insert into demo1 (code, match) values ('CHCG', '226' );
insert into demo1 (code, match) values ('CHCG', '231' );
insert into demo1 (code, match) values ('CHCG', '234' );
insert into demo1 (code, match) values ('CHCG', '240' );
insert into demo1 (code, match) values ('CHCG', '248' );
insert into demo1 (code, match) values ('CHCG', '250' );
insert into demo1 (code, match) values ('CHCG', '253' );
insert into demo1 (code, match) values ('CHCG', '260' );
insert into demo1 (code, match) values ('CHCG', '262' );
insert into demo1 (code, match) values ('CHCG', '267' );
insert into demo1 (code, match) values ('CHCG', '269' );
insert into demo1 (code, match) values ('CHCG', '270' );
insert into demo1 (code, match) values ('CHCG', '276' );
insert into demo1 (code, match) values ('CHCG', '289' );
insert into demo1 (code, match) values ('CHCG', '301' );
insert into demo1 (code, match) values ('CHCG', '302' );
insert into demo1 (code, match) values ('CHCG', '304' );
insert into demo1 (code, match) values ('CHCG', '306' );
insert into demo1 (code, match) values ('CHCG', '307' );
insert into demo1 (code, match) values ('CHCG', '308' );
insert into demo1 (code, match) values ('CHCG', '309' );
insert into demo1 (code, match) values ('CHCG', '312' );
insert into demo1 (code, match) values ('CHCG', '313' );
insert into demo1 (code, match) values ('CHCG', '314' );
insert into demo1 (code, match) values ('CHCG', '315' );
insert into demo1 (code, match) values ('CHCG', '317' );
insert into demo1 (code, match) values ('CHCG', '319' );
insert into demo1 (code, match) values ('CHCG', '320' );
insert into demo1 (code, match) values ('CHCG', '330' );
insert into demo1 (code, match) values ('CHCG', '331' );
insert into demo1 (code, match) values ('CHCG', '339' );
insert into demo1 (code, match) values ('CHCG', '347' );
insert into demo1 (code, match) values ('CHCG', '351' );
insert into demo1 (code, match) values ('CHCG', '360' );
insert into demo1 (code, match) values ('CHCG', '401' );

the last result row should not appear more than once in the output!  but it
does!

eg:

select * from demo1 order by code limit 5 offset 10

18;CHCG;240
19;CHCG;248
20;CHCG;250
14;CHCG;224
10;CHCG;216

and then:

select * from demo1 order by code limit 5 offset 20

28;CHCG;289
29;CHCG;301
30;CHCG;302
14;CHCG;224
10;CHCG;216


the last row of the two result sets above is the same row!

changing the sorting so that it includes the match column appears to avoid
the issue, but, this is a bug.  each row should only appear once if the
limit/offset values are looking at different portions of the result that
would be produced without the limit/offset options.

regards,
peter

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Paul Moore
Дата:
Сообщение: Re: BUG #13788: compile error in generic_msvc.h
Следующее
От: digoal@126.com
Дата:
Сообщение: BUG #13791: postgresql 9.5 beta2 brin bug (cann't auto update)