Is current_user a function ?

Started by Masaru Sugawaraabout 23 years ago4 messages
#1Masaru Sugawara
rk73@sea.plala.or.jp

Hi,

As for some current_*** functions, "select current_user;" seems to
work, but "select current_user();" doesn't . Though current_user is
defined as one of functions, why does such an error occur ?

renew=# select current_user();
ERROR: parser: parse error at or near "(" at character 20

Regards,
Masaru Sugawara

renew=# \df
List of functions
Result data type | Schema | Name | Argument data types
---------------------+------------+-----------------------+-----------
...
name | pg_catalog | current_database |
name | pg_catalog | current_schema |
name[] | pg_catalog | current_schemas | boolean
text | pg_catalog | current_setting | text
name | pg_catalog | current_user |
...

renew=# select current_user();
ERROR: parser: parse error at or near "(" at character 20

renew=# select current_database();
current_database
------------------
renew
(1 row)

renew=# select current_schema();
current_schema
----------------
public
(1 row)

renew=# select current_schema(true);
current_schemas
---------------------
{pg_catalog,postgres,public}
(1 row)

renew=# select current_schema(false);
current_schemas
---------------------
{postgres,public}
(1 row)

renew=# select current_setting('search_path');
current_setting
-----------------
$user,public
(1 row)

#2Rod Taylor
rbt@rbt.ca
In reply to: Masaru Sugawara (#1)
Re: Is current_user a function ?

Force the system to use it as a function.

select "current_user"();

On Thu, 2002-11-28 at 11:31, Masaru Sugawara wrote:

Hi,

As for some current_*** functions, "select current_user;" seems to
work, but "select current_user();" doesn't . Though current_user is
defined as one of functions, why does such an error occur ?

renew=# select current_user();
ERROR: parser: parse error at or near "(" at character 20

Regards,
Masaru Sugawara

renew=# \df
List of functions
Result data type | Schema | Name | Argument data types
---------------------+------------+-----------------------+-----------
...
name | pg_catalog | current_database |
name | pg_catalog | current_schema |
name[] | pg_catalog | current_schemas | boolean
text | pg_catalog | current_setting | text
name | pg_catalog | current_user |
...

renew=# select current_user();
ERROR: parser: parse error at or near "(" at character 20

renew=# select current_database();
current_database
------------------
renew
(1 row)

renew=# select current_schema();
current_schema
----------------
public
(1 row)

renew=# select current_schema(true);
current_schemas
---------------------
{pg_catalog,postgres,public}
(1 row)

renew=# select current_schema(false);
current_schemas
---------------------
{postgres,public}
(1 row)

renew=# select current_setting('search_path');
current_setting
-----------------
$user,public
(1 row)

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
Rod Taylor <rbt@rbt.ca>

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Masaru Sugawara (#1)
Re: Is current_user a function ?

Masaru Sugawara <rk73@sea.plala.or.jp> writes:

As for some current_*** functions, "select current_user;" seems to
work, but "select current_user();" doesn't .

Complain to the SQL spec authors --- they mandated this peculiar keyword
syntax for what is really a function call.

regards, tom lane

#4Masaru Sugawara
rk73@sea.plala.or.jp
In reply to: Rod Taylor (#2)
Re: Is current_user a function ?

On 28 Nov 2002 11:34:49 -0500
Rod Taylor <rbt@rbt.ca> wrote:

Force the system to use it as a function.
select "current_user"();

On Thu, 28 Nov 2002 17:20:59 -0500
Tom Lane <tgl@sss.pgh.pa.us> wrote:

As for some current_*** functions, "select current_user;" seems to
work, but "select current_user();" doesn't .

Complain to the SQL spec authors --- they mandated this peculiar keyword
syntax for what is really a function call.

Since current_user() can be used in 7.2, I have thought it would work in 7.3 too.
I now understand it doesn't work any more -- as well, session_user(), user(),
current_date(), current_time(), current_timestamp() and etc.

Thank you, Rod and Tom.

Regards,
Masaru Sugawara