On Jun 12, 2012, at 15:21, Dusan Misic <promi...@gmail.com> wrote: > Is this normal Postgres / psql behavior? > > griffindb=# \d system.user; > Table "system.user" > Column | Type | Modifiers > > -----------+-----------------------+-------------------------------------------- > -------- > username | character varying(20) | not null > password | character varying(32) | not null > firstname | character varying(40) | not null default 'nema ime'::character > vary > ing > lastname | character varying(40) | not null default 'nema > prezime'::character > varying > Indexes: > "SystemUser_PK" PRIMARY KEY, btree (username) CLUSTER > > normal query: > > griffindb=# select * from system.user where username = 'root'; > username | password | firstname | lastname > ----------+----------------------------------+-----------+--------------- > root | 1e7db545fccbf4e03abc6b71d329ab4f | Super | administrator > (1 row) > > error query: > > griffindb=# select * from system.user where user = 'root'; > username | password | firstname | lastname > ----------+----------+-----------+---------- > (0 rows) > > column user does not exist should throw an error! > > PostgreSQL / psql version: 9.1.3 on Windows 7 64-bit > > Should Postgres or psql report an error because column used in WHERE clause > does not exist?
http://www.postgresql.org/docs/9.0/interactive/functions-info.html "user" is actually a function the returns the current_user. It is an SQL special function and thus does not require the use of () after the function name. So basically you are saying "where current_user = 'root'" which is either a constant true or false for the statement. David J.