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?

  • numeric isn't jsonb. 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? – Craig Ringer May 1 '17 at 1:43
  • Maybe I wasn't clear. I was talking about a numeric field in a JSON document stored in a jsonb column. Basically, I insert: {"value": 7598786232076607106}, and when I select back, I get {"value": 7598786232076607000}. The documentation says numeric values in jsonb are using the standard numeric type from postgres. – Flavien May 1 '17 at 10:17
  • Please show full, complete SQL example. – Craig Ringer May 1 '17 at 11:00
  • Actually, I think that's a rendering problem with PgAdmin 4. – Flavien May 1 '17 at 13:34

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 May 1 '17 at 23:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.