Should Aggregate Functions always return one row?

Поиск
Список
Период
Сортировка
От wilhelm.pakulla@gmx.de
Тема Should Aggregate Functions always return one row?
Дата
Msg-id 200401250133.18833.wilhelm.pakulla@gmx.de
обсуждение исходный текст
Ответы Re: Should Aggregate Functions always return one row?
Список pgsql-bugs
Hello.

Is this a bug?

>linux=# SELECT * FROM test;
> x
>---
> 1
> 2
> 3
>(3 Rows)
>
>linux=# SELECT * FROM test WHERE FALSE;
> x
>---
>(0 Rows)
>
>phlegma=# SELECT max(x) FROM test WHERE FALSE;
> max
>-----
>
>(1 Rows)
>
>phlegma=#

So, if I use the max() aggregate, I receive one row with the value NULL. Is
that correct?

My background is the language plpgsql:

I expected to test for the existance of a maximum with
(...)
SELECT INTO e
  max( y ) AS x FROM (table) WHERE (condition);

IF NOT FOUND THEN RETURN; END IF;
(...)

But I have to test with:

(...)
SELECT INTO e
  max( y ) AS x FROM (table) WHERE (condition);

IF e.x IS NULL THEN RETURN; END IF;
(...)

Thanks in advance,
Wilhelm

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

Предыдущее
От: "PostgreSQL Bugs List"
Дата:
Сообщение: BUG #1065: JDBC DataSource Serializability
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Should Aggregate Functions always return one row?