public class DefaultIndexTable extends AbstractIndexTable implements ITableWriterGeneric
EXPERIMENTAL. This class or interface has been added as part of a work in progress. There is no guarantee that this API will work or that it will remain the same.
AbstractIndexTable.ColumnBoundListeners, AbstractIndexTable.GenericBoundListeners, AbstractIndexTable.IListenersWithSameMask, AbstractIndexTable.UniversalListeners
ITableWriterGeneric.Nop, ITableWriterGeneric.Table
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<TupleMask,MaskedTupleMemory> |
indexMemories |
protected IMemory<Tuple> |
rows |
emitNotifications, emptyMask, emptyTuple, listenerGroups, tableContext
Constructor and Description |
---|
DefaultIndexTable(IInputKey inputKey,
ITableContext tableContext,
boolean unique) |
Modifier and Type | Method and Description |
---|---|
boolean |
containsTuple(ITuple seed)
Simpler form of
IIndexTable.enumerateTuples(TupleMask, ITuple) in the case where all values of the tuples are bound
by the seed. |
int |
countTuples(TupleMask seedMask,
ITuple seed)
Returns the number of tuples, optionally seeded with the given tuple.
|
java.lang.Iterable<Tuple> |
enumerateTuples(TupleMask seedMask,
ITuple seed)
Returns the tuples, optionally seeded with the given tuple.
|
java.util.Optional<java.lang.Long> |
estimateProjectionSize(TupleMask groupMask,
Accuracy requiredAccuracy)
Gives an estimate of the number of different groups the tuples of the table are projected into by the given mask
(e.g.
|
java.util.stream.Stream<? extends Tuple> |
streamTuples(TupleMask seedMask,
ITuple seed)
Returns the tuples, optionally seeded with the given tuple.
|
java.util.stream.Stream<? extends java.lang.Object> |
streamValues(TupleMask seedMask,
ITuple seed)
Simpler form of
IIndexTable.enumerateTuples(TupleMask, ITuple) in the case where all values of the tuples are bound
by the seed except for one. |
void |
write(Direction direction,
Tuple row)
Adds/removes a row to/from the table.
|
addUpdateListener, deliverChangeNotifications, getInputKey, getListenerGroup, logError, removeUpdateListener, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
enumerateValues
protected java.util.Map<TupleMask,MaskedTupleMemory> indexMemories
public DefaultIndexTable(IInputKey inputKey, ITableContext tableContext, boolean unique)
unique
- client promises to only insert a given tuple with multiplicity onepublic void write(Direction direction, Tuple row)
ITableWriterGeneric
write
in interface ITableWriterGeneric
direction
- tells whether putting a row into the table or deleting TODO: store as multiset, return bool?public boolean containsTuple(ITuple seed)
IIndexTable
IIndexTable.enumerateTuples(TupleMask, ITuple)
in the case where all values of the tuples are bound
by the seed.
Returns whether the given tuple is in the table identified by the input key.
containsTuple
in interface IIndexTable
seed
- a row tuple of fixed values whose presence in the table is queriedpublic int countTuples(TupleMask seedMask, ITuple seed)
IIndexTable
Selects the tuples in the table, optionally seeded with the given tuple, and then returns their number.
countTuples
in interface IIndexTable
seedMask
- a mask that extracts those parameters of the input key (from the entire parameter list) that should be
bound to a fixed value; must not be null. Note: any given index must occur at most
once in seedMask.seed
- the tuple of fixed values restricting the row set to be considered, in the same order as given in
parameterSeedMask, so that for each considered row tuple,
projectedParameterSeed.equals(parameterSeedMask.transform(row)) should hold. Must not be null.public java.util.Optional<java.lang.Long> estimateProjectionSize(TupleMask groupMask, Accuracy requiredAccuracy)
IIndexTable
Derived tables may return Optional.empty()
if it would be costly to provide an answer up to the required precision.
Direct storage tables are expected to always be able to give an exact count.
PRE: TupleMask.isNonrepeating()
must hold for the group mask.
estimateProjectionSize
in interface IIndexTable
public java.lang.Iterable<Tuple> enumerateTuples(TupleMask seedMask, ITuple seed)
IIndexTable
Consider using the more idiomatic IIndexTable.streamTuples(TupleMask, ITuple)
instead.
enumerateTuples
in interface IIndexTable
seedMask
- a mask that extracts those parameters of the input key (from the entire parameter list) that should be
bound to a fixed value; must not be null. Note: any given index must occur at most
once in seedMask.seed
- the tuple of fixed values restricting the row set to be considered, in the same order as given in
parameterSeedMask, so that for each considered row tuple,
projectedParameterSeed.equals(parameterSeedMask.transform(row)) should hold. Must not be null.public java.util.stream.Stream<? extends Tuple> streamTuples(TupleMask seedMask, ITuple seed)
IIndexTable
streamTuples
in interface IIndexTable
seedMask
- a mask that extracts those parameters of the input key (from the entire parameter list) that should be
bound to a fixed value; must not be null. Note: any given index must occur at most
once in seedMask.seed
- the tuple of fixed values restricting the row set to be considered, in the same order as given in
parameterSeedMask, so that for each considered row tuple,
projectedParameterSeed.equals(parameterSeedMask.transform(row)) should hold. Must not be null.public java.util.stream.Stream<? extends java.lang.Object> streamValues(TupleMask seedMask, ITuple seed)
IIndexTable
IIndexTable.enumerateTuples(TupleMask, ITuple)
in the case where all values of the tuples are bound
by the seed except for one.
Selects the tuples in the table, optionally seeded with the given tuple, and then returns the single value from each tuple which is not bound by the seed mask.
streamValues
in interface IIndexTable
seedMask
- a mask that extracts those parameters of the input key (from the entire parameter list) that should be
bound to a fixed value; must not be null. Note: any given index must occur at most
once in seedMask, and seedMask must include all parameters in any arbitrary order except one.seed
- the tuple of fixed values restricting the row set to be considered, in the same order as given in
parameterSeedMask, so that for each considered row tuple,
projectedParameterSeed.equals(parameterSeedMask.transform(row)) should hold. Must not be null.