Thanks a lot.
And how to understand below result?
postgres=# select current_database();
current_database
------------------
postgres
(1 row)
postgres=# select current_database;
ERROR: column "current_database" does not exist
LINE 1: select current_database;
------------------ Original ------------------
From: "Daniel Gustafsson" <daniel@yesql.se>;
Date: Mon, Mar 20, 2023 04:16 PM
To: "Pavel Stehule"<pavel.stehule@gmail.com>;
Cc: "Xiong He"<iihero@qq.com>;"pgsql-bugs"<pgsql-bugs@lists.postgresql.org>;
Subject: Re: About the function current_user
> On 20 Mar 2023, at 08:05, Pavel Stehule <pavel.stehule@gmail.com> wrote:
> po 20. 3. 2023 v 8:01 odesílatel Xiong He <iihero@qq.com <mailto:iihero@qq.com>> napsal:
> why current_user() is not recognized?
>
> this is not real function - it is pseudo constant
>
> The real function in postgres has a record in the pg_proc table.
The syntax of current_user and current_role are mandated by the SQL
specification, we have this note in the documentation:
"current_catalog, current_role, current_schema, current_user,
session_user, and user have special syntactic status in SQL: they must
be called without trailing parentheses. In PostgreSQL, parentheses can
optionally be used with current_schema, but not with the others."
Given that current_schema and other current_xx functions accept parenthesis
it's easy to understand the confusion though.
--
Daniel Gustafsson