Thread: Is current_user a function ?
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)
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>
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
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