Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1ZDCXH-0002oF-Od for pgsql-sql@arkaria.postgresql.org; Thu, 09 Jul 2015 14:10:47 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1ZDCXG-0006cv-OA for pgsql-sql@arkaria.postgresql.org; Thu, 09 Jul 2015 14:10:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1ZDCXF-0006bZ-IG for pgsql-sql@postgresql.org; Thu, 09 Jul 2015 14:10:45 +0000 Received: from newmail.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by magus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1ZDCXB-0000Mz-WF for pgsql-sql@postgresql.org; Thu, 09 Jul 2015 14:10:44 +0000 Received: from [127.0.0.1] (unknown [192.168.27.1]) by mail.postgrespro.ru (Postfix) with ESMTPSA id 21E1421C23E9; Thu, 9 Jul 2015 17:10:40 +0300 (MSK) Message-ID: <559E80E0.8000002@postgrespro.ru> Date: Thu, 09 Jul 2015 17:10:40 +0300 From: Alex Ignatov User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: "David G. Johnston" CC: "pgsql-sql@postgresql.org" Subject: Re: Strange DOMAIN behavior References: <559E470F.6020002@postgrespro.ru> In-Reply-To: Content-Type: multipart/alternative; boundary="------------030109080309080509030600" X-Antivirus: avast! (VPS 150709-1, 09.07.2015), Outbound message X-Antivirus-Status: Clean X-Pg-Spam-Score: -2.2 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-sql Precedence: bulk Sender: pgsql-sql-owner@postgresql.org This is a multi-part message in MIME format. --------------030109080309080509030600 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thank you for your reply. In fact i want to use domains in the following case: DROP DOMAIN lexema_str CASCADE; CREATE DOMAIN lexema_str TEXT DEFAULT 'abc' NOT NULL; DROP TYPE lexema_test CASCADE; CREATE TYPE lexema_test AS ( lex lexema_str, lex2 BIGINT ); DROP TABLE ttt; CREATE TABLE ttt ( a lexema_test, b BIGINT ); INSERT INTO ttt (b) VALUES (1); SELECT * FROM ttt; a | b ---+--- | 1 (1 row) a.lex is null again not 'abc' as I expected like in plpgsql. All i want is to have default values in composite types. Feature that Oracle have. I thought that with domain type it should be possible. On 09.07.2015 15:49, David G. Johnston wrote: > On Thursday, July 9, 2015, Alex Ignatov > wrote: > > Hello everyone!!! > Got strange DOMAIN behavior in the following plpgsql code: > > But i expect that lex = abc! > > So default value of DOMAIN type is not set in pgplsql block but: > > Is this correct behavior?? > > > If you read the create domain sql command documentation carefully the > default clause is only used when inserting into a table that has a > column of the domain type that is not explicitly provided a value. > Each language deals with domains differently and the behavior you > expect is not currently implemented in pl/pgsql. If you want a > default inside the procedure you need to declare one explicitly. > > David J. -- Alex Ignatov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus --------------030109080309080509030600 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit Thank you for your reply.
In fact i want to use domains in the following case:

DROP DOMAIN lexema_str CASCADE;
CREATE DOMAIN lexema_str TEXT DEFAULT 'abc' NOT NULL;
DROP TYPE lexema_test CASCADE;
CREATE TYPE lexema_test AS (
   lex  lexema_str,
   lex2 BIGINT
);
DROP TABLE ttt;
CREATE TABLE ttt (
   a lexema_test,
   b BIGINT
);
INSERT INTO ttt (b) VALUES (1);
SELECT *
FROM ttt;
 a | b
---+---
   | 1
(1 row)

 a.lex is null  again not 'abc' as I expected like in plpgsql.

All i want is to have default values in composite types. Feature that Oracle have.
I thought that with domain type it should be possible.





On 09.07.2015 15:49, David G. Johnston wrote:
On Thursday, July 9, 2015, Alex Ignatov <a.ignatov@postgrespro.ru> wrote:
Hello everyone!!!
Got strange DOMAIN behavior in the following plpgsql code:

But i expect that lex = abc!

So default value of DOMAIN type is not set in pgplsql block but:

Is this correct behavior??


If you read the create domain sql command documentation carefully the default clause is only used when inserting into a table that has a column of the domain type that is not explicitly provided a value.  Each language deals with domains differently and the behavior you expect is not currently implemented in pl/pgsql.  If you want a default inside the procedure you need to declare one explicitly.

David J.

-- 
Alex Ignatov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company




Avast logo

This email has been checked for viruses by Avast antivirus software.
www.avast.com


--------------030109080309080509030600--