- Notifications
You must be signed in to change notification settings - Fork5
Description
В документацию по типу данныхjson
надо внести пример
select ('{"x":-0e-00}'::json->>'x')::int
он показывает, что совершенно валидный number взятый из json нельзя преобразовать в численный тип. Обычно, говорят о переполнении (в формате JSON не ограничивается размерность number), но здесь даже прошедшие на валидацию по диапазону числа могут не распарситься.
вjsonb
эта проблема описана (даже с примером). Было бы не плохо из документации проjson
сослаться на то что эта проблема решена в типеjsonb
.
Вjsonb
же, не плохо бы отметить что в отличие от типаjson
не все валидные документы JSON могут быть распарсены. Как минимум, из-за того что очень большие числа не влезут вnumeric
. А то знаете ли:
=> select '1e10000'::numeric;ERROR: invalid input syntax for type numeric: "1e10000"
а это валидное число в джсоне...
Также, в документации написано:
the danger of losing numeric precision compared to data originally stored by PostgreSQL should be considered
Здесь уместно ссылку дать на numeric, конкретнее на место, где текст:
NUMERIC without any precision or scale creates a column in which numeric values of any precision and scale can be stored, up to the implementation limit on precision
implementation-specific
может стать проблемой при обмене данными с javascript. там можно хранить в типе number все 48-битные целые числа без промежутков. и получается, сохраним такое цисло в Postgres, Обратно можем прочитать немного другое.... верно ?
также не прояснена ситуация с положительным и отрицательным нулём, который валиден в JSON.