this.indexKind = indexKeyRange.indexKind;
}
private static int boundColumns(IndexRowType indexRowType, IndexBound lo, IndexBound hi)
{
ColumnSelector loSelector = lo.columnSelector();
ColumnSelector hiSelector = hi.columnSelector();
boolean selected = true;
int boundColumns = 0;
for (int i = 0; i < indexRowType.nFields(); i++) {
if (loSelector.includesColumn(i) != hiSelector.includesColumn(i)) {
throw new IllegalArgumentException(
String.format("IndexBound arguments specify different fields of index %s", indexRowType));
}
if (selected) {
// loSelector.includesColumn(i) will equal hiSelector.includesColumn(i) for non-lexicographic
// ranges. For lexicographic, we want boundColumns to indicate the maximum value, relying on
// SortCursorUnidirectionalLexicographic to take care of the shorter one.
if (loSelector.includesColumn(i) || hiSelector.includesColumn(i)) {
boundColumns++;
} else {
selected = false;
}
} else {