Re: BUG #11207: empty path will segfault jsonb #>
От | Tom Lane |
---|---|
Тема | Re: BUG #11207: empty path will segfault jsonb #> |
Дата | |
Msg-id | 28104.1408561567@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #11207: empty path will segfault jsonb #> (Peter Geoghegan <pg@heroku.com>) |
Ответы |
Re: BUG #11207: empty path will segfault jsonb #>
|
Список | pgsql-bugs |
Peter Geoghegan <pg@heroku.com> writes: > On Wed, Aug 20, 2014 at 11:08 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Is there a reason for these to behave inconsistently, and if not, which >> behavior should we standardize on? Considering that you get NULL not an >> error for extracting a nonexistent element from an object, I think there >> is some case to be made for saying that returning NULL is the more >> convenient behavior. Of course one can also argue for wanting this >> operator to throw errors if the JSON structure doesn't match the >> operation, but it seems like we've chosen to prefer being lax. > I discussed this very issue with Andrew during development (I think > that this happened to occur in private). My view was that since users > will frequently use -> within expression indexes, it's best to have it > return NULL for non-objects, rather than make them worry about the > case where it'll be rejected, which is rather contrary to the spirit > of jsonb (at least as a default behavior). Hadn't thought of that angle, but it's a really good point. I'd certainly rather be able to put an index on (jsoncol -> 'foo') without worrying about what will happen if the column includes things that aren't objects. > Andrew argued it was > preferable to stick to the historic behavior of json operators. IMV, > we should have both operators return NULL. They should be consistent, > which implies changing the behavior of the existing json variants too, > but I don't think that's a big problem. None of these operators existed before 9.3, so I don't put a lot of stock in the idea that their corner-case behaviors should be considered sacrosanct already. But that will become the case pretty soon; if we don't get it right in 9.4 it will arguably be too late. regards, tom lane
В списке pgsql-bugs по дате отправления: