io.prestosql.spi.predicate.Range类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(13.6k)|赞(0)|评价(0)|浏览(237)

本文整理了Java中io.prestosql.spi.predicate.Range类的一些代码示例,展示了Range类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Range类的具体详情如下:
包路径:io.prestosql.spi.predicate.Range
类名称:Range

Range介绍

[英]A Range of values across the continuous space defined by the types of the Markers
[中]由标记类型定义的连续空间中的一系列值

代码示例

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testContains()
  3. {
  4. assertTrue(Range.all(BIGINT).contains(Range.all(BIGINT)));
  5. assertTrue(Range.all(BIGINT).contains(Range.equal(BIGINT, 0L)));
  6. assertTrue(Range.all(BIGINT).contains(Range.greaterThan(BIGINT, 0L)));
  7. assertTrue(Range.equal(BIGINT, 0L).contains(Range.equal(BIGINT, 0L)));
  8. assertFalse(Range.equal(BIGINT, 0L).contains(Range.greaterThan(BIGINT, 0L)));
  9. assertFalse(Range.equal(BIGINT, 0L).contains(Range.greaterThanOrEqual(BIGINT, 0L)));
  10. assertFalse(Range.equal(BIGINT, 0L).contains(Range.all(BIGINT)));
  11. assertTrue(Range.greaterThanOrEqual(BIGINT, 0L).contains(Range.greaterThan(BIGINT, 0L)));
  12. assertTrue(Range.greaterThan(BIGINT, 0L).contains(Range.greaterThan(BIGINT, 1L)));
  13. assertFalse(Range.greaterThan(BIGINT, 0L).contains(Range.lessThan(BIGINT, 0L)));
  14. assertTrue(Range.range(BIGINT, 0L, true, 2L, true).contains(Range.range(BIGINT, 1L, true, 2L, true)));
  15. assertFalse(Range.range(BIGINT, 0L, true, 2L, true).contains(Range.range(BIGINT, 1L, true, 3L, false)));
  16. }

