Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1emboU-0007kd-DO for pgsql-interfaces@arkaria.postgresql.org; Fri, 16 Feb 2018 08:56:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1emboT-0002hE-6m for pgsql-interfaces@arkaria.postgresql.org; Fri, 16 Feb 2018 08:56:13 +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_2) (envelope-from ) id 1emboT-0002ey-1i for pgsql-interfaces@lists.postgresql.org; Fri, 16 Feb 2018 08:56:13 +0000 Received: from mail231.strasbourg.4js.com ([92.103.31.231]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1emboP-0003rt-1y for pgsql-interfaces@lists.postgresql.org; Fri, 16 Feb 2018 08:56:12 +0000 Received: from [10.0.40.29] (orion.strasbourg.4js.com [10.0.40.29]) (authenticated bits=0) by mail231.strasbourg.4js.com (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w1G8u67k005558 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Fri, 16 Feb 2018 09:56:06 +0100 Subject: Re: Type scale returned by PQfmod() 65531 for time/timestamp output parameter? To: pgsql-interfaces@lists.postgresql.org References: <093e1214-7057-f80c-5c3c-74076b7bb555@4js.com> <7537.1518711940@sss.pgh.pa.us> From: Sebastien FLAESCH Organization: Four Js Development Tools Message-ID: Date: Fri, 16 Feb 2018 09:56:05 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <7537.1518711940@sss.pgh.pa.us> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.99.3 at mail231 X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail231.strasbourg.4js.com [10.10.0.1]); Fri, 16 Feb 2018 09:56:06 +0100 (CET) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 02/15/2018 05:25 PM, Tom Lane wrote: > Sebastien FLAESCH writes: >> When using a stored function returning output parameters defined with as time[(n)] >> or timestamp[(n)], PQfmod() always returns the same SCALE (65531/0xFFFB), no matter >> what time/timestamp precision is used. > > Your misunderstanding is in assuming that typmod decoration on function > parameters means anything. It doesn't; the function is effectively just > declared as taking or returning plain time or timestamp. > > Perhaps someday that will change, but it'd be a big task with a lot of > hard decisions to make. For instance, do we allow creation of both > f(time(2)) and f(time(4)), and if so what's the rule for choosing which > one to call? > > regards, tom lane > > Thanks for this quick answer Tom, I just wanted to make sure that this is expected. We can deal with this, by interpreting 65531/0xFFFB as a precision of 5 to match our needs. Would be nice however to have some clear documentation about PQfmod() interpretation... What means exactly 65531/0xFFFB? Unknown time/timestamp fraction of sec precision? Maybe the way stored function output parameters are returned could be reviewed? select * from proc240(101) Is it possible to cast() output parameters? I could not find information about using output parameters in: https://www.postgresql.org/docs/10/static/sql-syntax-calling-funcs.html Cheers, Seb