@Override public boolean isEmpty() { return indexRanges.isEmpty(); }
/** * Constraints that are empty indicate full table scan. A full table scan occurs if ANY one * dimension is unbounded. * * @param constraints * @return true if any one dimension is unbounded */ public static final boolean isFullTableScan(final List<MultiDimensionalNumericData> constraints) { for (final MultiDimensionalNumericData constraint : constraints) { if (constraint.isEmpty()) { return false; } } return constraints.isEmpty(); }
public static QueryRanges constraintsToByteArrayRanges( final MultiDimensionalNumericData constraints, final NumericIndexStrategy indexStrategy, final int maxRanges) { if ((constraints == null) || constraints.isEmpty()) { return null; // implies in negative and // positive infinity } else { return indexStrategy.getQueryRanges(constraints, maxRanges); } }
public List<MultiDimensionalNumericData> getIndexConstraints( final NumericIndexStrategy indexStrategy) { if (constraintsSets.isEmpty()) { return Collections.emptyList(); } final List<MultiDimensionalNumericData> setRanges = new ArrayList<>(constraintsSets.size()); for (final ConstraintSet set : constraintsSets) { final MultiDimensionalNumericData mdSet = set.getIndexConstraints(indexStrategy); if (!mdSet.isEmpty()) { setRanges.add(mdSet); } } return setRanges; } }
/** Returns an insertion id selected round-robin from a predefined pool */ @Override public byte[][] getInsertionPartitionKeys(final MultiDimensionalNumericData insertionData) { final long hashCode; if (insertionData.isEmpty()) { hashCode = insertionData.hashCode(); } else { hashCode = Math.abs( hashCode( insertionData.getMaxValuesPerDimension(), hashCode(insertionData.getMinValuesPerDimension(), 1))); } final int position = (int) (hashCode % keys.length); return new byte[][] {keys[position]}; }