/** * Gets a collection of Accumulo Range objects from the given Presto domain. * This maps the column constraints of the given Domain to an Accumulo Range scan. * * @param domain Domain, can be null (returns (-inf, +inf) Range) * @param serializer Instance of an {@link AccumuloRowSerializer} * @return A collection of Accumulo Range objects * @throws TableNotFoundException If the Accumulo table is not found */ public static Collection<Range> getRangesFromDomain(Optional<Domain> domain, AccumuloRowSerializer serializer) throws TableNotFoundException { // if we have no predicate pushdown, use the full range if (!domain.isPresent()) { return ImmutableSet.of(new Range()); } ImmutableSet.Builder<Range> rangeBuilder = ImmutableSet.builder(); for (com.facebook.presto.spi.predicate.Range range : domain.get().getValues().getRanges().getOrderedRanges()) { rangeBuilder.add(getRangeFromPrestoRange(range, serializer)); } return rangeBuilder.build(); }
private static OptionalInt extractUpperBound(TupleDomain<Symbol> tupleDomain, Symbol symbol) { if (tupleDomain.isNone()) { return OptionalInt.empty(); } Domain rowNumberDomain = tupleDomain.getDomains().get().get(symbol); if (rowNumberDomain == null) { return OptionalInt.empty(); } ValueSet values = rowNumberDomain.getValues(); if (values.isAll() || values.isNone() || values.getRanges().getRangeCount() <= 0) { return OptionalInt.empty(); } Range span = values.getRanges().getSpan(); if (span.getHigh().isUpperUnbounded()) { return OptionalInt.empty(); } verify(rowNumberDomain.getType().equals(BIGINT)); long upperBound = (Long) span.getHigh().getValue(); if (span.getHigh().getBound() == BELOW) { upperBound--; } if (upperBound > 0 && upperBound <= Integer.MAX_VALUE) { return OptionalInt.of(toIntExact(upperBound)); } return OptionalInt.empty(); }
for (Range range : domain.getValues().getRanges().getOrderedRanges()) { checkState(!range.isAll()); if (range.isSingleValue()) {
for (Range range : domain.getValues().getRanges().getOrderedRanges()) {
for (Range range : domain.getValues().getRanges().getOrderedRanges()) { if (range.isSingleValue()) { singleValues.add(translateValue(range.getSingleValue(), type));
private QueryBuilder buildTermQuery(BoolQueryBuilder queryBuilder, String columnName, Domain domain, Type type) for (Range range : domain.getValues().getRanges().getOrderedRanges()) { BoolQueryBuilder rangeQueryBuilder = new BoolQueryBuilder(); Set<Object> valuesToInclude = new HashSet<>();
public static Collection<Range> getRangesFromDomain(Domain domain) throws TableNotFoundException { Collection<Range> rangeBuilder = domain.getValues().getRanges().getOrderedRanges(); return rangeBuilder; }
/** * Gets a collection of Hbase Range objects from the given Presto domain. * This maps the column constraints of the given Domain to an Hbase Range scan. * * @param domain Domain, can be null (returns (-inf, +inf) Range) * @return A collection of Hbase Range objects * @throws TableNotFoundException If the Hbase table is not found */ public static Collection<Range> getRangesFromDomain(Optional<Domain> domain) throws TableNotFoundException { // if we have no predicate pushdown, use the full range if (!domain.isPresent()) { return ImmutableSet.of(); } Collection<Range> rangeBuilder = domain.get().getValues().getRanges().getOrderedRanges(); return rangeBuilder; }
public static Collection<Range> getRangesFromDomain(Domain domain) throws TableNotFoundException { Collection<Range> rangeBuilder = domain.getValues().getRanges().getOrderedRanges(); return rangeBuilder; }
public static Collection<Range> getRangesFromDomain(Domain domain) throws TableNotFoundException { Collection<Range> rangeBuilder = domain.getValues().getRanges().getOrderedRanges(); return rangeBuilder; }
private static String createShardPredicate(ImmutableList.Builder<JDBCType> types, ImmutableList.Builder<Object> values, Domain domain, JDBCType jdbcType) { List<Range> ranges = domain.getValues().getRanges().getOrderedRanges(); // only apply predicates if all ranges are single values if (ranges.isEmpty() || !ranges.stream().allMatch(Range::isSingleValue)) { return "true"; } ImmutableList.Builder<Object> valuesBuilder = ImmutableList.builder(); ImmutableList.Builder<JDBCType> typesBuilder = ImmutableList.builder(); StringJoiner rangePredicate = new StringJoiner(" OR "); for (Range range : ranges) { Slice uuidText = (Slice) range.getSingleValue(); try { Slice uuidBytes = uuidStringToBytes(uuidText); typesBuilder.add(jdbcType); valuesBuilder.add(uuidBytes); } catch (IllegalArgumentException e) { return "true"; } rangePredicate.add("shard_uuid = ?"); } types.addAll(typesBuilder.build()); values.addAll(valuesBuilder.build()); return rangePredicate.toString(); }
private static OptionalInt extractUpperBound(TupleDomain<Symbol> tupleDomain, Symbol symbol) { if (tupleDomain.isNone()) { return OptionalInt.empty(); } Domain rowNumberDomain = tupleDomain.getDomains().get().get(symbol); if (rowNumberDomain == null) { return OptionalInt.empty(); } ValueSet values = rowNumberDomain.getValues(); if (values.isAll() || values.isNone() || values.getRanges().getRangeCount() <= 0) { return OptionalInt.empty(); } Range span = values.getRanges().getSpan(); if (span.getHigh().isUpperUnbounded()) { return OptionalInt.empty(); } verify(rowNumberDomain.getType().equals(BIGINT)); long upperBound = (Long) span.getHigh().getValue(); if (span.getHigh().getBound() == BELOW) { upperBound--; } if (upperBound > Integer.MAX_VALUE) { return OptionalInt.empty(); } return OptionalInt.of(Ints.checkedCast(upperBound)); }
|| ((EthereumColumnHandle) entry.getKey()).getName().equals("tx_blockNumber") || ((EthereumColumnHandle) entry.getKey()).getName().equals("erc20_blockNumber"))) { entry.getValue().getValues().getRanges().getOrderedRanges().forEach(r -> { Marker low = r.getLow(); Marker high = r.getHigh(); && (((EthereumColumnHandle) entry.getKey()).getName().equals("block_hash") || ((EthereumColumnHandle) entry.getKey()).getName().equals("tx_blockHash"))) { entry.getValue().getValues().getRanges().getOrderedRanges().stream() .filter(Range::isSingleValue).forEach(r -> { String blockHash = ((Slice) r.getSingleValue()).toStringUtf8(); } else if (entry.getKey() instanceof EthereumColumnHandle && (((EthereumColumnHandle) entry.getKey()).getName().equals("block_timestamp"))) { entry.getValue().getValues().getRanges().getOrderedRanges().forEach(r -> { Marker low = r.getLow(); Marker high = r.getHigh();
Ranges ranges = domain.getValues().getRanges();
for (Range range : domain.getValues().getRanges().getOrderedRanges()) {