Re: '{"x": 42, "y": null}'::jsonb != '{"x": 42}'::jsonb ... Really?
От | Bryn Llewellyn |
---|---|
Тема | Re: '{"x": 42, "y": null}'::jsonb != '{"x": 42}'::jsonb ... Really? |
Дата | |
Msg-id | 7E6C88FF-F2FB-4C19-89CF-686E919AC1F7@yugabyte.com обсуждение исходный текст |
Ответ на | Re: '{"x": 42, "y": null}'::jsonb != '{"x": 42}'::jsonb ... Really? (Thomas Kellerer <shammat@gmx.net>) |
Список | pgsql-general |
> shammat@gmx.net wrote: > >> bryn@yugabyte.com wrote: >> >> Am I missing a use case where an object with a key-value pair with a JSON null value is meaningfully different from onewhere the key is simply absent? > > It seems the JSON specification doesn't actually define equality. But the JSON patch RFC 6902: > > www.rfc-editor.org/rfc/rfc6902#section-4.6 > > defines the equality of two objects as: > > « > objects: are considered equal if they contain the same number of members, and if each member can be considered equal toa member in the other object, by comparing their keys (as strings) and their values (using this list of type-specific rules) > » > > As {"x": 42, "y": null} and {"x": 42} do not contain the same number of members, I think Postgres' behaviour is correct. Thanks. I believe that I addressed this in a separate branch in this thread. The distinction (between « "some key": null» and "some key" absent), which by all means matters in some contexts, does not matter w.r.t. the requirements of my(demo) app. And I've now proved (to myself, at least) that I can meet my goal easily with existing Postgres features—especially"jsonb_strip_nulls()". I hope that this means that we're all happy.
В списке pgsql-general по дате отправления: