8.3 PLpgSQL Can't Compare Records?
От | David E. Wheeler |
---|---|
Тема | 8.3 PLpgSQL Can't Compare Records? |
Дата | |
Msg-id | 87842292-834B-4CF4-B56B-88EB4A30F7E4@kineticode.com обсуждение исходный текст |
Ответы |
Re: 8.3 PLpgSQL Can't Compare Records?
Re: 8.3 PLpgSQL Can't Compare Records? |
Список | pgsql-hackers |
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? Thanks, David
В списке pgsql-hackers по дате отправления: