namespace
| 47 | } |
| 48 | } // namespace |
| 49 | IndexLookupJoin::IndexLookupJoin( |
| 50 | int32_t operatorId, |
| 51 | DriverCtx* driverCtx, |
| 52 | const std::shared_ptr<const core::IndexLookupJoinNode>& joinNode) |
| 53 | : Operator( |
| 54 | driverCtx, |
| 55 | joinNode->outputType(), |
| 56 | operatorId, |
| 57 | joinNode->id(), |
| 58 | "IndexLookupJoin"), |
| 59 | // TODO: support to update output batch size with output size stats during |
| 60 | // the lookup processing. |
| 61 | outputBatchSize_{static_cast<vector_size_t>(outputBatchRows())}, |
| 62 | joinType_{joinNode->joinType()}, |
| 63 | numKeys_{joinNode->leftKeys().size()}, |
| 64 | probeType_{joinNode->sources()[0]->outputType()}, |
| 65 | lookupType_{joinNode->lookupSource()->outputType()}, |
| 66 | lookupTableHandle_{joinNode->lookupSource()->tableHandle()}, |
| 67 | lookupColumnHandles_(joinNode->lookupSource()->assignments()), |
| 68 | connectorQueryCtx_{operatorCtx_->createConnectorQueryCtx( |
| 69 | lookupTableHandle_->connectorId(), |
| 70 | planNodeId(), |
| 71 | driverCtx->task->addConnectorPoolLocked( |
| 72 | planNodeId(), |
| 73 | driverCtx->pipelineId, |
| 74 | driverCtx->driverId, |
| 75 | operatorType(), |
| 76 | lookupTableHandle_->connectorId()), |
| 77 | spillConfig_.has_value() ? &(spillConfig_.value()) : nullptr)}, |
| 78 | expressionEvaluator_(connectorQueryCtx_->expressionEvaluator()), |
| 79 | connector_(connector::getConnector(lookupTableHandle_->connectorId())), |
| 80 | joinNode_{joinNode} { |
| 81 | duplicateJoinKeyCheck(joinNode_->leftKeys()); |
| 82 | duplicateJoinKeyCheck(joinNode_->rightKeys()); |
| 83 | } |
| 84 | |
| 85 | void IndexLookupJoin::initialize() { |
| 86 | Operator::initialize(); |
nothing calls this directly
no test coverage detected