public class CachingMetadataIndex extends CacheOnceMetadataIndex
| Constructor and Description |
|---|
CachingMetadataIndex(AbstractScaleOutFederation<?> fed,
String name,
long timestamp,
MetadataIndex.MetadataIndexMetadata mdmd)
Cache the index partition metadata in the client.
|
| Modifier and Type | Method and Description |
|---|---|
PartitionLocator |
find(byte[] key)
Find and return the partition spanning the given key.
|
PartitionLocator |
get(byte[] key)
The partition with that separator key or
null (exact match
on the separator key). |
long |
rangeCount()
Return the #of tuples in the index.
|
long |
rangeCount(byte[] fromKey,
byte[] toKey)
Return the #of tuples in a half-open key range.
|
long |
rangeCountExact(byte[] fromKey,
byte[] toKey)
Return the exact #of tuples in a half-open key range.
|
ITupleIterator |
rangeIterator()
Visits all tuples in key order.
|
ITupleIterator |
rangeIterator(byte[] fromKey,
byte[] toKey)
Return an iterator that visits the entries in a half-open key range.
|
ITupleIterator |
rangeIterator(byte[] fromKey,
byte[] toKey,
int capacity,
int flags,
IFilter filter)
FIXME this is wrong.
|
void |
staleLocator(PartitionLocator locator)
Re-fetches the locator(s).
|
cacheLocators, getIndexMetadata, getScaleOutIndexMetadata, rangeCountExactWithDeleted, toStringpublic CachingMetadataIndex(AbstractScaleOutFederation<?> fed, String name, long timestamp, MetadataIndex.MetadataIndexMetadata mdmd)
name - The name of the scale-out index.public void staleLocator(PartitionLocator locator)
staleLocator in interface IMetadataIndexstaleLocator in class CacheOnceMetadataIndexlocator - The locator.public PartitionLocator get(byte[] key)
IMetadataIndexnull (exact match
on the separator key).get in interface IMetadataIndexget in class CacheOnceMetadataIndexkey - The separator key (the first key that would go into that
partition).null.public PartitionLocator find(byte[] key)
IMetadataIndexfind in interface IMetadataIndexfind in class CacheOnceMetadataIndexkey - A key (optional). When null the locator for the
last index partition will be returned.null if
there are no partitions defined.public long rangeCount()
IRangeQueryNote: If the index supports deletion markers then the range count will be an upper bound and may double count tuples which have been overwritten, including the special case where the overwrite is a delete.
rangeCount in interface IRangeQueryrangeCount in class CacheOnceMetadataIndexISimpleIndexAccess.rangeCount()public long rangeCount(byte[] fromKey,
byte[] toKey)
IRangeQueryNote: If the index supports deletion markers then the range count will be an upper bound and may double count tuples which have been overwritten, including the special case where the overwrite is a delete.
rangeCount in interface IRangeQueryrangeCount in class CacheOnceMetadataIndexfromKey - The lowest key that will be counted (inclusive). When
null there is no lower bound.toKey - The first key that will not be counted (exclusive). When
null there is no upper bound.public long rangeCountExact(byte[] fromKey,
byte[] toKey)
IRangeQueryNote: If the index supports deletion markers then this operation will require a key-range scan.
rangeCountExact in interface IRangeQueryrangeCountExact in class CacheOnceMetadataIndexfromKey - The lowest key that will be counted (inclusive). When
null there is no lower bound.toKey - The first key that will not be counted (exclusive). When
null there is no upper bound.public ITupleIterator rangeIterator()
IRangeQueryrangeIterator(null, null)
rangeIterator in interface IRangeQueryrangeIterator in class CacheOnceMetadataIndexpublic ITupleIterator rangeIterator(byte[] fromKey, byte[] toKey)
IRangeQueryrangeIterator in interface IRangeQueryrangeIterator in class CacheOnceMetadataIndexfromKey - The first key that will be visited (inclusive lower bound).
When null there is no lower bound.toKey - The first key that will NOT be visited (exclusive upper
bound). When null there is no upper bound.SuccessorUtil, which may be used to compute the successor of a value
before encoding it as a component of a key.,
BytesUtil#successor(byte[]), which may be used to compute the
successor of an encoded key.,
EntryFilter, which may be used to filter the entries visited by the
iterator.public ITupleIterator rangeIterator(byte[] fromKey, byte[] toKey, int capacity, int flags, IFilter filter)
delegate must be a
UnisolatedReadWriteIndex in order to provide correct locking for
the iterator. The class may have to be refactored in order to permit the
behavior to be gated by an UnisolatedReadWriteIndex.rangeIterator in interface IRangeQueryrangeIterator in class CacheOnceMetadataIndexfromKey - The first key that will be visited (inclusive lower bound).
When null there is no lower bound.toKey - The first key that will NOT be visited (exclusive upper
bound). When null there is no upper bound.capacity - The #of entries to buffer at a time. This is a hint and MAY be
zero (0) to use an implementation specific default
capacity. A non-zero value may be used if you know that you
want at most N results or if you want to override the default
#of results to be buffered before sending them across a
network interface. (Note that you can control the default
value using
IBigdataClient.Options#DEFAULT_CLIENT_RANGE_QUERY_CAPACITY).flags - A bitwise OR of IRangeQuery.KEYS, IRangeQuery.VALS, etc.filter - An optional object used to construct a stacked iterator. When
IRangeQuery.CURSOR is specified in flags, the base
iterator will implement ITupleCursor and the first
filter in the stack can safely cast the source iterator to an
ITupleCursor. If the outermost filter in the stack
does not implement ITupleIterator, then it will be
wrapped an ITupleIterator.SuccessorUtil, which may be used to compute the successor of a value
before encoding it as a component of a key.,
BytesUtil#successor(byte[]), which may be used to compute the
successor of an encoded key.,
IFilterConstructor, which may be used to construct an iterator stack
performing filtering or other operations.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.