@Override public boolean isSingleValue() { return lowIndexedRanges.size() == 1 && lowIndexedRanges.values().iterator().next().isSingleValue(); }
public Object getSingleValue() { if (!isSingleValue()) { throw new IllegalStateException("Range does not have just a single value"); } return low.getValue(); }
@VisibleForTesting public static Optional<Collection<Object>> extractDiscreteValues(ValueSet valueSet) { return valueSet.getValuesProcessor().transform( ranges -> { ImmutableList.Builder<Object> discreteValues = ImmutableList.builder(); for (Range range : ranges.getOrderedRanges()) { if (!range.isSingleValue()) { return Optional.empty(); } discreteValues.add(range.getSingleValue()); } return Optional.of(discreteValues.build()); }, discreteValues -> Optional.of(discreteValues.getValues()), allOrNone -> allOrNone.isAll() ? Optional.empty() : Optional.of(ImmutableList.of())); }
public String toString(ConnectorSession session) { StringBuilder buffer = new StringBuilder(); if (isSingleValue()) { buffer.append('[').append(low.getPrintableValue(session)).append(']'); } else { buffer.append((low.getBound() == Marker.Bound.EXACTLY) ? '[' : '('); buffer.append(low.isLowerUnbounded() ? "<min>" : low.getPrintableValue(session)); buffer.append(", "); buffer.append(high.isUpperUnbounded() ? "<max>" : high.getPrintableValue(session)); buffer.append((high.getBound() == Marker.Bound.EXACTLY) ? ']' : ')'); } return buffer.toString(); } }
@Test public void testSingleValue() { assertTrue(Range.range(BIGINT, 1L, true, 1L, true).isSingleValue()); assertFalse(Range.range(BIGINT, 1L, true, 2L, true).isSingleValue()); assertTrue(Range.range(DOUBLE, 1.1, true, 1.1, true).isSingleValue()); assertTrue(Range.range(VARCHAR, utf8Slice("a"), true, utf8Slice("a"), true).isSingleValue()); assertTrue(Range.range(BOOLEAN, true, true, true, true).isSingleValue()); assertFalse(Range.range(BOOLEAN, false, true, true, true).isSingleValue()); }
for (Range range : ranges.getOrderedRanges()) { if (!range.isSingleValue()) { return ImmutableSet.of();
for (Range range : ranges.getOrderedRanges()) { StringBuilder builder = new StringBuilder(); if (range.isSingleValue()) { String value = castToVarchar(type, range.getSingleValue(), functionRegistry, session); builder.append('[').append(value).append(']');
if (range.isSingleValue()) { singleValues.add(literalEncoder.toExpression(range.getSingleValue(), type)); continue;
for (Range range : domain.getValues().getRanges().getOrderedRanges()) { checkState(!range.isAll()); if (range.isSingleValue()) { singleValues.add(range.getLow().getValue()); continue;
for (Range range : domain.getValues().getRanges().getOrderedRanges()) { if (range.isSingleValue()) { singleValues.add(range.getLow().getValue());
@Test public void testLessThanRange() { Range range = Range.lessThan(BIGINT, 1L); assertEquals(range.getLow(), Marker.lowerUnbounded(BIGINT)); assertEquals(range.getHigh(), Marker.below(BIGINT, 1L)); assertFalse(range.isSingleValue()); assertFalse(range.isAll()); assertEquals(range.getType(), BIGINT); assertTrue(range.includes(Marker.lowerUnbounded(BIGINT))); assertFalse(range.includes(Marker.exactly(BIGINT, 1L))); assertTrue(range.includes(Marker.exactly(BIGINT, 0L))); assertFalse(range.includes(Marker.upperUnbounded(BIGINT))); }
@Test public void testGreaterThanRange() { Range range = Range.greaterThan(BIGINT, 1L); assertEquals(range.getLow(), Marker.above(BIGINT, 1L)); assertEquals(range.getHigh(), Marker.upperUnbounded(BIGINT)); assertFalse(range.isSingleValue()); assertFalse(range.isAll()); assertEquals(range.getType(), BIGINT); assertFalse(range.includes(Marker.lowerUnbounded(BIGINT))); assertFalse(range.includes(Marker.exactly(BIGINT, 1L))); assertTrue(range.includes(Marker.exactly(BIGINT, 2L))); assertTrue(range.includes(Marker.upperUnbounded(BIGINT))); }
@Test public void testEqualRange() { Range range = Range.equal(BIGINT, 1L); assertEquals(range.getLow(), Marker.exactly(BIGINT, 1L)); assertEquals(range.getHigh(), Marker.exactly(BIGINT, 1L)); assertTrue(range.isSingleValue()); assertFalse(range.isAll()); assertEquals(range.getType(), BIGINT); assertFalse(range.includes(Marker.lowerUnbounded(BIGINT))); assertFalse(range.includes(Marker.exactly(BIGINT, 0L))); assertTrue(range.includes(Marker.exactly(BIGINT, 1L))); assertFalse(range.includes(Marker.exactly(BIGINT, 2L))); assertFalse(range.includes(Marker.upperUnbounded(BIGINT))); }
@Test public void testAllRange() { Range range = Range.all(BIGINT); assertEquals(range.getLow(), Marker.lowerUnbounded(BIGINT)); assertEquals(range.getHigh(), Marker.upperUnbounded(BIGINT)); assertFalse(range.isSingleValue()); assertTrue(range.isAll()); assertEquals(range.getType(), BIGINT); assertTrue(range.includes(Marker.lowerUnbounded(BIGINT))); assertTrue(range.includes(Marker.below(BIGINT, 1L))); assertTrue(range.includes(Marker.exactly(BIGINT, 1L))); assertTrue(range.includes(Marker.above(BIGINT, 1L))); assertTrue(range.includes(Marker.upperUnbounded(BIGINT))); }
@Test public void testGreaterThanOrEqualRange() { Range range = Range.greaterThanOrEqual(BIGINT, 1L); assertEquals(range.getLow(), Marker.exactly(BIGINT, 1L)); assertEquals(range.getHigh(), Marker.upperUnbounded(BIGINT)); assertFalse(range.isSingleValue()); assertFalse(range.isAll()); assertEquals(range.getType(), BIGINT); assertFalse(range.includes(Marker.lowerUnbounded(BIGINT))); assertFalse(range.includes(Marker.exactly(BIGINT, 0L))); assertTrue(range.includes(Marker.exactly(BIGINT, 1L))); assertTrue(range.includes(Marker.exactly(BIGINT, 2L))); assertTrue(range.includes(Marker.upperUnbounded(BIGINT))); }
@Test public void testLessThanOrEqualRange() { Range range = Range.lessThanOrEqual(BIGINT, 1L); assertEquals(range.getLow(), Marker.lowerUnbounded(BIGINT)); assertEquals(range.getHigh(), Marker.exactly(BIGINT, 1L)); assertFalse(range.isSingleValue()); assertFalse(range.isAll()); assertEquals(range.getType(), BIGINT); assertTrue(range.includes(Marker.lowerUnbounded(BIGINT))); assertFalse(range.includes(Marker.exactly(BIGINT, 2L))); assertTrue(range.includes(Marker.exactly(BIGINT, 1L))); assertTrue(range.includes(Marker.exactly(BIGINT, 0L))); assertFalse(range.includes(Marker.upperUnbounded(BIGINT))); }
@Test public void testRange() { Range range = Range.range(BIGINT, 0L, false, 2L, true); assertEquals(range.getLow(), Marker.above(BIGINT, 0L)); assertEquals(range.getHigh(), Marker.exactly(BIGINT, 2L)); assertFalse(range.isSingleValue()); assertFalse(range.isAll()); assertEquals(range.getType(), BIGINT); assertFalse(range.includes(Marker.lowerUnbounded(BIGINT))); assertFalse(range.includes(Marker.exactly(BIGINT, 0L))); assertTrue(range.includes(Marker.exactly(BIGINT, 1L))); assertTrue(range.includes(Marker.exactly(BIGINT, 2L))); assertFalse(range.includes(Marker.exactly(BIGINT, 3L))); assertFalse(range.includes(Marker.upperUnbounded(BIGINT))); }
List<Document> disjuncts = new ArrayList<>(); for (Range range : domain.getValues().getRanges().getOrderedRanges()) { if (range.isSingleValue()) { singleValues.add(translateValue(range.getSingleValue(), type));
Set<Object> valuesToInclude = new HashSet<>(); checkState(!range.isAll(), "Invalid range for column: " + columnName); if (range.isSingleValue()) { valuesToInclude.add(range.getLow().getValue());
accumuloRange = new Range(); else if (prestoRange.isSingleValue()) { Text split = new Text(serializer.encode(prestoRange.getType(), prestoRange.getSingleValue())); accumuloRange = new Range(split);