com.facebook.presto.spi.predicate.Range类的使用及代码示例

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

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

Range介绍

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

代码示例

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

@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)));
}

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

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

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

@Test
public void testGetSingleValue()
{
  assertEquals(Range.equal(BIGINT, 0L).getSingleValue(), 0L);
  try {
    Range.lessThan(BIGINT, 0L).getSingleValue();
    fail();
  }
  catch (IllegalStateException e) {
  }
}

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

public boolean overlaps(Range other)
{
  checkTypeCompatibility(other);
  return this.getLow().compareTo(other.getHigh()) <= 0 &&
      other.getLow().compareTo(this.getHigh()) <= 0;
}

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

public Range intersect(Range other)
{
  checkTypeCompatibility(other);
  if (!this.overlaps(other)) {
    throw new IllegalArgumentException("Cannot intersect non-overlapping ranges");
  }
  Marker lowMarker = Marker.max(low, other.getLow());
  Marker highMarker = Marker.min(high, other.getHigh());
  return new Range(lowMarker, highMarker);
}

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

private static <F, T extends Comparable<T>> Domain createDomain(Type type, boolean hasNullValue, RangeStatistics<F> rangeStatistics, Function<F, T> function)
{
  F min = rangeStatistics.getMin();
  F max = rangeStatistics.getMax();
  if (min != null && max != null) {
    return Domain.create(ValueSet.ofRanges(Range.range(type, function.apply(min), true, function.apply(max), true)), hasNullValue);
  }
  if (max != null) {
    return Domain.create(ValueSet.ofRanges(Range.lessThanOrEqual(type, function.apply(max))), hasNullValue);
  }
  if (min != null) {
    return Domain.create(ValueSet.ofRanges(Range.greaterThanOrEqual(type, function.apply(min))), hasNullValue);
  }
  return Domain.create(ValueSet.all(type), hasNullValue);
}

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

@Test
public void testBuildQueryIn()
{
  TupleDomain<ColumnHandle> tupleDomain = TupleDomain.withColumnDomains(ImmutableMap.of(
      COL2, Domain.create(ValueSet.ofRanges(equal(createUnboundedVarcharType(), utf8Slice("hello")), equal(createUnboundedVarcharType(), utf8Slice("world"))), false)));
  Document query = MongoSession.buildQuery(tupleDomain);
  Document expected = new Document(COL2.getName(), new Document("$in", ImmutableList.of("hello", "world")));
  assertEquals(query, expected);
}

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

@Test
public void testBuildQueryOr()
{
  TupleDomain<ColumnHandle> tupleDomain = TupleDomain.withColumnDomains(ImmutableMap.of(
      COL1, Domain.create(ValueSet.ofRanges(lessThan(BIGINT, 100L), greaterThan(BIGINT, 200L)), false)));
  Document query = MongoSession.buildQuery(tupleDomain);
  Document expected = new Document("$or", asList(
      new Document(COL1.getName(), new Document("$lt", 100L)),
      new Document(COL1.getName(), new Document("$gt", 200L))));
  assertEquals(query, expected);
}

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

@Test
public void testExtractFixedValues()
{
  assertEquals(
      TupleDomain.extractFixedValues(TupleDomain.withColumnDomains(
          ImmutableMap.<ColumnHandle, Domain>builder()
              .put(A, Domain.all(DOUBLE))
              .put(B, Domain.singleValue(VARCHAR, utf8Slice("value")))
              .put(C, Domain.onlyNull(BIGINT))
              .put(D, Domain.create(ValueSet.ofRanges(Range.equal(BIGINT, 1L)), true))
              .build())).get(),
      ImmutableMap.of(
          B, NullableValue.of(VARCHAR, utf8Slice("value")),
          C, NullableValue.asNull(BIGINT)));
}

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

@Test
public void testMismatchedColumnWiseUnion()
{
  TupleDomain<ColumnHandle> tupleDomain1 = TupleDomain.withColumnDomains(
      ImmutableMap.of(
          A, Domain.all(DOUBLE),
          B, Domain.singleValue(VARCHAR, utf8Slice("value"))));
  TupleDomain<ColumnHandle> tupleDomain2 = TupleDomain.withColumnDomains(
      ImmutableMap.of(
          A, Domain.create(ValueSet.ofRanges(Range.greaterThanOrEqual(DOUBLE, 0.0)), true),
          C, Domain.singleValue(BIGINT, 1L)));
  TupleDomain<ColumnHandle> expectedTupleDomain = TupleDomain.withColumnDomains(ImmutableMap.of(A, Domain.all(DOUBLE)));
  assertEquals(columnWiseUnion(tupleDomain1, tupleDomain2), expectedTupleDomain);
}

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

