DEFAULT of domain ignored in plpgsql (8.4.1) - Mailing list pgsql-hackers

From Florian G. Pflug
Subject DEFAULT of domain ignored in plpgsql (8.4.1)
Date
Msg-id 4B05F992.2060001@phlo.org
Whole thread Raw
Responses Re: DEFAULT of domain ignored in plpgsql (8.4.1)
Re: DEFAULT of domain ignored in plpgsql (8.4.1)
List pgsql-hackers
Hi

It seems that pl/pgsql ignores the DEFAULT value of domains for local
variables. With the following definitions in place

create domain myint as int default 0;
create or replace function myint() returns myint as $body$
declare  v_result myint;
begin  return v_result;
end;
$body$ language plpgsql immutable;

issuing
select myint();
returns NULL, not 0 on postgres 8.4.1

If the line  v_result myint;
is changes to  v_result myint default 0;
than 0 is returned as expected.

I've tried to create a patch, but didn't see how I'd convert the result
from get_typedefault() (A Node*, presumeably the parsetree corresponding
to the default expression?) into a plan that I could store in a
PLpgSQL_expr. I guess I'd need something like SPI_prepare_plan that
takes a parse tree instead of a query string. Or am I on a completely
wrong track there?

While trying to cook up a patch I've also stumbled over what I perceive
as a bug relating to DOMAINS and column DEFAULTs. I'll write that up in
a second E-Mail to avoid confusion.

best regards,
Florian Pflug

pgsql-hackers by date:

Previous
From: Magnus Hagander
Date:
Subject: enable-thread-safety defaults?
Next
From: Josh Berkus
Date:
Subject: Re: Summary and Plan for Hot Standby