On Jun 11, 2006, at 2:34 , Michael Glaesemann wrote:
>
> On Jun 11, 2006, at 0:54 , Ian Caulfield wrote:
>
>> I've done similar date range things by creating a composite type
>> consisting of the lower and upper bounds, and then implementing a
>> btree opclass where the comparator returns 0 if two ranges overlap
>> - this allows a current btree index to enforce non-overlapping
>> ranges, and allows indexed lookup of which range contains a
>> particular value.
>
> As Tom already pointed out, this method leads to problems with
> btree indexes. I haven't heavily tested my own implementation
> (below), but it only returns 0 for equality, which is what btree
> expects. All other possible relationships between two ranges have a
> well-defined result of -1 or 1. I believe this should be enough to
> prevent any transitivity issues with btree.
Of course, this method doesn't provide the non-overlapping
constraint. That still needs to be handled by a constraint trigger.
Michael Glaesemann
grzm seespotcode net