Обсуждение: ERROR: domain domain1 does not allow null values

Поиск
Список
Период
Сортировка

ERROR: domain domain1 does not allow null values

От
"Igor V. Youdytsky"
Дата:
Hello.
I've found unexpected behavior of PostgreSQL 8.2.3

CREATE DOMAIN "public"."domain1" AS integer NOT NULL;

CREATE TABLE "public"."table1" ("field1" "public"."domain1") WITH OIDS;

CREATE OR REPLACE FUNCTION "public"."function1" () RETURNS text AS
$body$
declare
  a public.table1%ROWTYPE;
begin
  return 'test';
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Result:
ERROR:  domain domain1 does not allow null values
CONTEXT:  PL/pgSQL function "function1" line 3 at block variables
initialization

I think it is insane.
Any comments welcome...



Re: ERROR: domain domain1 does not allow null values

От
Richard Huxton
Дата:
Igor V. Youdytsky wrote:
> Hello.
> I've found unexpected behavior of PostgreSQL 8.2.3
>
> CREATE DOMAIN "public"."domain1" AS integer NOT NULL;
>
> CREATE TABLE "public"."table1" ("field1" "public"."domain1") WITH OIDS;

OK, so you can't have nulls in anything of type "domain1" and that's the
type of public.table1.field1

> CREATE OR REPLACE FUNCTION "public"."function1" () RETURNS text AS
> $body$
> declare
>   a public.table1%ROWTYPE;

> ERROR:  domain domain1 does not allow null values
> CONTEXT:  PL/pgSQL function "function1" line 3 at block variables
> initialization
>
> I think it is insane.
> Any comments welcome...

What should happen when you try to violate a NOT NULL constraint?
Or are you saying "a" should be initialised with some randomly valid values?

--
   Richard Huxton
   Archonet Ltd