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  (Andrew Dunstan <andrew@dunslane.net>)
Re: Behaviour of rows containg not-null domains in plpgsql  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: "Pavel Stehule"
Дата:
Сообщение: idea: simple variadic functions in SQL and PL/pgSQL
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: Behaviour of rows containg not-null domains in plpgsql