public class EmptyAccessPath<E> extends Object implements IAccessPath<E>
Constructor and Description |
---|
EmptyAccessPath()
Ctor variant does not specify the
getPredicate() or the
getKeyOrder() and those methods will throw an
UnsupportedOperationException if invoked. |
EmptyAccessPath(IPredicate<E> predicate,
IKeyOrder<E> keyOrder)
Note: the
getPredicate() and getKeyOrder() and methods
will throw an UnsupportedOperationException if the corresponding
argument is null. |
Modifier and Type | Method and Description |
---|---|
IIndex |
getIndex()
The index selected for the access path.
|
IKeyOrder<E> |
getKeyOrder()
The order in which the elements will be visited.
|
IPredicate<E> |
getPredicate()
The constraints on the
IAccessPath . |
boolean |
isEmpty()
True iff the access path is empty (there are no matches for the
IPredicate ) This is more conclusive than #rangeCount()
since you MAY have a non-zero range count when the key range is in fact
empty (there may be "deleted" index entries within the key range). |
IChunkedOrderedIterator<E> |
iterator()
Visits nothing.
|
IChunkedOrderedIterator<E> |
iterator(long offset,
long limit,
int capacity)
Visits nothing.
|
long |
rangeCount(boolean exact)
Return the maximum #of elements spanned by the
IPredicate . |
long |
removeAll()
Does nothing and always returns ZERO(0).
|
public EmptyAccessPath()
getPredicate()
or the
getKeyOrder()
and those methods will throw an
UnsupportedOperationException
if invoked.public EmptyAccessPath(IPredicate<E> predicate, IKeyOrder<E> keyOrder)
getPredicate()
and getKeyOrder()
and methods
will throw an UnsupportedOperationException
if the corresponding
argument is null.predicate
- keyOrder
- public IPredicate<E> getPredicate()
IAccessPath
.getPredicate
in interface IAbstractAccessPath<E>
UnsupportedOperationException
- unless the caller specified an IPredicate
to the
ctor.public IKeyOrder<E> getKeyOrder()
getKeyOrder
in interface IAccessPath<E>
UnsupportedOperationException
- unless the caller specified an IKeyOrder
to the ctor.public IIndex getIndex()
Note: The access path may incorporate additional constraints from the
specified IPredicate
that are not present on the IIndex
returned by this method.
getIndex
in interface IAccessPath<E>
UnsupportedOperationException
- since no index was selected.public boolean isEmpty()
IPredicate
) This is more conclusive than #rangeCount()
since you MAY have a non-zero range count when the key range is in fact
empty (there may be "deleted" index entries within the key range).
Always returns true
.
isEmpty
in interface IAbstractAccessPath<E>
public long rangeCount(boolean exact)
IPredicate
.
Note: When there is an IFilter
on the IPredicate
the
exact range count MUST apply that IFilter
, which means that it
will be required to traverse the index counting tuples which pass the
IFilter
. However, IFilter
s are ignored for the fast
range count.
Always returns ZERO(0).
rangeCount
in interface IAbstractAccessPath<E>
exact
- When true
, the result will be an exact count and
may require a key-range scan. When false
, the
result will be an upper bound IFF delete markers are
provisioned for the backing index (delete markers are required
for transactions and for scale-out indices).IRangeQuery
public IChunkedOrderedIterator<E> iterator()
iterator
in interface IAccessPath<E>
IRelation.getAccessPath(IPredicate)
public IChunkedOrderedIterator<E> iterator(long offset, long limit, int capacity)
iterator
in interface IAccessPath<E>
offset
- The first element accepted by the iterator that it will visit
(materialize for the client). The offset must be non-negative.
This is ZERO (0L) to visit all accepted elements.limit
- The last element accepted by the iterator that it will visit
(materialize for the client). The limit must be non-negative.
This is ZERO (0L) to visit all accepted elements (the value
Long.MAX_VALUE
is interpreted exactly like ZERO(0L)).capacity
- The maximum capacity for the buffer used by the iterator. When
ZERO(0), a default capacity will be used. When a limit
is specified, the capacity will never exceed the limit.IAccessPath
. This way they
will be correctly applied when IAbstractAccessPath.isEmpty()
is implemented
using the IAccessPath.iterator()
to determine if any elements can be
visited.public long removeAll()
removeAll
in interface IAbstractAccessPath<E>
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.