Re: Calling json_* functions with JSONB data
От | Ryan Pedela |
---|---|
Тема | Re: Calling json_* functions with JSONB data |
Дата | |
Msg-id | CACu89FSEGzH0+s=MpVvS70Tkbj2p2Q9Abiibc7-3mCM2M60Jkw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Calling json_* functions with JSONB data ("David G. Johnston" <david.g.johnston@gmail.com>) |
Список | pgsql-hackers |
On Mon, May 23, 2016 at 11:14 AM, David G. Johnston <david.g.johnston@gmail.com> wrote:
Hi there,I noticed it was very easy to accidentally call the json_* form of JSON manipulation functions with jsonb data as input. This is pretty sub-optimal, since it involves rendering the jsonb then reparsing it and calling the json_* form of the function.Fortunately, this seems quite easy to resolve by taking advantage of our ability to add json_*(jsonb) form of the functions.I talked this over with Andrew who had no objections and suggested I float it on the list before writing a patch. Looks pretty straightforward, just a few new data rows in pg_proc.h.Anyone have any concerns or suggestions?Please provide an example of what you are talking about.SELECT json_array_length('[1,2]'::jsonb)ERROR: function json_array_length(jsonb) does not exist-- The function name is "jsonb_array_length"; and there is no implicit cast between the two.
He is saying that he accidentally calls json_array_length() instead of jsonb_array_length() and that it is an annoying usability problem. It happens to me too and I agree it would be better if you could just call json_array_length() regardless if the type is JSON or JSONB. If there is some significant functionality difference from the user's perspective then having separate "json_" and "jsonb_" functions makes sense, but in your example there is not.
В списке pgsql-hackers по дате отправления: