Re: default opclass for jsonb (was Re: Call for GIST/GIN/SP-GIST opclass documentation)
От | Peter Geoghegan |
---|---|
Тема | Re: default opclass for jsonb (was Re: Call for GIST/GIN/SP-GIST opclass documentation) |
Дата | |
Msg-id | CAM3SWZQpg8cX+MccHd38KCQMgD9Leh-4BNBFnV-8gh5+Rnb1Hg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: default opclass for jsonb (was Re: Call for GIST/GIN/SP-GIST opclass documentation) (Peter Geoghegan <pg@heroku.com>) |
Ответы |
Re: default opclass for jsonb (was Re: Call for GIST/GIN/SP-GIST opclass documentation)
|
Список | pgsql-hackers |
On Sat, May 10, 2014 at 2:52 PM, Peter Geoghegan <pg@heroku.com> wrote: > I've added a wildcard to the rhs jsonb here, which of course won't > work, the proximate cause being that that simply isn't valid jsonb. > It's also something inherently impossible to support with the current > jsonb_hash_op's indexing strategy. That only hashes elements and > values, mixing in keys from all outer nesting levels (so it's possible > for there to be 0 *nentries). It occurs to me that this could be a particular problem for jsonb_hash_ops. Consider this jsonb: '{"a":{}}'::jsonb In one sense, the outermost level's "a" key does have a value: an empty object. So we may test containment in an indexable fashion like this: select * from foo where j @> '{"a":{}}'::jsonb But in another sense, the sense that is relevant to jsonb_hash_ops, it does not. There would be *no* GIN keys passed back from gin_extract_jsonb_hash() if it were tasked with extracting keys from this rhs jsonb. Now, I'm not all that worried about this, because this is surely an odd-ball use case, particularly for jsonb_hash_ops where no keys are separately indexed (separately from *primitive* elements/values). However, it is worth noting in the documentation in my view. I attach a doc patch that adds this. -- Peter Geoghegan
Вложения
В списке pgsql-hackers по дате отправления: