Skip to content

Улучшения в документацию про json/jsonb #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
socketpair opened this issue Apr 11, 2016 · 0 comments
Open

Comments

@socketpair
Copy link

В документацию по типу данных 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant