Possibly Incorrect Data Return

Started by PG Bug reporting formover 3 years ago3 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/15/tutorial-agg.html
Description:

Hello: I am working through the tutorial and the Doc page says the row count
is 5 but my results show 0 records. Of course, I may be doing something
wrong, too:

jwjwj=# SELECT city, max(temp_lo), count(*) FILTER (WHERE temp_lo < 30)
FROM weather
GROUP BY city
HAVING max(temp_lo) < 40;
city | max | count
---------+-----+-------
Hayward | 37 | 0
(1 row)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: Possibly Incorrect Data Return

PG Doc comments form <noreply@postgresql.org> writes:

Hello: I am working through the tutorial and the Doc page says the row count
is 5 but my results show 0 records. Of course, I may be doing something
wrong, too:

jwjwj=# SELECT city, max(temp_lo), count(*) FILTER (WHERE temp_lo < 30)
FROM weather
GROUP BY city
HAVING max(temp_lo) < 40;
city | max | count
---------+-----+-------
Hayward | 37 | 0
(1 row)

No, you're right, given the sample data shown earlier then count = 0
is what you would get. Somebody injected this FILTER example without
a lot of thought, it would appear, as not only does the output not
match but it's completely disjointed from the flow of explanation
(IMO anyway). This example originally introduced only HAVING, and
trying to make it do double duty just confuses things. A fully
separate example of FILTER would have served better.

I'll go do something about that --- thanks for the report!

regards, tom lane

#3Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#2)
Re: Possibly Incorrect Data Return

On Tue, Nov 8, 2022 at 05:22:24PM -0500, Tom Lane wrote:

PG Doc comments form <noreply@postgresql.org> writes:

Hello: I am working through the tutorial and the Doc page says the row count
is 5 but my results show 0 records. Of course, I may be doing something
wrong, too:

jwjwj=# SELECT city, max(temp_lo), count(*) FILTER (WHERE temp_lo < 30)
FROM weather
GROUP BY city
HAVING max(temp_lo) < 40;
city | max | count
---------+-----+-------
Hayward | 37 | 0
(1 row)

No, you're right, given the sample data shown earlier then count = 0
is what you would get. Somebody injected this FILTER example without
a lot of thought, it would appear, as not only does the output not
match but it's completely disjointed from the flow of explanation
(IMO anyway). This example originally introduced only HAVING, and
trying to make it do double duty just confuses things. A fully
separate example of FILTER would have served better.

I'll go do something about that --- thanks for the report!

Sorry, that was me, and I thought I checked it, but obviously
incorrectly, thanks.

--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com

Indecision is a decision. Inaction is an action. Mark Batterson