Package org.apache.druid.segment.join
Class MapJoinableFactory
- java.lang.Object
-
- org.apache.druid.segment.join.MapJoinableFactory
-
- All Implemented Interfaces:
JoinableFactory
public class MapJoinableFactory extends Object implements JoinableFactory
AJoinableFactory
that delegates to the appropriate factory based on the datasource. Any number ofJoinableFactory
may be associated to the same class ofDataSource
, but for a specific datasource only a singleJoinableFactory
should be able to create aJoinable
in thebuild(org.apache.druid.query.DataSource, org.apache.druid.segment.join.JoinConditionAnalysis)
method.
-
-
Constructor Summary
Constructors Constructor Description MapJoinableFactory(Set<JoinableFactory> factories, Map<Class<? extends JoinableFactory>,Class<? extends DataSource>> factoryToDataSource)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Optional<Joinable>
build(DataSource dataSource, JoinConditionAnalysis condition)
Create a Joinable object.Optional<byte[]>
computeJoinCacheKey(DataSource dataSource, JoinConditionAnalysis condition)
Compute the cache key for a data source participating in join operation.boolean
isDirectlyJoinable(DataSource dataSource)
Returns true if aJoinable
**may** be created for a givenDataSource
, but is not a guarantee thatJoinableFactory.build(org.apache.druid.query.DataSource, org.apache.druid.segment.join.JoinConditionAnalysis)
will return a non-empty result.
-
-
-
Constructor Detail
-
MapJoinableFactory
@Inject public MapJoinableFactory(Set<JoinableFactory> factories, Map<Class<? extends JoinableFactory>,Class<? extends DataSource>> factoryToDataSource)
-
-
Method Detail
-
isDirectlyJoinable
public boolean isDirectlyJoinable(DataSource dataSource)
Description copied from interface:JoinableFactory
Returns true if aJoinable
**may** be created for a givenDataSource
, but is not a guarantee thatJoinableFactory.build(org.apache.druid.query.DataSource, org.apache.druid.segment.join.JoinConditionAnalysis)
will return a non-empty result. Successfully building aJoinable
might require specific criteria of theJoinConditionAnalysis
.- Specified by:
isDirectlyJoinable
in interfaceJoinableFactory
-
build
public Optional<Joinable> build(DataSource dataSource, JoinConditionAnalysis condition)
Description copied from interface:JoinableFactory
Create a Joinable object. This may be an expensive operation involving loading data, creating a hash table, etc.- Specified by:
build
in interfaceJoinableFactory
- Parameters:
dataSource
- the datasource to join oncondition
- the condition to join on- Returns:
- a Joinable if this datasource + condition combo is joinable; empty if not
-
computeJoinCacheKey
public Optional<byte[]> computeJoinCacheKey(DataSource dataSource, JoinConditionAnalysis condition)
Description copied from interface:JoinableFactory
Compute the cache key for a data source participating in join operation. This is done separately from {JoinableFactory.build(DataSource, JoinConditionAnalysis)
} which can be an expensive operation and can potentially be avoided if cached results can be used.- Specified by:
computeJoinCacheKey
in interfaceJoinableFactory
- Parameters:
dataSource
- the datasource to join oncondition
- the condition to join on
-
-