You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В документацию по типу данных 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.
The text was updated successfully, but these errors were encountered:
В документацию по типу данных
json
надо внести примерselect ('{"x":-0e-00}'::json->>'x')::int
он показывает, что совершенно валидный number взятый из json нельзя преобразовать в численный тип. Обычно, говорят о переполнении (в формате JSON не ограничивается размерность number), но здесь даже прошедшие на валидацию по диапазону числа могут не распарситься.
в
jsonb
эта проблема описана (даже с примером). Было бы не плохо из документации проjson
сослаться на то что эта проблема решена в типеjsonb
.В
jsonb
же, не плохо бы отметить что в отличие от типаjson
не все валидные документы JSON могут быть распарсены. Как минимум, из-за того что очень большие числа не влезут вnumeric
. А то знаете ли:а это валидное число в джсоне...
Также, в документации написано:
Здесь уместно ссылку дать на numeric, конкретнее на место, где текст:
implementation-specific
может стать проблемой при обмене данными с javascript. там можно хранить в типе number все 48-битные целые числа без промежутков. и получается, сохраним такое цисло в Postgres, Обратно можем прочитать немного другое.... верно ?также не прояснена ситуация с положительным и отрицательным нулём, который валиден в JSON.
The text was updated successfully, but these errors were encountered: