I'm using a jsonb
column, where the JSON documents contain large integers (PostgreSQL 9.5). I've noticed that when the value stored has too many significant digits, it gets truncated.
As an example, I insert this into my table:
{"value": 7598786232076607106}
And when I select back the same row, I get:
{"value": 7598786232076607000}
According to the documentation, numeric fields in jsonb are stored using the standard numeric
type from postgres, and numeric
normally allows:
up to 131072 digits before the decimal point; up to 16383 digits after the decimal point
Is it possible to actually get this behavior with jsonb
, instead of truncation?
1 Answer 1
The issue wasn't with PostgreSQL itself, but with pgAdmin 4, which apparently is not capable of parsing JSON properly, and truncates the response from PostgreSQL.
I will be using a different tool from now on.
-
Please report a bug too.Craig Ringer– Craig Ringer2017年05月01日 23:47:17 +00:00Commented May 1, 2017 at 23:47
numeric
isn'tjsonb
. In jsonb you're just storing structured text, not binary or decimal numbers. Can you show the query that produces this so we can see the actual origin of the issue?jsonb
column. Basically, I insert:{"value": 7598786232076607106}
, and when I select back, I get{"value": 7598786232076607000}
. The documentation says numeric values injsonb
are using the standardnumeric
type from postgres.