@dispatch(Slice, (Select, Selectable, ColumnElement))
def compute_up(expr, data, **kwargs):
    index = expr.index[0]  # [0] replace_slices returns tuple ((start, stop), )
    if isinstance(index, slice):
        start = index.start or 0
        if start < 0:
            raise ValueError('start value of slice cannot be negative'
                             ' with a SQL backend')

        stop = index.stop
        if stop is not None and stop < 0:
            raise ValueError('stop value of slice cannot be negative with a '
                             'SQL backend.')

        if index.step is not None and index.step < 1:
            raise ValueError('step parameter in slice objects not supported '
                             'with SQL backend')

    elif isinstance(index, (np.integer, numbers.Integral)):
        if index < 0:
            raise ValueError('integer slice cannot be negative for the'
                             ' SQL backend')
        start = index
        stop = start + 1
    else:
        raise TypeError('type %r not supported for slicing wih SQL backend'
                        % type(index).__name__)

    warnings.warn('The order of the result set from a Slice expression '
                  'computed against the SQL backend is not deterministic.')

    if stop is None:  # Represents open-ended slice. e.g. [3:]
        return select(data).offset(start)
    else:
        return select(data).offset(start).limit(stop - start)
dataset/ETHPy150Open blaze/blaze/blaze/compute/sql.py/compute_up/operator `!=` -> `<`