Well I'm trying to implement a window-function that works on range_types and produces 'atomic ranges' for each input range.
Let's say I have a set of ranges some overlapping some not, and I want to split each range at every boundary of every overlapping range and return those.
So for each range r I want to return an array of ranges that consists of range r split at every overlapping range boundary.
I need to consider both upper and lower boundaries and to be able to do this in one pass over the data I need to sort both the upper and lower boundaries and also sort the original ranges so I can loop over the ranges and boundaries in lockstep to produce the arrays.
As a last step I sort back the arrays of atomic ranges in the original order in the window so I can read out the tuplesort in that order and return each array to its corresponding range r.
(The result can be used to answer questions like what are the maximum number of simultaneously overlapping ranges and at which ranges the maximum occurs)
Best Regards
Dan S