postgresqlpostgresql-9.3sql-null

Postgres unassigned record, is there a way to test for null?


Is there some way to test an unassigned record for null? (Sorry, sqlfiddle doesn't like my DO block.) Thanks.

DO
$$
DECLARE
r record;
BEGIN

r := null;

if r is null    -- ERROR:  record "r" is not assigned yet
then
end if;

END
$$;

Solution

  • The error can be avoided by writing:

       select null into r;
    

    or alternatively:

       r:=row(null);
    

    such that r gets initialized with a tuple structure.

    Still, be aware that record variables are unintuitive in other of ways concerning NULLs, and more generally hard to work with outside of their base use case (cursor-style iterating).