Thread: Fwd: [TESTERS] [TEST REPORT] 9.1Alpha3 Feature E.1.4.7.2 in release notes.

Fwd: [TESTERS] [TEST REPORT] 9.1Alpha3 Feature E.1.4.7.2 in release notes.

From
Itagaki Takahiro
Date:
It was reported from a tester that we don't have casts of money from/to integer
types even though we have from/to numeric type.

http://archives.postgresql.org/pgsql-testers/2011-01/msg00000.php

Did we have any discussions about the behavior?
I think we should have them for consistency.

---------- Forwarded message ----------
From: Itagaki Takahiro <itagaki.takahiro@gmail.com>
Date: Fri, Jan 7, 2011 at 16:34
Subject: Re: [TESTERS] [TEST REPORT] 9.1Alpha3 Feature E.1.4.7.2 in
release notes.
To: Ramanujam <innomotive@gmail.com>
Cc: pgsql-testers@postgresql.org

On Fri, Jan 7, 2011 at 15:54, Ramanujam <innomotive@gmail.com> wrote:
> [Release]: 9.1Alpha3. Binaries compiled with mingw-32 (gcc 4.4.0) on
> i686 without zlib support.

> [Test]: a) Check feature E.1.4.7.2 in 9.1Alpha3 release notes
> (Monetary data type). b) Documentation mistake(?)
>
> [Results]: Documentation states that integer literals are allowed
> values for input. I am getting the following error:

The docs is:
http://developer.postgresql.org/pgdocs/postgres/datatype-money.html
| Input is accepted in a variety of formats,
| including integer and floating-point literals

The reported issue doesn't depend on lc_monetary.
It comes from missing cast support from integer to money.

Should we have cast to/from integer to numeric?  It is inconsistent
that 1::numeric::money is accepted but 1::money is not.


postgres=# SHOW lc_monetary;
 lc_monetary
-------------
 C
(1 row)

postgres=# SELECT 1::numeric::money;
 money
-------
 $1.00
(1 row)

postgres=# SELECT 1::integer::money;
ERROR:  cannot cast type integer to money
LINE 1: SELECT 1::integer::money;
                        ^
postgres=# SELECT castsource::regtype, casttarget::regtype,
castfunc::regproc, castcontext FROM pg_cast WHERE casttarget =
'money'::regtype;
 castsource | casttarget | castfunc | castcontext
------------+------------+----------+-------------
 numeric    | money      | money    | a
(1 row)

postgres=# \df money
                         List of functions
  Schema   | Name  | Result data type | Argument data types |  Type
------------+-------+------------------+---------------------+--------
 pg_catalog | money | money            | numeric             | normal
(1 row)

--
Itagaki Takahiro


Itagaki Takahiro <itagaki.takahiro@gmail.com> writes:
> It was reported from a tester that we don't have casts of money from/to integer
> types even though we have from/to numeric type.

In most locales, the idea isn't sensible.
        regards, tom lane


Re: Fwd: [TESTERS] [TEST REPORT] 9.1Alpha3 Feature E.1.4.7.2 in release notes.

From
Itagaki Takahiro
Date:
On Tue, Jan 11, 2011 at 11:10, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Itagaki Takahiro <itagaki.takahiro@gmail.com> writes:
>> It was reported from a tester that we don't have casts of money from/to integer
>> types even though we have from/to numeric type.
>
> In most locales, the idea isn't sensible.

The documentation says:
| Input is accepted in a variety of formats,
| including integer and floating-point literals

If we won't to add accept integers for money, we should fix the docs.
| integer and floating-point string literals
|                            ~~~~~~~~~~~~~~~
Will it get better?

-- 
Itagaki Takahiro


Re: Fwd: [TESTERS] [TEST REPORT] 9.1Alpha3 Feature E.1.4.7.2 in release notes.

From
Peter Eisentraut
Date:
On tis, 2011-01-11 at 12:30 +0900, Itagaki Takahiro wrote:
> On Tue, Jan 11, 2011 at 11:10, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > Itagaki Takahiro <itagaki.takahiro@gmail.com> writes:
> >> It was reported from a tester that we don't have casts of money from/to integer
> >> types even though we have from/to numeric type.
> >
> > In most locales, the idea isn't sensible.
> 
> The documentation says:
> | Input is accepted in a variety of formats,
> | including integer and floating-point literals
> 
> If we won't to add accept integers for money, we should fix the docs.
> | integer and floating-point string literals
> |                            ~~~~~~~~~~~~~~~
> Will it get better?

I think adding a cast from integer to money is probably quite
reasonable.  The other way around, maybe not, or only an explicit cast.



Peter Eisentraut <peter_e@gmx.net> writes:
> On tis, 2011-01-11 at 12:30 +0900, Itagaki Takahiro wrote:
>> If we won't to add accept integers for money, we should fix the docs.
>> | integer and floating-point string literals
>> |                            ~~~~~~~~~~~~~~~
>> Will it get better?

> I think adding a cast from integer to money is probably quite
> reasonable.  The other way around, maybe not, or only an explicit cast.

As near as I can tell, this entire thread started because someone
thought that the reference to "numeric" in the release notes implied
"any numerical type", not "the type named numeric".  We explicitly
rejected the idea of providing direct casts to/from floating point
types, on the grounds of not wanting any roundoff error; so I don't
think this is a point that should be revisited.  Perhaps it would be
sufficient to clarify the release-note item.
        regards, tom lane


Re: Fwd: [TESTERS] [TEST REPORT] 9.1Alpha3 Feature E.1.4.7.2 in release notes.

From
Peter Eisentraut
Date:
On tis, 2011-01-11 at 11:03 -0500, Tom Lane wrote:
> We explicitly
> rejected the idea of providing direct casts to/from floating point
> types, on the grounds of not wanting any roundoff error; so I don't
> think this is a point that should be revisited.

We also explicitly chose floating point as the result of the money/money
operator over numeric.  Seems a bit inconsistent.