Thread: how to use advanced gist options

how to use advanced gist options

From
Sergej Galkin
Date:
Hello all,<br /><br />Now I'm trying to realize index in GiST. Everything is Ok, but I would like to know about
advancedindex programming options.<br />1) For example - can I delete entry in my picksplit procedure ?<br />2) Or to
addlogical conditions - when picksplit node ?  For exampe change default "when number of entries of node is much than
XX,split node" - to "when number of entries which element "state" is "on" is much than XX, split node ?"<br /><br
/>Faithfully,<br/>Sergej<br /> 

Re: how to use advanced gist options

From
Jeff Davis
Date:
On Sun, 2010-03-14 at 06:50 -0700, Sergej Galkin wrote:
> 1) For example - can I delete entry in my picksplit procedure ?

No, entries are automatically removed by postgres; and only when the
underlying tuples in the table are removed (or they no longer match the
predicate of a partial index).

> 2) Or to add logical conditions - when picksplit node ?  For exampe
> change default "when number of entries of node is much than XX, split
> node" - to "when number of entries which element "state" is "on" is
> much than XX, split node ?"

No, GiST doesn't allow that kind of fine-grained control. It's meant to
be a level above those details.

You can actually write your own index access method and plug that in to
postgresql at runtime. This is substantially more difficult than using
GiST, of course. The other disadvantage is that there are (currently) no
hooks for WAL recovery, so a crash may require an index rebuild (btree,
gist, and gin are safe against this by using the WAL).

Regards,Jeff Davis