Обсуждение: BUG #5910: Function pg_get_expr throwing error for non superuser
The following bug has been logged online: Bug reference: 5910 Logged by: tushar Email address: tushar.qa@gmail.com PostgreSQL version: 9.0.2 Operating system: RHEL-5 32 bit Description: Function pg_get_expr throwing error for non superuser Details: Pls refer this below scenario PG 8.4.4:- ========= connect to non superuser :- postgres=# \c - t psql (8.4.4) You are now connected to database "postgres" as user "t". postgres=> select pg_get_expr('a',null); pg_get_expr ------------- (1 row) postgres=> PG 9.0.2 ========= connect to non superuser :- postgres=# \c - t You are now connected to database "postgres" as user "t". postgres=> select pg_get_expr('a',null); ERROR: argument to pg_get_expr() must come from system catalogs postgres=> Workaround:- if user is superuser then it is working fine.. I found a thread somewhat related to this above issue :- http://archives.postgresql.org/pgsql-hackers/2010-07/msg00503.php which look fixed now in PG 9.0.2 e.g:- postgres=> SELECT pg_get_expr(proargdefaults, 'pg_catalog.pg_class'::regclass) FROM pg_proc pr LEFT OUTER JOIN pg_description des ON des.objoid=pr.oid limit 0; pg_get_expr ------------- (0 rows) postgres=> so i feel this query :-select pg_get_expr('a',null); should also work in PG 9.0.2 but it is not working. is this an expected behavior?
On 03.03.2011 10:59, tushar wrote: > Pls refer this below scenario > > PG 8.4.4:- > ========= > connect to non superuser :- > > postgres=# \c - t > psql (8.4.4) > You are now connected to database "postgres" as user "t". > postgres=> select pg_get_expr('a',null); > pg_get_expr > ------------- > > (1 row) It was an oversight that we allowed that previously, because the user can easily crash the backend by passing bogus values. Try 8.4.5 or later, and you will get the same error that you do on 9.0.2. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com