On Wed, 31 Jan 2007, Tom Lane wrote:
> Sergiy Vyshnevetskiy <serg@vostok.net> writes:
>> Not at all. What's "broken" is the idea of variable as a simple piece of
>> memory. It is correct for base types, but not for domains - they may have
>> non-empty constructors (in C++ terminology).
>
> That may be, but I'm unwilling to pay the overhead for *every* variable
> when most of them won't be domains. I'm inclined to extend PLpgSQL_type
> to include a domain indicator and only do it the hard way when we have to.
Why not add PLPGSQL_TTYPE_DOMAIN and rename PLPGSQL_TTYPE_SCALAR to
PLPGSQL_TTYPE_BASE? We only use PLPGSQL_TTYPE_SCALAR in _3_ places!
> [ looks at code... ] Actually, I think we already have the flag we
> need: look to see if the typinput function is strict.
All domains have domain_in as input function - it is NOT strict.
Anyway, as we assign a value to a domain variable we must check
constraints - that's the whole point of domains. Even when the value is
"null".
Hack attached. Any reasons not to call it a bugfix?