代码示例来源:origin: prestosql/presto

  1. for (Range range : ranges.getOrderedRanges()) {
  2. StringBuilder builder = new StringBuilder();
  3. if (range.isSingleValue()) {
  4. String value = castToVarchar(type, range.getSingleValue(), functionRegistry, session);
  5. builder.append('[').append(value).append(']');
  6. builder.append((range.getLow().getBound() == Marker.Bound.EXACTLY) ? '[' : '(');
  7. if (range.getLow().isLowerUnbounded()) {
  8. builder.append("<min>");
  9. builder.append(castToVarchar(type, range.getLow().getValue(), functionRegistry, session));
  10. if (range.getHigh().isUpperUnbounded()) {
  11. builder.append("<max>");
  12. builder.append(castToVarchar(type, range.getHigh().getValue(), functionRegistry, session));
  13. builder.append((range.getHigh().getBound() == Marker.Bound.EXACTLY) ? ']' : ')');

代码示例来源:origin: io.prestosql/presto-orc

  1. private static <F, T extends Comparable<T>> Domain createDomain(Type type, boolean hasNullValue, RangeStatistics<F> rangeStatistics, Function<F, T> function)
  2. {
  3. F min = rangeStatistics.getMin();
  4. F max = rangeStatistics.getMax();
  5. if (min != null && max != null) {
  6. return Domain.create(ValueSet.ofRanges(Range.range(type, function.apply(min), true, function.apply(max), true)), hasNullValue);
  7. }
  8. if (max != null) {
  9. return Domain.create(ValueSet.ofRanges(Range.lessThanOrEqual(type, function.apply(max))), hasNullValue);
  10. }
  11. if (min != null) {
  12. return Domain.create(ValueSet.ofRanges(Range.greaterThanOrEqual(type, function.apply(min))), hasNullValue);
  13. }
  14. return Domain.create(ValueSet.all(type), hasNullValue);
  15. }

代码示例来源:origin: prestosql/presto

  1. public boolean contains(Range other)
  2. {
  3. checkTypeCompatibility(other);
  4. return this.getLow().compareTo(other.getLow()) <= 0 &&
  5. this.getHigh().compareTo(other.getHigh()) >= 0;
  6. }

代码示例来源:origin: prestosql/presto

  1. public Range intersect(Range other)
  2. {
  3. checkTypeCompatibility(other);
  4. if (!this.overlaps(other)) {
  5. throw new IllegalArgumentException("Cannot intersect non-overlapping ranges");
  6. }
  7. Marker lowMarker = Marker.max(low, other.getLow());
  8. Marker highMarker = Marker.min(high, other.getHigh());
  9. return new Range(lowMarker, highMarker);
  10. }

代码示例来源:origin: io.prestosql/presto-main

  1. private static boolean isBetween(Range range)
  2. {
  3. return !range.getLow().isLowerUnbounded() && range.getLow().getBound() == Marker.Bound.EXACTLY
  4. && !range.getHigh().isUpperUnbounded() && range.getHigh().getBound() == Marker.Bound.EXACTLY;
  5. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testSpan()
  3. {
  4. assertEquals(Range.greaterThan(BIGINT, 1L).span(Range.lessThanOrEqual(BIGINT, 2L)), Range.all(BIGINT));
  5. assertEquals(Range.greaterThan(BIGINT, 2L).span(Range.lessThanOrEqual(BIGINT, 0L)), Range.all(BIGINT));
  6. assertEquals(Range.range(BIGINT, 1L, true, 3L, false).span(Range.equal(BIGINT, 2L)), Range.range(BIGINT, 1L, true, 3L, false));
  7. assertEquals(Range.range(BIGINT, 1L, true, 3L, false).span(Range.range(BIGINT, 2L, false, 10L, false)), Range.range(BIGINT, 1L, true, 10L, false));
  8. assertEquals(Range.greaterThan(BIGINT, 1L).span(Range.equal(BIGINT, 0L)), Range.greaterThanOrEqual(BIGINT, 0L));
  9. assertEquals(Range.greaterThan(BIGINT, 1L).span(Range.greaterThanOrEqual(BIGINT, 10L)), Range.greaterThan(BIGINT, 1L));
  10. assertEquals(Range.lessThan(BIGINT, 1L).span(Range.lessThanOrEqual(BIGINT, 1L)), Range.lessThanOrEqual(BIGINT, 1L));
  11. assertEquals(Range.all(BIGINT).span(Range.lessThanOrEqual(BIGINT, 1L)), Range.all(BIGINT));
  12. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testRange()
  3. {
  4. Range range = Range.range(BIGINT, 0L, false, 2L, true);
  5. assertEquals(range.getLow(), Marker.above(BIGINT, 0L));
  6. assertEquals(range.getHigh(), Marker.exactly(BIGINT, 2L));
  7. assertFalse(range.isSingleValue());
  8. assertFalse(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertFalse(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertFalse(range.includes(Marker.exactly(BIGINT, 0L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 1L)));
  13. assertTrue(range.includes(Marker.exactly(BIGINT, 2L)));
  14. assertFalse(range.includes(Marker.exactly(BIGINT, 3L)));
  15. assertFalse(range.includes(Marker.upperUnbounded(BIGINT)));
  16. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testGreaterThanOrEqualRange()
  3. {
  4. Range range = Range.greaterThanOrEqual(BIGINT, 1L);
  5. assertEquals(range.getLow(), Marker.exactly(BIGINT, 1L));
  6. assertEquals(range.getHigh(), Marker.upperUnbounded(BIGINT));
  7. assertFalse(range.isSingleValue());
  8. assertFalse(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertFalse(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertFalse(range.includes(Marker.exactly(BIGINT, 0L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 1L)));
  13. assertTrue(range.includes(Marker.exactly(BIGINT, 2L)));
  14. assertTrue(range.includes(Marker.upperUnbounded(BIGINT)));
  15. }

代码示例来源:origin: prestosql/presto

  1. @Test
  2. public void testEqualRange()
  3. {
  4. Range range = Range.equal(BIGINT, 1L);
  5. assertEquals(range.getLow(), Marker.exactly(BIGINT, 1L));
  6. assertEquals(range.getHigh(), Marker.exactly(BIGINT, 1L));
  7. assertTrue(range.isSingleValue());
  8. assertFalse(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertFalse(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertFalse(range.includes(Marker.exactly(BIGINT, 0L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 1L)));
  13. assertFalse(range.includes(Marker.exactly(BIGINT, 2L)));
  14. assertFalse(range.includes(Marker.upperUnbounded(BIGINT)));
  15. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testLessThanOrEqualRange()
  3. {
  4. Range range = Range.lessThanOrEqual(BIGINT, 1L);
  5. assertEquals(range.getLow(), Marker.lowerUnbounded(BIGINT));
  6. assertEquals(range.getHigh(), Marker.exactly(BIGINT, 1L));
  7. assertFalse(range.isSingleValue());
  8. assertFalse(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertTrue(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertFalse(range.includes(Marker.exactly(BIGINT, 2L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 1L)));
  13. assertTrue(range.includes(Marker.exactly(BIGINT, 0L)));
  14. assertFalse(range.includes(Marker.upperUnbounded(BIGINT)));
  15. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testLessThanRange()
  3. {
  4. Range range = Range.lessThan(BIGINT, 1L);
  5. assertEquals(range.getLow(), Marker.lowerUnbounded(BIGINT));
  6. assertEquals(range.getHigh(), Marker.below(BIGINT, 1L));
  7. assertFalse(range.isSingleValue());
  8. assertFalse(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertTrue(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertFalse(range.includes(Marker.exactly(BIGINT, 1L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 0L)));
  13. assertFalse(range.includes(Marker.upperUnbounded(BIGINT)));
  14. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testOverlaps()
  3. {
  4. assertTrue(Range.greaterThan(BIGINT, 1L).overlaps(Range.lessThanOrEqual(BIGINT, 2L)));
  5. assertFalse(Range.greaterThan(BIGINT, 2L).overlaps(Range.lessThan(BIGINT, 2L)));
  6. assertTrue(Range.range(BIGINT, 1L, true, 3L, false).overlaps(Range.equal(BIGINT, 2L)));
  7. assertTrue(Range.range(BIGINT, 1L, true, 3L, false).overlaps(Range.range(BIGINT, 2L, false, 10L, false)));
  8. assertFalse(Range.range(BIGINT, 1L, true, 3L, false).overlaps(Range.range(BIGINT, 3L, true, 10L, false)));
  9. assertTrue(Range.range(BIGINT, 1L, true, 3L, true).overlaps(Range.range(BIGINT, 3L, true, 10L, false)));
  10. assertTrue(Range.all(BIGINT).overlaps(Range.equal(BIGINT, Long.MAX_VALUE)));
  11. }

代码示例来源:origin: prestosql/presto

  1. @Test
  2. public void testGreaterThanRange()
  3. {
  4. Range range = Range.greaterThan(BIGINT, 1L);
  5. assertEquals(range.getLow(), Marker.above(BIGINT, 1L));
  6. assertEquals(range.getHigh(), Marker.upperUnbounded(BIGINT));
  7. assertFalse(range.isSingleValue());
  8. assertFalse(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertFalse(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertFalse(range.includes(Marker.exactly(BIGINT, 1L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 2L)));
  13. assertTrue(range.includes(Marker.upperUnbounded(BIGINT)));
  14. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testAllRange()
  3. {
  4. Range range = Range.all(BIGINT);
  5. assertEquals(range.getLow(), Marker.lowerUnbounded(BIGINT));
  6. assertEquals(range.getHigh(), Marker.upperUnbounded(BIGINT));
  7. assertFalse(range.isSingleValue());
  8. assertTrue(range.isAll());
  9. assertEquals(range.getType(), BIGINT);
  10. assertTrue(range.includes(Marker.lowerUnbounded(BIGINT)));
  11. assertTrue(range.includes(Marker.below(BIGINT, 1L)));
  12. assertTrue(range.includes(Marker.exactly(BIGINT, 1L)));
  13. assertTrue(range.includes(Marker.above(BIGINT, 1L)));
  14. assertTrue(range.includes(Marker.upperUnbounded(BIGINT)));
  15. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testIntersect()
  3. {
  4. assertEquals(Range.greaterThan(BIGINT, 1L).intersect(Range.lessThanOrEqual(BIGINT, 2L)), Range.range(BIGINT, 1L, false, 2L, true));
  5. assertEquals(Range.range(BIGINT, 1L, true, 3L, false).intersect(Range.equal(BIGINT, 2L)), Range.equal(BIGINT, 2L));
  6. assertEquals(Range.range(BIGINT, 1L, true, 3L, false).intersect(Range.range(BIGINT, 2L, false, 10L, false)), Range.range(BIGINT, 2L, false, 3L, false));
  7. assertEquals(Range.range(BIGINT, 1L, true, 3L, true).intersect(Range.range(BIGINT, 3L, true, 10L, false)), Range.equal(BIGINT, 3L));
  8. assertEquals(Range.all(BIGINT).intersect(Range.equal(BIGINT, Long.MAX_VALUE)), Range.equal(BIGINT, Long.MAX_VALUE));
  9. }

代码示例来源:origin: io.prestosql/presto-hive

  1. @Test
  2. public void testNotPushDoublePredicates()
  3. {
  4. IonSqlQueryBuilder queryBuilder = new IonSqlQueryBuilder(new TypeRegistry());
  5. List<HiveColumnHandle> columns = ImmutableList.of(
  6. new HiveColumnHandle("quantity", HIVE_INT, parseTypeSignature(INTEGER), 0, REGULAR, Optional.empty()),
  7. new HiveColumnHandle("extendedprice", HIVE_DOUBLE, parseTypeSignature(StandardTypes.DOUBLE), 1, REGULAR, Optional.empty()),
  8. new HiveColumnHandle("discount", HIVE_DOUBLE, parseTypeSignature(StandardTypes.DOUBLE), 2, REGULAR, Optional.empty()));
  9. TupleDomain<HiveColumnHandle> tupleDomain = withColumnDomains(
  10. ImmutableMap.of(
  11. columns.get(0), Domain.create(ofRanges(Range.lessThan(BIGINT, 50L)), false),
  12. columns.get(1), Domain.create(ofRanges(Range.equal(DOUBLE, 0.05)), false),
  13. columns.get(2), Domain.create(ofRanges(Range.range(DOUBLE, 0.0, true, 0.02, true)), false)));
  14. assertEquals("SELECT s._1, s._2, s._3 FROM S3Object s WHERE ((case s._1 when '' then null else CAST(s._1 AS INT) end < 50))",
  15. queryBuilder.buildSql(columns, tupleDomain));
  16. }
  17. }

代码示例来源:origin: io.prestosql/presto-main

  1. @Test
  2. public void testRoundTrip()
  3. {
  4. TupleDomain<Symbol> tupleDomain = withColumnDomains(ImmutableMap.<Symbol, Domain>builder()
  5. .put(C_BIGINT, Domain.singleValue(BIGINT, 1L))
  6. .put(C_DOUBLE, Domain.onlyNull(DOUBLE))
  7. .put(C_VARCHAR, Domain.notNull(VARCHAR))
  8. .put(C_BOOLEAN, Domain.singleValue(BOOLEAN, true))
  9. .put(C_BIGINT_1, Domain.singleValue(BIGINT, 2L))
  10. .put(C_DOUBLE_1, Domain.create(ValueSet.ofRanges(Range.lessThanOrEqual(DOUBLE, 1.1), Range.equal(DOUBLE, 2.0), Range.range(DOUBLE, 3.0, false, 3.5, true)), true))
  11. .put(C_VARCHAR_1, Domain.create(ValueSet.ofRanges(Range.lessThanOrEqual(VARCHAR, utf8Slice("2013-01-01")), Range.greaterThan(VARCHAR, utf8Slice("2013-10-01"))), false))
  12. .put(C_TIMESTAMP, Domain.singleValue(TIMESTAMP, TIMESTAMP_VALUE))
  13. .put(C_DATE, Domain.singleValue(DATE, DATE_VALUE))
  14. .put(C_COLOR, Domain.singleValue(COLOR, COLOR_VALUE_1))
  15. .put(C_HYPER_LOG_LOG, Domain.notNull(HYPER_LOG_LOG))
  16. .build());
  17. assertPredicateTranslates(toPredicate(tupleDomain), tupleDomain);
  18. }

代码示例来源:origin: io.prestosql/presto-spi

  1. @Test
  2. public void testExceptionalIntersect()
  3. {
  4. try {
  5. Range.greaterThan(BIGINT, 2L).intersect(Range.lessThan(BIGINT, 2L));
  6. fail();
  7. }
  8. catch (IllegalArgumentException e) {
  9. }
  10. try {
  11. Range.range(BIGINT, 1L, true, 3L, false).intersect(Range.range(BIGINT, 3L, true, 10L, false));
  12. fail();
  13. }
  14. catch (IllegalArgumentException e) {
  15. }
  16. }

代码示例来源:origin: io.prestosql/presto-main

  1. if (range.isAll()) {
  2. return TRUE_LITERAL;
  3. return new BetweenPredicate(reference, literalEncoder.toExpression(range.getLow().getValue(), type), literalEncoder.toExpression(range.getHigh().getValue(), type));
  4. if (!range.getLow().isLowerUnbounded()) {
  5. switch (range.getLow().getBound()) {
  6. case ABOVE:
  7. rangeConjuncts.add(new ComparisonExpression(GREATER_THAN, reference, literalEncoder.toExpression(range.getLow().getValue(), type)));
  8. break;
  9. case EXACTLY:
  10. rangeConjuncts.add(new ComparisonExpression(GREATER_THAN_OR_EQUAL, reference, literalEncoder.toExpression(range.getLow().getValue(),
  11. type)));
  12. break;
  13. throw new IllegalStateException("Low Marker should never use BELOW bound: " + range);
  14. default:
  15. throw new AssertionError("Unhandled bound: " + range.getLow().getBound());
  16. if (!range.getHigh().isUpperUnbounded()) {
  17. switch (range.getHigh().getBound()) {
  18. case ABOVE:
  19. throw new IllegalStateException("High Marker should never use ABOVE bound: " + range);
  20. case EXACTLY:
  21. rangeConjuncts.add(new ComparisonExpression(LESS_THAN_OR_EQUAL, reference, literalEncoder.toExpression(range.getHigh().getValue(), type)));
  22. break;
  23. case BELOW:
  24. rangeConjuncts.add(new ComparisonExpression(LESS_THAN, reference, literalEncoder.toExpression(range.getHigh().getValue(), type)));
  25. break;

相关文章