Re: BUG #10922: row_to_json creates invalid JSON for currecy lower then 1000.

Lists: pgsql-bugs
From: karel(dot)knezourek(at)gmail(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #10922: row_to_json creates invalid JSON for currecy lower then 1000.
Date: 2014-07-11 04:06:53
Message-ID: 20140711040653.2776.16311@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 10922
Logged by: Karel Knezourek
Email address: karel(dot)knezourek(at)gmail(dot)com
PostgreSQL version: 9.4beta1
Operating system: linux
Description:

select version();
--"PostgreSQL 9.4devel on x86_64-unknown-linux-gnu, compiled by gcc (GCC)
4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit"
--"PostgreSQL 9.3.4, compiled by Visual C++ build 1600, 64-bit"

-- TEST CASE
CREATE TABLE test
(
currency money
);

INSERT INTO test(currency) SELECT '1.34'::float8::numeric::money;
INSERT INTO test(currency) SELECT '1000.34'::float8::numeric::money;
SELECT row_to_json(t) FROM (SELECT * FROM TEST) t;
--{"currency":1,34 Kč} NOT OK !!! it is not valid JSON without double quotes

--{"currency":"1 000,34 Kč"} OK

drop table test;


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: karel(dot)knezourek(at)gmail(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #10922: row_to_json creates invalid JSON for currecy lower then 1000.
Date: 2014-07-11 21:49:14
Message-ID: 21420.1405115354@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

karel(dot)knezourek(at)gmail(dot)com writes:
> -- TEST CASE
> CREATE TABLE test
> (
> currency money
> );

> INSERT INTO test(currency) SELECT '1.34'::float8::numeric::money;
> INSERT INTO test(currency) SELECT '1000.34'::float8::numeric::money;
> SELECT row_to_json(t) FROM (SELECT * FROM TEST) t;
> --{"currency":1,34 K} NOT OK !!! it is not valid JSON without double quotes

> --{"currency":"1000,34 K"} OK

Thanks for the report! I can't reproduce this on HEAD. I think it
should have been resolved by commit 0ca6bda8e, but that was done a
couple of days before we stamped 9.4beta1. Are you sure this is
exactly beta1, and not some slightly earlier version? Your
version() output looks like it predates beta1 ...

regards, tom lane