Hello Robert, > I would like to complain about this patch. First, I think that it > would've been a better idea to use functions for this rather than > operators, because now ::text does something totally unlike what ::int > does, and that's confusing.
This is not entirely accurate. ::text casts any jsonb to text, e.g: ``` select '{}'::jsonb::text; text ------ {} (1 row) ``` This is exactly what ::bool and ::numeric casts do. Naturally not every jsonb value can be represented as boolean or numeric though. > If we had json_to_WHATEVER for various values of WHATEVER then all of > the conversions could be spelled similarly; as the commit message > right points out, the cast can only do one thing. I believe it's not as convenient for users as having casts. Also this would be inconsistent with the rest of the system since we already have int4 -> text, int4 -> bool and various other casts. > Also, I think the error messages aren't great: > > +select '[]'::jsonb::bool; > +ERROR: jsonb value must be boolean > > In this simple scenario, it's clear enough what has gone wrong, but in > a more complicated case I suspect people will have a hard time > figuring out what the source of that error message is. It seems like > it would be better to say something about casting or converting in the > error message, to give users a clue. I agree. How about "unable to cast jsonb value to %typename%"? -- Best regards, Aleksander Alekseev
signature.asc
Description: PGP signature