@Test
  public void testNotPushDoublePredicates()
  {
    IonSqlQueryBuilder queryBuilder = new IonSqlQueryBuilder(new TypeRegistry());
    List<HiveColumnHandle> columns = ImmutableList.of(
        new HiveColumnHandle("quantity", HIVE_INT, parseTypeSignature(INTEGER), 0, REGULAR, Optional.empty()),
        new HiveColumnHandle("extendedprice", HIVE_DOUBLE, parseTypeSignature(StandardTypes.DOUBLE), 1, REGULAR, Optional.empty()),
        new HiveColumnHandle("discount", HIVE_DOUBLE, parseTypeSignature(StandardTypes.DOUBLE), 2, REGULAR, Optional.empty()));
    TupleDomain<HiveColumnHandle> tupleDomain = withColumnDomains(
        ImmutableMap.of(
            columns.get(0), Domain.create(ofRanges(Range.lessThan(BIGINT, 50L)), false),
            columns.get(1), Domain.create(ofRanges(Range.equal(DOUBLE, 0.05)), false),
            columns.get(2), Domain.create(ofRanges(Range.range(DOUBLE, 0.0, true, 0.02, true)), false)));
    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))",
        queryBuilder.buildSql(columns, tupleDomain));
  }
}

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

@Test
public void testDouble()
    throws ParquetCorruptionException
{
  String column = "DoubleColumn";
  assertEquals(getDomain(DOUBLE, 0, null, ID, column, true), all(DOUBLE));
  assertEquals(getDomain(DOUBLE, 10, doubleColumnStats(42.24, 42.24), ID, column, true), singleValue(DOUBLE, 42.24));
  assertEquals(getDomain(DOUBLE, 10, doubleColumnStats(3.3, 42.24), ID, column, true), create(ValueSet.ofRanges(range(DOUBLE, 3.3, true, 42.24, true)), false));
  // ignore corrupted statistics
  assertEquals(getDomain(DOUBLE, 10, doubleColumnStats(42.24, 3.3), ID, column, false), create(ValueSet.all(DOUBLE), false));
  // fail on corrupted statistics
  assertThatExceptionOfType(ParquetCorruptionException.class)
      .isThrownBy(() -> getDomain(DOUBLE, 10, doubleColumnStats(42.24, 3.3), ID, column, true))
      .withMessage("Corrupted statistics for column \"DoubleColumn\" in Parquet file \"testFile\": [min: 42.24000, max: 3.30000, num_nulls: 0]");
}

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

@Test
public void testFloat()
{
  assertEquals(getDomain(REAL, 0, null), none(REAL));
  assertEquals(getDomain(REAL, 10, null), all(REAL));
  assertEquals(getDomain(REAL, 0, doubleColumnStats(null, null, null)), none(REAL));
  assertEquals(getDomain(REAL, 0, doubleColumnStats(0L, null, null)), none(REAL));
  assertEquals(getDomain(REAL, 0, doubleColumnStats(0L, (double) 42.24f, (double) 42.24f)), none(REAL));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(0L, null, null)), onlyNull(REAL));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(10L, null, null)), notNull(REAL));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(10L, (double) 42.24f, (double) 42.24f)), singleValue(REAL, (long) floatToRawIntBits(42.24f)));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(10L, 3.3, (double) 42.24f)), create(ValueSet.ofRanges(range(REAL, (long) floatToRawIntBits(3.3f), true, (long) floatToRawIntBits(42.24f), true)), false));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(10L, null, (double) 42.24f)), create(ValueSet.ofRanges(lessThanOrEqual(REAL, (long) floatToRawIntBits(42.24f))), false));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(10L, 3.3, null)), create(ValueSet.ofRanges(greaterThanOrEqual(REAL, (long) floatToRawIntBits(3.3f))), false));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(5L, 3.3, (double) 42.24f)), create(ValueSet.ofRanges(range(REAL, (long) floatToRawIntBits(3.3f), true, (long) floatToRawIntBits(42.24f), true)), true));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(5L, null, (double) 42.24f)), create(ValueSet.ofRanges(lessThanOrEqual(REAL, (long) floatToRawIntBits(42.24f))), true));
  assertEquals(getDomain(REAL, 10, doubleColumnStats(5L, 3.3, null)), create(ValueSet.ofRanges(greaterThanOrEqual(REAL, (long) floatToRawIntBits(3.3f))), true));
}

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

