Re: pgsql: GIN: Generalized Inverted iNdex.
От | Teodor Sigaev |
---|---|
Тема | Re: pgsql: GIN: Generalized Inverted iNdex. |
Дата | |
Msg-id | 446C3C42.2020807@sigaev.ru обсуждение исходный текст |
Ответ на | Re: pgsql: GIN: Generalized Inverted iNdex. (Christopher Kings-Lynne <chris.kings-lynne@calorieking.com>) |
Список | pgsql-committers |
> Ok, I can look into this now... Good, thank you. > > I'm not sure really where to being though. What are all the new > operators? What does it even mean to use a GIN over an int[] column? Patch introduces three new operators over one-dimensional arrays (left and rights args should have the same real type) without null elements: * anyarray @ anyarray - contains true, if all elements of right array exists in left one * anyarray && anyarray - overlap true, if it exists at least one element in both arrays * anyarray ~ anyarray - contained true, if all elements of left array exists in right one Operations @ and ~ are commutators. Pls, note: * type of array element must have equality operator, finding by typentry = lookup_type_cache(element_type, TYPECACHE_EQ_OPR_FINFO); typentry->eq_opr_finfo.fn_oid Equality operator is searching by the same way as it does by 'anyarray = anyarray' operator. * nulls element is prohibited because we can't find correct logic for result of operations: * '{1,2,3}' @ '{1,NULL}' - is it true or false? * '{1,2,3,NULL}' @ '{1,NULL}' - ??? I see that '{NULL}'::int[] = '{NULL}'::int[] returns true, but NULL = NULL returns NULL, should I treat NULL element in array as usual element with specific value and suppose that NULL=NULL? * non-one-dimensional arrays have similar problem for definition: '{{1,2},{3,4}}' @ '{1,3}' - ? GIN has built-in support of that 3 operations over select pg_type.typname, pg_opclass.opcname from pg_am, pg_opclass, pg_type where pg_opclass.opcamid = pg_am.oid and pg_am.amname='gin' and pg_opclass.opcintype = pg_type.oid; Contrib/intarray adds support to GIN for 'int4[] @@ query_int' operation (boolean search in array), contrib/tsearch2 use GIN to speed up 'tsvector @@ tsquery' > I guess it's a little more difficult to understand than I guessed... Hope, it will be easier that you think :) -- Teodor Sigaev E-mail: teodor@sigaev.ru WWW: http://www.sigaev.ru/
В списке pgsql-committers по дате отправления: