public class InlineDataSource extends Object implements DataSource
The rows are backed by an Iterable, which can be lazy or not. Lazy datasources will only be iterated if someone calls
getRows()
and iterates the result, or until someone calls getRowsAsList()
.
Modifier and Type | Method and Description |
---|---|
Function<SegmentReference,SegmentReference> |
createSegmentMapFunction(Query query,
AtomicLong cpuTimeAcc)
Returns a segment function on to how to segment should be modified.
|
boolean |
equals(Object o) |
static InlineDataSource |
fromIterable(Iterable<Object[]> rows,
RowSignature signature)
Creates an inline datasource from an Iterable.
|
DataSourceAnalysis |
getAnalysis()
Get the analysis for a data source
|
byte[] |
getCacheKey()
Compute a cache key prefix for a data source.
|
List<DataSource> |
getChildren()
Returns datasources that this datasource depends on.
|
List<String> |
getColumnNames() |
List<ColumnType> |
getColumnTypes() |
Iterable<Object[]> |
getRows()
Returns rows as an Iterable.
|
List<Object[]> |
getRowsAsList()
Returns rows as a list.
|
RowSignature |
getRowSignature()
Returns the row signature (map of column name to type) for this inline datasource.
|
Set<String> |
getTableNames()
Returns the names of all table datasources involved in this query.
|
int |
hashCode() |
boolean |
isCacheable(boolean isBroker)
Returns true if queries on this dataSource are cacheable at both the result level and per-segment level.
|
boolean |
isConcrete()
Returns true if this datasource can be the base datasource of query processing.
|
boolean |
isGlobal()
Returns true if all servers have a full copy of this datasource.
|
RowAdapter<Object[]> |
rowAdapter() |
boolean |
rowsAreArrayList() |
String |
toString() |
DataSource |
withChildren(List<DataSource> children)
Return a new DataSource, identical to this one, with different children.
|
DataSource |
withUpdatedDataSource(DataSource newSource)
Returns an updated datasource based on the specified new source.
|
public static InlineDataSource fromIterable(Iterable<Object[]> rows, RowSignature signature)
getRows()
and iterates the result, or until someone calls getRowsAsList()
.rows
- rows, each of the same length as signature.size()
signature
- row signaturepublic Set<String> getTableNames()
DataSource
getTableNames
in interface DataSource
@Nullable public List<ColumnType> getColumnTypes()
public List<Object[]> getRowsAsList()
public boolean rowsAreArrayList()
public List<DataSource> getChildren()
DataSource
getChildren
in interface DataSource
public DataSource withChildren(List<DataSource> children)
DataSource
withChildren
in interface DataSource
public boolean isCacheable(boolean isBroker)
DataSource
isCacheable
in interface DataSource
public boolean isGlobal()
DataSource
Currently this is coupled with joinability - if this returns true then the query engine expects there exists a
JoinableFactory
which might build a
Joinable
for this datasource directly. If a subquery 'inline' join is
required to join this datasource on the right hand side, then this value must be false for now.
In the future, instead of directly using this method, the query planner and engine should consider
JoinableFactory.isDirectlyJoinable(DataSource)
when determining if the
right hand side is directly joinable, which would allow decoupling this property from joins.
isGlobal
in interface DataSource
public boolean isConcrete()
DataSource
TableDataSource
, for example, queries
are processed in parallel on data servers. If the base datasource is InlineDataSource
, queries are
processed on the Broker. See DataSourceAnalysis.getBaseDataSource()
for further discussion.
Datasources that are *not* concrete must be pre-processed in some way before they can be processed by the main
query stack. For example, QueryDataSource
must be executed first and substituted with its results.isConcrete
in interface DataSource
which uses this
,
which uses this
public Function<SegmentReference,SegmentReference> createSegmentMapFunction(Query query, AtomicLong cpuTimeAcc)
DataSource
createSegmentMapFunction
in interface DataSource
query
- the input querycpuTimeAcc
- the cpu time accumulatorpublic DataSource withUpdatedDataSource(DataSource newSource)
DataSource
withUpdatedDataSource
in interface DataSource
newSource
- the new datasource to be used to update an existing querypublic byte[] getCacheKey()
DataSource
PreJoinableClause
- NULL - There is a join but caching is not possible. It may happen if one of the participating datasource
in the JOIN is not cacheable.getCacheKey
in interface DataSource
public DataSourceAnalysis getAnalysis()
DataSource
getAnalysis
in interface DataSource
DataSourceAnalysis
object for the callee data sourcepublic RowSignature getRowSignature()
public RowAdapter<Object[]> rowAdapter()
Copyright © 2011–2023 The Apache Software Foundation. All rights reserved.