Class TimestampedRangeQuery<K,V>

java.lang.Object
org.apache.kafka.streams.query.TimestampedRangeQuery<K,V>
Type Parameters:
K - Type of keys
V - Type of values
All Implemented Interfaces:
Query<KeyValueIterator<K,ValueAndTimestamp<V>>>

@Evolving public final class TimestampedRangeQuery<K,V> extends Object implements Query<KeyValueIterator<K,ValueAndTimestamp<V>>>
Interactive query for issuing range queries and scans over TimestampedKeyValueStore

A range query retrieves a set of records, specified using an upper and/or lower bound on the keys.

A scan query retrieves all records contained in the store.

Keys' order is based on the serialized byte[] of the keys, not the 'logical' key order.

  • Method Details

    • withRange

      public static <K, V> TimestampedRangeQuery<K,V> withRange(K lower, K upper)
      Interactive range query using a lower and upper bound to filter the keys returned.
      Type Parameters:
      K - The key type
      V - The value type
      Parameters:
      lower - The key that specifies the lower bound of the range
      upper - The key that specifies the upper bound of the range
    • withUpperBound

      public static <K, V> TimestampedRangeQuery<K,V> withUpperBound(K upper)
      Interactive range query using an upper bound to filter the keys returned. If both <K,V> are null, RangQuery returns a full range scan.
      Type Parameters:
      K - The key type
      V - The value type
      Parameters:
      upper - The key that specifies the upper bound of the range
    • withLowerBound

      public static <K, V> TimestampedRangeQuery<K,V> withLowerBound(K lower)
      Interactive range query using a lower bound to filter the keys returned.
      Type Parameters:
      K - The key type
      V - The value type
      Parameters:
      lower - The key that specifies the lower bound of the range
    • resultOrder

      public ResultOrder resultOrder()
      Determines if the serialized byte[] of the keys in ascending or descending or unordered order. Order is based on the serialized byte[] of the keys, not the 'logical' key order.
      Returns:
      return the order of return records base on the serialized byte[] of the keys (can be unordered, or in ascending, or in descending order).
    • withDescendingKeys

      public TimestampedRangeQuery<K,V> withDescendingKeys()
      Set the query to return the serialized byte[] of the keys in descending order. Order is based on the serialized byte[] of the keys, not the 'logical' key order.
      Returns:
      a new RangeQuery instance with descending flag set.
    • withAscendingKeys

      public TimestampedRangeQuery<K,V> withAscendingKeys()
      Set the query to return the serialized byte[] of the keys in ascending order. Order is based on the serialized byte[] of the keys, not the 'logical' key order.
      Returns:
      a new RangeQuery instance with ascending flag set.
    • withNoBounds

      public static <K, V> TimestampedRangeQuery<K,V> withNoBounds()
      Interactive scan query that returns all records in the store.
      Type Parameters:
      K - The key type
      V - The value type
    • lowerBound

      public Optional<K> lowerBound()
      The lower bound of the query, if specified.
    • upperBound

      public Optional<K> upperBound()
      The upper bound of the query, if specified