@Test
public void testBuildQueryStringType()
{
  TupleDomain<ColumnHandle> tupleDomain = TupleDomain.withColumnDomains(ImmutableMap.of(
      COL1, Domain.create(ValueSet.ofRanges(range(createUnboundedVarcharType(), utf8Slice("hello"), false, utf8Slice("world"), true)), false),
      COL2, Domain.create(ValueSet.ofRanges(greaterThanOrEqual(createUnboundedVarcharType(), utf8Slice("a value"))), false)));
  Document query = MongoSession.buildQuery(tupleDomain);
  Document expected = new Document()
      .append(COL1.getName(), new Document().append("$gt", "hello").append("$lte", "world"))
      .append(COL2.getName(), new Document("$gte", "a value"));
  assertEquals(query, expected);
}

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

@Test
public void testBuildQuery()
{
  TupleDomain<ColumnHandle> tupleDomain = TupleDomain.withColumnDomains(ImmutableMap.of(
      COL1, Domain.create(ValueSet.ofRanges(range(BIGINT, 100L, false, 200L, true)), false),
      COL2, Domain.singleValue(createUnboundedVarcharType(), utf8Slice("a value"))));
  Document query = MongoSession.buildQuery(tupleDomain);
  Document expected = new Document()
      .append(COL1.getName(), new Document().append("$gt", 100L).append("$lte", 200L))
      .append(COL2.getName(), new Document("$eq", "a value"));
  assertEquals(query, expected);
}

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

@Test
public void testToPredicate()
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.greaterThan(BIGINT, 1L)), false)));
  assertEquals(toPredicate(tupleDomain), greaterThan(C_BIGINT, bigintLiteral(1L)));
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.greaterThanOrEqual(BIGINT, 1L)), false)));
  assertEquals(toPredicate(tupleDomain), greaterThanOrEqual(C_BIGINT, bigintLiteral(1L)));
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.lessThan(BIGINT, 1L)), false)));
  assertEquals(toPredicate(tupleDomain), lessThan(C_BIGINT, bigintLiteral(1L)));
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.range(BIGINT, 0L, false, 1L, true)), false)));
  assertEquals(toPredicate(tupleDomain), and(greaterThan(C_BIGINT, bigintLiteral(0L)), lessThanOrEqual(C_BIGINT, bigintLiteral(1L))));
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.lessThanOrEqual(BIGINT, 1L)), false)));
  assertEquals(toPredicate(tupleDomain), lessThanOrEqual(C_BIGINT, bigintLiteral(1L)));
  assertEquals(toPredicate(tupleDomain), equal(C_BIGINT, bigintLiteral(1L)));
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.equal(BIGINT, 1L), Range.equal(BIGINT, 2L)), false)));
  assertEquals(toPredicate(tupleDomain), in(C_BIGINT, ImmutableList.of(1L, 2L)));
  tupleDomain = withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.lessThan(BIGINT, 1L)), true)));
  assertEquals(toPredicate(tupleDomain), or(lessThan(C_BIGINT, bigintLiteral(1L)), isNull(C_BIGINT)));

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

@Test
public void testFromAndPredicate()
{
  Expression originalPredicate = and(
      and(greaterThan(C_BIGINT, bigintLiteral(1L)), unprocessableExpression1(C_BIGINT)),
      and(lessThan(C_BIGINT, bigintLiteral(5L)), unprocessableExpression2(C_BIGINT)));
  ExtractionResult result = fromPredicate(originalPredicate);
  assertEquals(result.getRemainingExpression(), and(unprocessableExpression1(C_BIGINT), unprocessableExpression2(C_BIGINT)));
  assertEquals(result.getTupleDomain(), withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.create(ValueSet.ofRanges(Range.range(BIGINT, 1L, false, 5L, false)), false))));
  // Test complements
  assertUnsupportedPredicate(not(and(
      and(greaterThan(C_BIGINT, bigintLiteral(1L)), unprocessableExpression1(C_BIGINT)),
      and(lessThan(C_BIGINT, bigintLiteral(5L)), unprocessableExpression2(C_BIGINT)))));
  originalPredicate = not(and(
      not(and(greaterThan(C_BIGINT, bigintLiteral(1L)), unprocessableExpression1(C_BIGINT))),
      not(and(lessThan(C_BIGINT, bigintLiteral(5L)), unprocessableExpression2(C_BIGINT)))));
  result = fromPredicate(originalPredicate);
  assertEquals(result.getRemainingExpression(), originalPredicate);
  assertEquals(result.getTupleDomain(), withColumnDomains(ImmutableMap.of(C_BIGINT, Domain.notNull(BIGINT))));
}

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

