Hi 何李夫

Yes, it seems there's a TODO in the code here about supporting the
open-ended intervals:

  if (spec != nullptr && spec->lower_bound_key() &&
spec->exclusive_upper_bound_key()) {
    // TODO : support open-ended intervals

I think fixing this would be relatively straight-forward by adding some
methods to the RowSetTree and IntervalTree implementation. Alternatively,
it might be possible for the RowSetTree to remember the min and max key of
all of its contents, and just use that min/max to fill in the missing
bounds on the scan spec.

For the common case of equality predicates, note that equality is already
converted into a scan with lower and upper bound set, so I think it will
already cull to just the appropriate RowSets in that case.

If you're interested in working on this, that would be great.

-Todd

On Mon, May 7, 2018 at 11:53 PM, helifu <[email protected]> wrote:

> Hi all,
>
>
>
> In our kudu source code, we just cull row-sets when lower_bound_key and
> exclusive_upper_bound_key are existing at the same time. And if not, we
> will
> grab all row-sets of the tablet, then have to seek the key in
> ‘CFileSet::Iterator::PushdownRangeScanPredicate’ for the unnecessary
> row-sets (which will waste disk io).
>
> I am curious about that is it possible and helpful to support half
> open-ended range or equality value while culling row-sets?
>
>
>
> Thanks in advance.
>
>
>
> 何李夫
>
> 2017-04-10 16:06:24
>
>
>
>


-- 
Todd Lipcon
Software Engineer, Cloudera

Reply via email to