Interface PagingChunkSource<ATTR extends Any>

All Superinterfaces:
ChunkSource<ATTR>, DefaultChunkSource<ATTR>, FillContextMaker, GetContextMaker
All Known Subinterfaces:
ChunkPage<ATTR>, ColumnRegion<ATTR>, ColumnRegionByte<ATTR>, ColumnRegionChar<ATTR>, ColumnRegionDouble<ATTR>, ColumnRegionFloat<ATTR>, ColumnRegionInt<ATTR>, ColumnRegionLong<ATTR>, ColumnRegionObject<DATA_TYPE,ATTR>, ColumnRegionObject.SelfDictionaryRegion<DATA_TYPE,ATTR>, ColumnRegionReferencing<ATTR,REFERENCED_COLUMN_REGION>, ColumnRegionShort<ATTR>, Page<ATTR>, Page.WithDefaults<ATTR>, Page.WithDefaultsForRepeatingValues<ATTR>, PageStore<ATTR,INNER_ATTR,PAGE>, RegionedPageStore<ATTR,INNER_ATTR,REGION_TYPE>
All Known Implementing Classes:
AppendOnlyFixedSizePageRegionByte, AppendOnlyFixedSizePageRegionChar, AppendOnlyFixedSizePageRegionDouble, AppendOnlyFixedSizePageRegionFloat, AppendOnlyFixedSizePageRegionInt, AppendOnlyFixedSizePageRegionLong, AppendOnlyFixedSizePageRegionObject, AppendOnlyFixedSizePageRegionShort, BooleanChunkPage, ByteChunkPage, CharChunkPage, ChunkHolderPageBoolean, ChunkHolderPageByte, ChunkHolderPageChar, ChunkHolderPageDouble, ChunkHolderPageFloat, ChunkHolderPageInt, ChunkHolderPageLong, ChunkHolderPageObject, ChunkHolderPageShort, ColumnChunkPageStore, ColumnRegion.Null, ColumnRegionByte.Constant, ColumnRegionByte.Null, ColumnRegionByte.StaticPageStore, ColumnRegionChar.Constant, ColumnRegionChar.Null, ColumnRegionChar.StaticPageStore, ColumnRegionChunkDictionary, ColumnRegionDouble.Constant, ColumnRegionDouble.Null, ColumnRegionDouble.StaticPageStore, ColumnRegionFloat.Constant, ColumnRegionFloat.Null, ColumnRegionFloat.StaticPageStore, ColumnRegionInt.Constant, ColumnRegionInt.Null, ColumnRegionInt.StaticPageStore, ColumnRegionLong.Constant, ColumnRegionLong.Null, ColumnRegionLong.StaticPageStore, ColumnRegionObject.Constant, ColumnRegionObject.DictionaryKeysWrapper, ColumnRegionObject.Null, ColumnRegionObject.StaticPageStore, ColumnRegionReferencing.Null, ColumnRegionReferencingImpl, ColumnRegionShort.Constant, ColumnRegionShort.Null, ColumnRegionShort.StaticPageStore, DeferredColumnRegionBase, DeferredColumnRegionChar, DeferredColumnRegionDouble, DeferredColumnRegionFloat, DeferredColumnRegionInt, DeferredColumnRegionLong, DeferredColumnRegionObject, DeferredColumnRegionReferencing, DeferredColumnRegionShort, DoubleChunkPage, FloatChunkPage, GenericColumnRegionBase, IntChunkPage, LongChunkPage, ObjectChunkPage, ParquetColumnRegionBase, ParquetColumnRegionByte, ParquetColumnRegionChar, ParquetColumnRegionDouble, ParquetColumnRegionFloat, ParquetColumnRegionInt, ParquetColumnRegionLong, ParquetColumnRegionObject, ParquetColumnRegionShort, RegionedPageStore.Static, ShortChunkPage

public interface PagingChunkSource<ATTR extends Any> extends DefaultChunkSource<ATTR>
In order to be able to cache and reuse ChunkSources across multiple tables (or other references), PagingChunkSource adds a mask() to ChunkSource and supports some additional ChunkSource.fillChunk(io.deephaven.engine.table.ChunkSource.FillContext, io.deephaven.chunk.WritableChunk<? super ATTR>, io.deephaven.engine.rowset.RowSequence) methods.

The mask is a bitmask of the lower order bits of the row keys in a RowSequence, which specifies the bits from the RowSequence which will be used to uniquely specify the offsets into the ChunkSource elements on calls to ChunkSource.fillChunk(io.deephaven.engine.table.ChunkSource.FillContext, io.deephaven.chunk.WritableChunk<? super ATTR>, io.deephaven.engine.rowset.RowSequence) and DefaultChunkSource.getChunk(io.deephaven.engine.table.ChunkSource.GetContext, io.deephaven.engine.rowset.RowSequence).

Also, a new method fillChunkAppend(FillContext, WritableChunk, RowSequence.Iterator) is added, which supports filling a chunk incrementally across a series of pages.

In order to support arbitrary nesting and re-use of PagingChunkSource implementations, it is required that all implementations use or extend DefaultGetContext and PagingContextHolder as their GetContext and FillContext, respectively. Nested implementations may thus store their own state via the inner context, using sub-classes of PagingContextHolder to support chaining of nested state.