BUG #14136: select distinct from a materialized view does not preserve result order

Поиск
Список
Период
Сортировка
От seandknutson@gmail.com
Тема BUG #14136: select distinct from a materialized view does not preserve result order
Дата
Msg-id 20160513214356.2842.6899@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #14136: select distinct from a materialized view does not preserve result order  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      14136
Logged by:          Sean
Email address:      seandknutson@gmail.com
PostgreSQL version: 9.5.0
Operating system:   Arch Linux
Description:

It seems that ordering is lost when doing a "select distinct" from a
materialized view.

Say I have a table called "test" that contains

 id | name
----+-------
  1 | steve
  2 | adam
  3 | jim
  4 | steve
  5 | adam
  6 | sean

and a materialized view defined as

create materialized view view_test as (select * from test order by name);

If I run

select distinct name from view_test;

I get

 name
-------
 steve
 adam
 sean
 jim

instead of

 name
-------
 adam
 jim
 sean
 steve

like I'd expect. If I have a non-materialized view with the same definition,
the query returns

 name
-------
 adam
 jim
 sean
 steve

as expected.

For simple cases, the workaround is relatively simple: just reapply the same
"order by" in the "select distinct.." query. E.g.

select distinct name from view_test order by name;

However, if the ordering defined in the mat view is complex, it may be
difficult to replicate, or even impossible (say if the order is based on a
column from a table that isn't included in the "select" part of the view
definition).

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

Предыдущее
От: Thomas Munro
Дата:
Сообщение: Re: BUG #14135: SQL command "analyse" is undocumented
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #14136: select distinct from a materialized view does not preserve result order