Thread: Lower/upper-case consistency with function names

Lower/upper-case consistency with function names

From
Shay Rojansky
Date:
Hi all,

The PostgreSQL docs mostly show function names in lowercase (e.g. [1], [2]), which seems to be the PostgreSQL-idiomatic thing to do. However, some pages show functions in upper case, e.g. COALESCE/NULLIF/GREATEST/LEAST ([3]). Is there some difference between these which warrants the case difference, or just a case of docs inconsistency?

I ran into this while trying to make Entity Framework (.NET ORM) generate more idiomatic-looking SQL. If this is just an inconsistency, it's obviously not very important.

Thanks,

Shay

Re: Lower/upper-case consistency with function names

From
Julien Rouhaud
Date:
Hi,

On Sun, Jun 05, 2022 at 10:20:23AM +0200, Shay Rojansky wrote:
>
> The PostgreSQL docs mostly show function names in lowercase (e.g. [1],
> [2]), which seems to be the PostgreSQL-idiomatic thing to do. However, some
> pages show functions in upper case, e.g. COALESCE/NULLIF/GREATEST/LEAST
> ([3]). Is there some difference between these which warrants the case
> difference, or just a case of docs inconsistency?
>
> I ran into this while trying to make Entity Framework (.NET ORM) generate
> more idiomatic-looking SQL. If this is just an inconsistency, it's
> obviously not very important.

As mentioned in the doc in [3], COALESCE and all the others are actually not
functions (those are specific keywords handled in the parser):

> Although COALESCE, GREATEST, and LEAST are syntactically similar to
> functions, they are not ordinary functions, and thus cannot be used with
> explicit VARIADIC array arguments.

As the rest of the keywords, they're case insensitive but our convention is to
document them in uppercase.

> [3] https://www.postgresql.org/docs/current/functions-conditional.html



Re: Lower/upper-case consistency with function names

From
Shay Rojansky
Date:
On Sun, Jun 5, 2022 at 10:27 AM Julien Rouhaud <rjuju123@gmail.com> wrote:

> As mentioned in the doc in [3], COALESCE and all the others are actually not
functions (those are specific keywords handled in the parser):

Thanks. Yeah, I noticed that comment, but NULLIF which is also documented on that page isn't mentioned in that comment, but it's still shown in upper-case. It's maybe worth adding NULLIF to that comment.

I'm also not sure I'd consider real/not real distinction as something that's very relevant to the user, to the extent that it warrants a case difference... But that doesn't matter much.