X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id D4C7C3A5292 for ; Mon, 22 Nov 2004 16:44:26 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 89766-04 for ; Mon, 22 Nov 2004 16:43:56 +0000 (GMT) Received: from smtp.tor.pathcom.com (smtp.tor.pathcom.com [209.250.128.26]) by svr1.postgresql.org (Postfix) with ESMTP id B80A83A52E3 for ; Mon, 22 Nov 2004 16:43:55 +0000 (GMT) Received: from sinope.axxent.ca (v44.wall.tor.axxent.ca [209.250.131.204]) by smtp.tor.pathcom.com (8.12.10/8.12.6) with ESMTP id iAMGhtYm020928 for ; Mon, 22 Nov 2004 11:43:55 -0500 Received: by sinope.inside.pathcom.com with Internet Mail Service (5.5.2653.19) id ; Mon, 22 Nov 2004 11:43:54 -0500 Message-ID: From: "Passynkov, Vadim" To: pgsql-sql@postgresql.org Subject: Missing SELECT INTO ... DEFAULT VALUES in plpgsql for composite t ypes Date: Mon, 22 Nov 2004 11:43:44 -0500 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.3 tagged_above=0.0 required=5.0 tests=UPPERCASE_25_50 X-Spam-Level: X-Archive-Number: 200411/232 X-Sequence-Number: 19551 Hi all Just self-explanatory code below -- var1 with default value. CREATE DOMAIN var1_type AS pg_catalog.text DEFAULT 'udp'::pg_catalog.text CONSTRAINT "var1_const" CHECK ( VALUE IS NOT NULL AND ( VALUE = 'tcp'::pg_catalog.text OR VALUE = 'udp'::pg_catalog.text ) ); -- var2 without default CREATE DOMAIN var2_type AS pg_catalog.int4 CONSTRAINT "var2_const" CHECK ( VALUE IS NOT NULL AND VALUE > 0 ); -- Let's create composite type foo CREATE TABLE foo ( var1 var1_type, var2 var2_type ); -- and let's create constructor for it CREATE OR REPLACE FUNCTION foo ( int4 ) RETURNS foo AS ' DECLARE this foo; BEGIN /* * I dont want hard coded default * value for this.var1 here * but SELECT INTO this DEFAULT VALUES not possible in plpgsql */ -- SELECT INTO this DEFAULT VALUES; this.var2 := $1; RETURN this; END; ' LANGUAGE 'plpgsql' IMMUTABLE STRICT; SELECT * from foo ( 2 ); var1 | var2 ------+------ | 2 (1 row) but I want var1 | var2 ------+------ udp | 2 (1 row) Is anybody know any solution for this? -- Vadim Passynkov