Обсуждение: BUG #5910: Function pg_get_expr throwing error for non superuser

Поиск
Список
Период
Сортировка

BUG #5910: Function pg_get_expr throwing error for non superuser

От
"tushar"
Дата:
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?

Re: BUG #5910: Function pg_get_expr throwing error for non superuser

От
Heikki Linnakangas
Дата:
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