Thread: Is current_user a function ?

Is current_user a function ?

From
Masaru Sugawara
Date:
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      | booleantext                | pg_catalog | current_setting       | textname                |
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)








Re: Is current_user a function ?

From
Rod Taylor
Date:
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>



Re: Is current_user a function ?

From
Tom Lane
Date:
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


Re: Is current_user a function ?

From
Masaru Sugawara
Date:
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