Hello 2009/10/31 Jeff Shanab <jsha...@earthlink.net>: > > The following bug has been logged online: > > Bug reference: 5154 > Logged by: Jeff Shanab > Email address: jsha...@earthlink.net > PostgreSQL version: 8.3.5 > Operating system: Linux > Description: ERROR: cannot assign non-composite value to a row > variable > Details: > > As discussed on the irc. I had a problem with a utility function that was > being passed a NEW row and a null for the OLD row. The error was created > when it tries to store the row variable in the local variables. RhodiumToad > on the list provided this simple test. > > create type foo1 as (a integer, b text); > CREATE TYPE > create type foo2 as (c integer, d foo1); > CREATE TYPE > > create function foo() returns foo2 language plpgsql as $f$ declare v foo2; > begin v := null; return v; end; $f$; > CREATE FUNCTION >
This isn't bug - it is just feature. ROW value cannot contain scalar value. If you would to like reset variable, use NULL row constant. BEGIN v := (NULL, NULL); -- it is equalent to NULL RAISE NOTICE 'IS IT NULL %', v IS NULL; RETURN NULL; END; Regards Pavel Stehule > select foo(); > > ERROR: cannot assign non-composite value to a row variable > > CONTEXT: PL/pgSQL function "foo" line 1 at assignment > > -- > Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-bugs > -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs