Should Aggregate Functions always return one row? - Mailing list pgsql-bugs

From wilhelm.pakulla@gmx.de
Subject Should Aggregate Functions always return one row?
Date
Msg-id 200401250133.18833.wilhelm.pakulla@gmx.de
Whole thread Raw
Responses Re: Should Aggregate Functions always return one row?
List 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 by date:

Previous
From: "PostgreSQL Bugs List"
Date:
Subject: BUG #1065: JDBC DataSource Serializability
Next
From: Tom Lane
Date:
Subject: Re: Should Aggregate Functions always return one row?