Class ArrayListSegment<RowType>
- All Implemented Interfaces:
Closeable,AutoCloseable,Segment
Segment that is based on a stream of objects.-
Constructor Summary
ConstructorsConstructorDescriptionArrayListSegment(ArrayList<RowType> rows, RowAdapter<RowType> rowAdapter, RowSignature rowSignature) Create a list-based segment. -
Method Summary
Methods inherited from class org.apache.druid.segment.RowBasedSegment
getDataInterval, getIdMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.druid.segment.Segment
getDebugString, isTombstone, validateOrElseThrow
-
Constructor Details
-
ArrayListSegment
public ArrayListSegment(ArrayList<RowType> rows, RowAdapter<RowType> rowAdapter, RowSignature rowSignature) Create a list-based segment.The provided List must be in time-order according to the provided
RowAdapter.timestampFunction(). The cursor returned byRowBasedCursorFactory.makeCursorHolder(CursorBuildSpec)makes no attempt to verify this, and callers will expect it.The provided "rowSignature" will be used for reporting available columns and their capabilities to users of
as(Class)forCursorFactory. Note that theColumnSelectorFactoryimplementation returned by this segment's cursor factory will allow creation of selectors on any field, using theRowAdapter.columnFunction(java.lang.String)for that field, even if it doesn't appear in "rowSignature".- Parameters:
rows- objects that comprise this segment. Must be re-iterable if support forCursor.reset()is required. Otherwise, does not need to be re-iterable.rowAdapter- adapter used for reading these objectsrowSignature- signature of the columns in these objects
-
-
Method Details
-
as
Description copied from interface:SegmentRequest an implementation of a particular interface.All implementations of this method should be able to provide a
CursorFactory. Other interfaces are only expected to be requested by callers that have specific knowledge of extra features provided by specific segment types. For example, an extension might provide a custom Segment type that can offer both CursorFactory and some new interface. That extension can also offer a Query that uses that new interface.Implementations which accept classes other than known built-in interfaces such as
CursorFactoryare limited to using those classes within the extension. This means that one extension cannot rely on the `Segment.as` behavior of another extension.- Specified by:
asin interfaceSegment- Overrides:
asin classRowBasedSegment<RowType>- Type Parameters:
T- desired interface- Parameters:
clazz- desired interface- Returns:
- instance of clazz, or null if the interface is not supported by this segment, one of the following:
-
CursorFactory, to make cursors to run queries. Never null. -
QueryableIndex, index object, if this is a memory-mapped regular segment. -
IndexedTable, table object, if this is a joinable indexed table. -
TimeBoundaryInspector, inspector for min/max timestamps, if supported by this segment. -
PhysicalSegmentInspector, inspector for physical segment details, if supported by this segment. -
MaxIngestedEventTimeInspector, inspector forDataSourceMetadataResultValue.getMaxIngestedEventTime() -
TopNOptimizationInspector, inspector containing information for topN specific optimizations -
CloseableShapeshifter, stepping stone toRowsAndColumns. -
BypassRestrictedSegment, a policy-aware segment, converted from a policy-enforced segment.
-
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classRowBasedSegment<RowType>
-