Re: [BUGS] BUG #8676: Bug Money JSON - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: [BUGS] BUG #8676: Bug Money JSON
Date
Msg-id 52BDFDEA.3000304@dunslane.net
Whole thread Raw
In response to Re: [BUGS] BUG #8676: Bug Money JSON  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-hackers
On 12/26/2013 01:17 PM, Andrew Dunstan wrote:
>
> On 12/17/2013 11:16 AM, Andrew Dunstan wrote:
>>
>> On 12/17/2013 10:31 AM, Tom Lane wrote:
>>> Andrew Dunstan <andrew@dunslane.net> writes:
>>>>> On Wed, Dec 11, 2013 at 02:30:04PM +0000, 
>>>>> email@andersonloyola.com.br wrote:
>>>>>> postgres=# SELECT to_json(a) FROM (VALUES(1000::money)) a(salario);
>>>>>> to_json
>>>>>> -----------------------
>>>>>> {"salario":$1,000.00}
>>>>>> (1 row)
>>>> Yeah. I'll have a look. In fact this looks like it's possibly a couple
>>>> of bugs. The JSON produced by the first query is not valid. It looks
>>>> like we might need to force money to text unconditionally.
>>> Isn't this simply failure to quote the string properly?  What drives
>>> to_json's choice of whether to quote or not, anyway?
>>>
>>>
>>
>>
>> If it's numeric, it only quotes if it sees a non-numeric character, 
>> defined thus:
>>
>>    /* letters appearing in numeric output that aren't valid in a JSON
>>    number */
>>    #define NON_NUMERIC_LETTER "NnAaIiFfTtYy"
>>
>>
>> I forgot about money when I did that - some of this dates back to 9.2.
>>
>> I'm about to test the attached patch which should force money to be 
>> quoted always.
>>
>>
>
>
> This turned out to be not such a good idea. Quite apart from anything 
> else it doesn't handle domains over money at all well.
>
> The attached patch abandons the test described above, and instead 
> passes the string from the output function to the json number lexer to 
> see if it's a valid json number.  A small adjustment to the API of 
> that function was required to make it suitable for this use. This 
> seems like a much more robust approach.
>
>


Applied.

cheers

andrew




pgsql-hackers by date:

Previous
From: Kevin Grittner
Date:
Subject: Re: [BUG FIX] Version number expressed in octal form by mistake
Next
From: "MauMau"
Date:
Subject: Re: [bug fix] ECPG app crashes due to SIGBUS on SPARC Solaris