Re: 8.3 PLpgSQL Can't Compare Records?

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: 8.3 PLpgSQL Can't Compare Records?
Дата
Msg-id b42b73150907011145s7852a85aob70db7d212dcc0bd@mail.gmail.com
обсуждение исходный текст
Ответ на 8.3 PLpgSQL Can't Compare Records?  ("David E. Wheeler" <david@kineticode.com>)
Ответы Re: 8.3 PLpgSQL Can't Compare Records?  (Merlin Moncure <mmoncure@gmail.com>)
Список pgsql-hackers
On Wed, Jul 1, 2009 at 1:35 PM, David E. Wheeler<david@kineticode.com> wrote:
> This code:
>
>    CREATE OR REPLACE FUNCTION foo() returns boolean as $$
>    DECLARE
>        have_rec record;
>        want_rec record;
>    BEGIN
>        have_rec := row(1, 2);
>        want_rec := row(3, 5);
>        RETURN have_rec IS DISTINCT FROM want_rec;
>    END;
>    $$ language plpgsql;
>
>    SELECT ROW(1, 2) IS DISTINCT FROM ROW(3, 5);
>
>    SELECT foo();
>    DROP FUNCTION foo();
>
> Works as expected on 8.4, outputting:
>
>     ?column?
>    ----------
>     t
>    (1 row)
>
>    Time: 48.626 ms
>     foo
>    -----
>     t
>    (1 row)
>
> On 8.3, however, the row comparisons in the SQL statement works, but fails
> in the PL/pgSQL function, with this output:
>
>     ?column?
>    ----------
>     t
>    (1 row)
>
>    psql:huh.sql:14: ERROR:  operator does not exist: record = record
>    LINE 1: SELECT   $1  IS DISTINCT FROM  $2
>                         ^
>    HINT:  No operator matches the given name and argument type(s). You might
> need to add explicit type casts.
>    QUERY:  SELECT   $1  IS DISTINCT FROM  $2
>    CONTEXT:  PL/pgSQL function "foo" line 7 at RETURN
>
>
> Is this a known issue in 8.3? If so, is there a known workaround?
>

fyi: works in 8.4, as part of a broad fix of composite type comparison ops

merlin


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

Предыдущее
От: "Kevin Grittner"
Дата:
Сообщение: Re: 8.5 development schedule
Следующее
От: Merlin Moncure
Дата:
Сообщение: Re: 8.3 PLpgSQL Can't Compare Records?