Possible bug in PL/Python?

Поиск
Список
Период
Сортировка
От Jeroen van Dongen
Тема Possible bug in PL/Python?
Дата
Msg-id CAH-c8MpdK24oT8DFL=53kvYw0r1ZrRKyZUMUum7oGEegp0autw@mail.gmail.com
обсуждение исходный текст
Ответы Re: Possible bug in PL/Python?  (Adrian Klaver <adrian.klaver@gmail.com>)
Список pgsql-general
Hi,

In a current project I've a PL/Python function that uses default parameters, like this:

CREATE FUNCTION auth.create_user(
    email text, 
    initial_password text, 
    display_name text DEFAULT NULL,
    mobile_phone text DEFAULT NULL, 
    status auth.enum_user_status DEFAULT 'active'
) RETURNS text AS $$
... rest of function ...

Now I try to test if 'display_name' is actually passed or not, and if not set it to something sensible, like so:
...
    if display_name is None:
        display_name = email[:email.find('@')]
...

And ... that fails with an error stating that 'display_name' is referenced before assignment.
However, if I do it like this, it works:
...
if display_name is None:
        real_display_name = email[:email.find('@')]
...

In straight Python the first example works, however in PL/Python only the second works.

Is this how it is supposed to be and did I perhaps miss something in the docs, or is it a bug?

Kind regards,
Jeroen

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: PostgreSQL counterpart to DBMS_METADATA?
Следующее
От: shitake
Дата:
Сообщение: Re: Upgrade Postgres 8.4SS >> 9.1