Emre Hasegeli <e...@hasegeli.com> writes: >> ... Several of the existing opclasses use fixed numbers of >> child nodes, so why does this need something they don't?
> Currently, SP-GiST framework supports fixed number of child nodes, if > the index is growing by page splits, not by prefix splits. This is > not a fair API. Hm, I see your point: the spgSplitTuple action only supports forming a new upper tuple with a single, labeled child node. That is pretty bogus. You could imagine doing repeated spgAddNode actions to enlarge the new upper tuple; but that's ridiculously inefficient, and it's also unclear how you'd avoid confusing searches that descend through a partially-split upper tuple (either concurrently, or after a crash that prevented finishing the split). > SP-GiST is not widely adopted in my experience. Breaking this part of > the API would affect prefix tree implementations. I don't think there > are much of them. Supporting the new interface is easy for them. We > can try to support the old interface by side of the new one, but this > wouldn't be very clean either. We could imagine defining a "spgSplitTupleMulti" action alongside the existing one, but I agree it's a bit of a wart --- nobody would have designed it that way in a green field. On the other hand, index AM-to- opclass APIs are things we don't like to break. We went out of our way to make past GiST and GIN API changes upward-compatible. Oleg, Teodor, do you have any idea how many people are using custom SPGiST opclasses that might be affected by an API break here? regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers