COALESCE could use some better examples

Started by PG Bug reporting formover 3 years ago2 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/functions-conditional.html
Description:

Regarding:
https://www.postgresql.org/docs/current/functions-conditional.html

I ran into a situation where COALESCE was used like this

```
SELECT * FROM table WHERE COALESCE(col_1, col_2, col_3) >= 5
```

and didn't understand how it worked, and the examples don't really help
because they only use COALESCE like

```
SELECT COALESCE(..)
```

I asked and answered a question on stackoverflow with a pretty good example
of this, you could consider adding to your page.

Thank you :))

Stackoverflow question link:
https://stackoverflow.com/questions/74057319/coalesce-in-postgresql-conditional-displaying-seemingly-undocumented-behavior

#2Bruce Momjian
bruce@momjian.us
In reply to: PG Bug reporting form (#1)
Re: COALESCE could use some better examples

On Thu, Oct 13, 2022 at 02:28:23PM +0000, PG Doc comments form wrote:

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/15/functions-conditional.html
Description:

Regarding:
https://www.postgresql.org/docs/current/functions-conditional.html

I ran into a situation where COALESCE was used like this

```
SELECT * FROM table WHERE COALESCE(col_1, col_2, col_3) >= 5
```

and didn't understand how it worked, and the examples don't really help
because they only use COALESCE like

```
SELECT COALESCE(..)
```

I asked and answered a question on stackoverflow with a pretty good example
of this, you could consider adding to your page.

Thank you :))

Stackoverflow question link:
https://stackoverflow.com/questions/74057319/coalesce-in-postgresql-conditional-displaying-seemingly-undocumented-behavior

I read the Stackoverflow thread and it seems you thought a column name
in the function in a WHERE clause should span all the rows looking for
the first non-NULL row, and only if they are all NULL, go to th next
parameter. All WHERE functions are row-based so I don't see how to
actually improve our doc text without making it more confusing. Sorry.

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

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