@Test
public void testIntersection()
{
  TupleDomain<ColumnHandle> tupleDomain1 = TupleDomain.withColumnDomains(
      ImmutableMap.<ColumnHandle, Domain>builder()
          .put(A, Domain.all(VARCHAR))
          .put(B, Domain.notNull(DOUBLE))
          .put(C, Domain.singleValue(BIGINT, 1L))
          .put(D, Domain.create(ValueSet.ofRanges(Range.greaterThanOrEqual(DOUBLE, 0.0)), true))
          .build());
  TupleDomain<ColumnHandle> tupleDomain2 = TupleDomain.withColumnDomains(
      ImmutableMap.<ColumnHandle, Domain>builder()
          .put(A, Domain.singleValue(VARCHAR, utf8Slice("value")))
          .put(B, Domain.singleValue(DOUBLE, 0.0))
          .put(C, Domain.singleValue(BIGINT, 1L))
          .put(D, Domain.create(ValueSet.ofRanges(Range.lessThan(DOUBLE, 10.0)), false))
          .build());
  TupleDomain<ColumnHandle> expectedTupleDomain = TupleDomain.withColumnDomains(
      ImmutableMap.<ColumnHandle, Domain>builder()
          .put(A, Domain.singleValue(VARCHAR, utf8Slice("value")))
          .put(B, Domain.singleValue(DOUBLE, 0.0))
          .put(C, Domain.singleValue(BIGINT, 1L))
          .put(D, Domain.create(ValueSet.ofRanges(Range.range(DOUBLE, 0.0, true, 10.0, false)), false))
          .build());
  assertEquals(tupleDomain1.intersect(tupleDomain2), expectedTupleDomain);
}

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

@Test
public void testColumnWiseUnion()
{
  TupleDomain<ColumnHandle> tupleDomain1 = TupleDomain.withColumnDomains(
      ImmutableMap.<ColumnHandle, Domain>builder()
          .put(A, Domain.all(VARCHAR))
          .put(B, Domain.notNull(DOUBLE))
          .put(C, Domain.onlyNull(BIGINT))
          .put(D, Domain.singleValue(BIGINT, 1L))
          .put(E, Domain.create(ValueSet.ofRanges(Range.greaterThanOrEqual(DOUBLE, 0.0)), true))
          .build());
  TupleDomain<ColumnHandle> tupleDomain2 = TupleDomain.withColumnDomains(
      ImmutableMap.<ColumnHandle, Domain>builder()
          .put(A, Domain.singleValue(VARCHAR, utf8Slice("value")))
          .put(B, Domain.singleValue(DOUBLE, 0.0))
          .put(C, Domain.notNull(BIGINT))
          .put(D, Domain.singleValue(BIGINT, 1L))
          .put(E, Domain.create(ValueSet.ofRanges(Range.lessThan(DOUBLE, 10.0)), false))
          .build());
  TupleDomain<ColumnHandle> expectedTupleDomain = TupleDomain.withColumnDomains(
      ImmutableMap.<ColumnHandle, Domain>builder()
          .put(A, Domain.all(VARCHAR))
          .put(B, Domain.notNull(DOUBLE))
          .put(C, Domain.all(BIGINT))
          .put(D, Domain.singleValue(BIGINT, 1L))
          .put(E, Domain.all(DOUBLE))
          .build());
  assertEquals(columnWiseUnion(tupleDomain1, tupleDomain2), expectedTupleDomain);
}

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

@Test
public void testOrderableSingleValue()
{
  Domain domain = Domain.singleValue(BIGINT, 0L);
  assertFalse(domain.isNone());
  assertFalse(domain.isAll());
  assertTrue(domain.isSingleValue());
  assertTrue(domain.isNullableSingleValue());
  assertFalse(domain.isOnlyNull());
  assertFalse(domain.isNullAllowed());
  assertEquals(domain.getValues(), ValueSet.ofRanges(Range.equal(BIGINT, 0L)));
  assertEquals(domain.getType(), BIGINT);
  assertFalse(domain.includesNullableValue(Long.MIN_VALUE));
  assertTrue(domain.includesNullableValue(0L));
  assertFalse(domain.includesNullableValue(Long.MAX_VALUE));
  assertEquals(domain.complement(), Domain.create(ValueSet.ofRanges(Range.lessThan(BIGINT, 0L), Range.greaterThan(BIGINT, 0L)), true));
  assertEquals(domain.getSingleValue(), 0L);
  assertEquals(domain.getNullableSingleValue(), 0L);
  try {
    Domain.create(ValueSet.ofRanges(Range.range(BIGINT, 1L, true, 2L, true)), false).getSingleValue();
    fail();
  }
  catch (IllegalStateException e) {
  }
}

相关文章