Re: PERFORM bug with FOUND?

Поиск
Список
Период
Сортировка
От david@fetter.org (David Fetter)
Тема Re: PERFORM bug with FOUND?
Дата
Msg-id rOmdnXOzgPaqjiKiXTWc-g@speakeasy.net
обсуждение исходный текст
Ответ на PERFORM bug with FOUND?  (david@fetter.org (David Fetter))
Список pgsql-bugs
Tom Lane <tgl@sss.pgh.pa.us> wrote:
> david@fetter.org (David Fetter) writes:
>> I've written a little hack, here included, which is supposed to find
>> whether a user is in a group.  I'd intended to do a PERFORM instead of
>> SELECT INTO, but PERFORM appears to set FOUND to true no matter what.
>
> What version are you using?  It seems to work per spec in 7.4.
>
> regression=# create function foo(name) returns bool as '
> regression'# begin
> regression'# perform * from pg_user where usename = $1;
> regression'# return found;
> regression'# end' language plpgsql;
> CREATE FUNCTION
> regression=# select foo('postgres');
> foo
> -----
> t
> (1 row)
>
> regression=# select foo('not');
> foo
> -----
> f
> (1 row)
>
> regression=#
>
>                        regards, tom lane

Tom,

Thanks for staying on top of this.  This was 7.4 on Linux i686,
compiling from source with just the defaults except port.  Here's a
working version.

CREATE OR REPLACE FUNCTION in_group (text, text) RETURNS BOOLEAN AS '
BEGIN
    PERFORM u.usename
    FROM
      pg_user u
    , pg_group g
    WHERE
        u.usename = $1
    AND g.groname = $2
    AND u.usesysid = ANY (g.grolist);

    RETURN FOUND;
END;
' LANGUAGE 'plpgsql' STRICT IMMUTABLE;

BTW, I'd like to lobby for an example in the docs of how to do a
PERFORM instead of a SELECT, 'cause that syntax wasn't right away
obvious.

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100    cell: +1 415 235 3778

All for ourselves, and nothing for other people, seems, in every age
of the world, to have been the vile maxim of the masters of mankind.
                                                    Adam Smith,
      An Inquiry Into the Nature and Causes of the Wealth of Nations

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Craig Boston
Дата:
Сообщение: PATCH: Uninitialized variable usage in contrib/pg_autovacuum
Следующее
От: Troels Arvin
Дата:
Сообщение: Re: 7.4: CHAR padding inconsistency