Behaviour of rows containg not-null domains in plpgsql
От | Florian G. Pflug |
---|---|
Тема | Behaviour of rows containg not-null domains in plpgsql |
Дата | |
Msg-id | 47C19FFE.1030507@phlo.org обсуждение исходный текст |
Ответы |
Re: Behaviour of rows containg not-null domains in plpgsql
Re: Behaviour of rows containg not-null domains in plpgsql |
Список | pgsql-hackers |
Hi I just stumbled over the following behaviour, introduced with 8.3, and wondered if this is by design or an oversight. If you define a domain over some existing type, constrain it to non-null values, and use that domain as a field type in a table definition, it seems to be impossible to declare pl/pgsql variables of that table's row type. The problem seems to be that upon declaration, the row variable is filled with nulls - but since the domain is marked not-null, that immediatly triggers an exception. Here is an example CREATE DOMAIN d AS varchar NOT NULL; CREATE TABLE t (txt d); CREATE FUNCTION f() RETURNS VOID AS $$ DECLARE v_t t; BEGIN END; $$ LANGUAGE 'plpgsql' VOLATILE; SELECT f(); Note that the following works. CREATE TABLE t2 (txt varchar not null); CREATE FUNCTION f2() RETURNS VOID AS $$ DECLARE v_t t2; BEGIN END; $$ LANGUAGE 'plpgsql' VOLATILE; SELECT f2(); If you guys agree that this is a bug, I'll try to find a fix and send a patch. greetings, Florian Pflug
В списке pgsql-hackers по дате отправления: