Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
|
#include <hash-join-node.h>
Public Member Functions | |
HashJoinNode (ObjectPool *pool, const TPlanNode &tnode, const DescriptorTbl &descs) | |
virtual Status | Init (const TPlanNode &tnode) |
virtual Status | Prepare (RuntimeState *state) |
virtual Status | GetNext (RuntimeState *state, RowBatch *row_batch, bool *eos) |
virtual Status | Reset (RuntimeState *state) |
virtual void | Close (RuntimeState *state) |
virtual Status | Open (RuntimeState *state) |
std::string | DebugString () const |
Returns a string representation in DFS order of the plan rooted at this. More... | |
void | CollectNodes (TPlanNodeType::type node_type, std::vector< ExecNode * > *nodes) |
void | CollectScanNodes (std::vector< ExecNode * > *nodes) |
Collect all scan node types. More... | |
const std::vector< ExprContext * > & | conjunct_ctxs () const |
int | id () const |
TPlanNodeType::type | type () const |
const RowDescriptor & | row_desc () const |
int64_t | rows_returned () const |
int64_t | limit () const |
bool | ReachedLimit () |
RuntimeProfile * | runtime_profile () |
MemTracker * | mem_tracker () |
MemTracker * | expr_mem_tracker () |
Static Public Member Functions | |
static Status | CreateTree (ObjectPool *pool, const TPlan &plan, const DescriptorTbl &descs, ExecNode **root) |
static void | SetDebugOptions (int node_id, TExecNodePhase::type phase, TDebugAction::type action, ExecNode *tree) |
Set debug action for node with given id in 'tree'. More... | |
static bool | EvalConjuncts (ExprContext *const *ctxs, int num_ctxs, TupleRow *row) |
static llvm::Function * | CodegenEvalConjuncts (RuntimeState *state, const std::vector< ExprContext * > &conjunct_ctxs, const char *name="EvalConjuncts") |
static int | GetNodeIdFromProfile (RuntimeProfile *p) |
Extract node id from p->name(). More... | |
Static Public Attributes | |
static const char * | LLVM_CLASS_NAME = "class.impala::HashJoinNode" |
static const std::string | ROW_THROUGHPUT_COUNTER = "RowsReturnedRate" |
Names of counters shared by all exec nodes. More... | |
Protected Member Functions | |
virtual void | AddToDebugString (int indentation_level, std::stringstream *out) const |
virtual Status | InitGetNext (TupleRow *first_probe_row) |
virtual Status | ConstructBuildSide (RuntimeState *state) |
virtual void | DebugString (int indentation_level, std::stringstream *out) const |
Subclasses should not override, use AddToDebugString() to add to the result. More... | |
std::string | GetLeftChildRowString (TupleRow *row) |
void | CreateOutputRow (TupleRow *out_row, TupleRow *probe_row, TupleRow *build_row) |
ExecNode * | child (int i) |
bool | is_closed () |
virtual bool | IsScanNode () const |
void | InitRuntimeProfile (const std::string &name) |
Status | ExecDebugAction (TExecNodePhase::type phase, RuntimeState *state) |
void | AddRuntimeExecOption (const std::string &option) |
Appends option to 'runtime_exec_options_'. More... | |
virtual Status | QueryMaintenance (RuntimeState *state) |
void | AddExprCtxToFree (ExprContext *ctx) |
void | AddExprCtxsToFree (const std::vector< ExprContext * > &ctxs) |
void | AddExprCtxsToFree (const SortExecExprs &sort_exec_exprs) |
Static Protected Member Functions | |
static Status | CreateNode (ObjectPool *pool, const TPlanNode &tnode, const DescriptorTbl &descs, ExecNode **node) |
Create a single exec node derived from thrift node; place exec node in 'pool'. More... | |
static Status | CreateTreeHelper (ObjectPool *pool, const std::vector< TPlanNode > &tnodes, const DescriptorTbl &descs, ExecNode *parent, int *node_idx, ExecNode **root) |
Private Types | |
typedef void(* | ProcessBuildBatchFn )(HashJoinNode *, RowBatch *) |
typedef int(* | ProcessProbeBatchFn )(HashJoinNode *, RowBatch *, RowBatch *, int) |
HashJoinNode::ProcessProbeBatch() exactly. More... | |
Private Member Functions | |
Status | LeftJoinGetNext (RuntimeState *state, RowBatch *row_batch, bool *eos) |
int | ProcessProbeBatch (RowBatch *out_batch, RowBatch *probe_batch, int max_added_rows) |
void | ProcessBuildBatch (RowBatch *build_batch) |
Construct the build hash table, adding all the rows in 'build_batch'. More... | |
llvm::Function * | CodegenCreateOutputRow (LlvmCodeGen *codegen) |
Codegen function to create output row. More... | |
llvm::Function * | CodegenProcessBuildBatch (RuntimeState *state, llvm::Function *hash_fn) |
llvm::Function * | CodegenProcessProbeBatch (RuntimeState *state, llvm::Function *hash_fn) |
Private Attributes | |
boost::scoped_ptr< OldHashTable > | hash_tbl_ |
OldHashTable::Iterator | hash_tbl_iterator_ |
std::vector< ExprContext * > | probe_expr_ctxs_ |
std::vector< ExprContext * > | build_expr_ctxs_ |
std::vector< ExprContext * > | other_join_conjunct_ctxs_ |
non-equi-join conjuncts from the JOIN clause More... | |
bool | match_all_probe_ |
bool | match_one_build_ |
Match at most one build row to each probe row. Used in LEFT_SEMI_JOIN. More... | |
bool | match_all_build_ |
llvm::Function * | codegen_process_build_batch_fn_ |
llvm function for build batch More... | |
ProcessBuildBatchFn | process_build_batch_fn_ |
ProcessProbeBatchFn | process_probe_batch_fn_ |
Jitted ProcessProbeBatch function pointer. Null if codegen is disabled. More... | |
RuntimeProfile::Counter * | build_buckets_counter_ |
RuntimeProfile::Counter * | hash_tbl_load_factor_counter_ |
Node for in-memory hash joins:
Definition at line 48 of file hash-join-node.h.
|
private |
Function declaration for codegen'd function. Signature must match HashJoinNode::ProcessBuildBatch
Definition at line 95 of file hash-join-node.h.
|
private |
HashJoinNode::ProcessProbeBatch() exactly.
Definition at line 99 of file hash-join-node.h.
HashJoinNode::HashJoinNode | ( | ObjectPool * | pool, |
const TPlanNode & | tnode, | ||
const DescriptorTbl & | descs | ||
) |
Definition at line 40 of file hash-join-node.cc.
References impala::BlockingJoinNode::can_add_probe_filters_, impala::BlockingJoinNode::join_op_, match_all_build_, match_all_probe_, and match_one_build_.
|
protectedinherited |
Referenced by impala::ExecNode::AddExprCtxsToFree(), impala::UnionNode::Prepare(), impala::SortNode::Prepare(), impala::TopNNode::Prepare(), impala::ExchangeNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::ExecNode::Prepare(), impala::PartitionedAggregationNode::Prepare(), and impala::HdfsScanNode::Prepare().
|
protectedinherited |
Definition at line 410 of file exec-node.cc.
References impala::ExecNode::AddExprCtxsToFree(), impala::SortExecExprs::lhs_ordering_expr_ctxs(), impala::SortExecExprs::rhs_ordering_expr_ctxs(), and impala::SortExecExprs::sort_tuple_slot_expr_ctxs().
|
inlineprotectedinherited |
Add an ExprContext to have its local allocations freed by QueryMaintenance(). Exprs that are evaluated in the main execution thread should be added. Exprs evaluated in a separate thread are generally not safe to add, since a local allocation may be freed while it's being used. Rather than using this mechanism, threads should call FreeLocalAllocations() on local ExprContexts periodically.
Definition at line 276 of file exec-node.h.
References impala::ExecNode::expr_ctxs_to_free_.
Referenced by impala::AnalyticEvalNode::Prepare().
|
protectedinherited |
Appends option to 'runtime_exec_options_'.
Definition at line 188 of file exec-node.cc.
References impala::RuntimeProfile::AddInfoString(), impala::ExecNode::exec_options_lock_, impala::ExecNode::runtime_exec_options_, and impala::ExecNode::runtime_profile().
Referenced by impala::PartitionedHashJoinNode::AttachProbeFilters(), ConstructBuildSide(), impala::BlockingJoinNode::Open(), Prepare(), impala::AggregationNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::PartitionedAggregationNode::Prepare(), impala::HdfsScanNode::Prepare(), and impala::HdfsScanNode::StopAndFinalizeCounters().
|
protectedvirtual |
Gives subclasses an opportunity to add debug output to the debug string printed by DebugString().
Reimplemented from impala::BlockingJoinNode.
Definition at line 424 of file hash-join-node.cc.
References build_expr_ctxs_, impala::Expr::DebugString(), and probe_expr_ctxs_.
|
inlineprotectedinherited |
Definition at line 241 of file exec-node.h.
References impala::ExecNode::children_.
Referenced by impala::CrossJoinNode::BuildListDebugString(), impala::BlockingJoinNode::BuildSideThread(), CodegenCreateOutputRow(), impala::PartitionedHashJoinNode::CodegenCreateOutputRow(), impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), impala::PartitionedHashJoinNode::ConstructBuildSide(), impala::BlockingJoinNode::GetLeftChildRowString(), impala::SelectNode::GetNext(), impala::UnionNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AnalyticEvalNode::GetNextOutputBatch(), impala::PartitionedAggregationNode::Partition::InitStreams(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::NextProbeRowBatch(), impala::SelectNode::Open(), impala::SortNode::Open(), impala::TopNNode::Open(), impala::BlockingJoinNode::Open(), impala::AggregationNode::Open(), impala::AnalyticEvalNode::Open(), impala::PartitionedAggregationNode::Open(), impala::UnionNode::OpenCurrentChild(), impala::SelectNode::Prepare(), impala::SortNode::Prepare(), impala::UnionNode::Prepare(), impala::TopNNode::Prepare(), impala::BlockingJoinNode::Prepare(), Prepare(), impala::AggregationNode::Prepare(), impala::AnalyticEvalNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::PartitionedAggregationNode::Prepare(), impala::PartitionedHashJoinNode::ProcessBuildInput(), impala::AnalyticEvalNode::ProcessChildBatches(), and impala::SortNode::SortInput().
|
virtual |
Subclasses should close any other structures and then call BlockingJoinNode::Close().
Reimplemented from impala::BlockingJoinNode.
Definition at line 145 of file hash-join-node.cc.
References build_expr_ctxs_, impala::BlockingJoinNode::Close(), impala::Expr::Close(), hash_tbl_, impala::ExecNode::is_closed(), other_join_conjunct_ctxs_, and probe_expr_ctxs_.
|
private |
Codegen function to create output row.
Definition at line 462 of file hash-join-node.cc.
References impala::LlvmCodeGen::FnPrototype::AddArgument(), impala::BlockingJoinNode::build_tuple_row_size_, impala::ExecNode::child(), impala::LlvmCodeGen::CodegenMemcpy(), impala::LlvmCodeGen::context(), impala::LlvmCodeGen::FinalizeFunction(), impala::LlvmCodeGen::GetIntConstant(), impala::LlvmCodeGen::GetType(), impala::BlockingJoinNode::LLVM_CLASS_NAME, impala::TupleRow::LLVM_CLASS_NAME, match_all_probe_, impala::LlvmCodeGen::null_ptr_value(), impala::BlockingJoinNode::probe_tuple_row_size_, impala::LlvmCodeGen::ptr_type(), impala::ExecNode::row_desc(), impala::RowDescriptor::tuple_descriptors(), impala::TYPE_INT, and impala::LlvmCodeGen::void_type().
Referenced by CodegenProcessProbeBatch().
|
staticinherited |
Returns a codegen'd version of EvalConjuncts(), or NULL if the function couldn't be codegen'd. The codegen'd version uses inlined, codegen'd GetBooleanVal() functions.
Definition at line 452 of file exec-node.cc.
References impala::LlvmCodeGen::FnPrototype::AddArgument(), impala::LlvmCodeGen::context(), impala::CodegenAnyVal::CreateCallWrapped(), impala::LlvmCodeGen::false_value(), impala::LlvmCodeGen::FinalizeFunction(), impala::RuntimeState::GetCodegen(), impala::Status::GetDetail(), impala::CodegenAnyVal::GetIsNull(), impala::LlvmCodeGen::GetType(), impala::CodegenAnyVal::GetVal(), impala::TupleRow::LLVM_CLASS_NAME, impala::ExprContext::LLVM_CLASS_NAME, impala::Status::ok(), impala::LlvmCodeGen::true_value(), impala::ExecNode::type(), impala::TYPE_BOOLEAN, impala::TYPE_INT, and VLOG_QUERY.
Referenced by impala::HdfsAvroScanner::CodegenDecodeAvroData(), CodegenProcessProbeBatch(), and impala::PartitionedHashJoinNode::CodegenProcessProbeBatch().
|
private |
Codegen processing build batches. Identical signature to ProcessBuildBatch. hash_fn is the codegen'd function for computing hashes over tuple rows in the hash table. Returns NULL if codegen was not possible.
Definition at line 532 of file hash-join-node.cc.
References impala::RuntimeState::GetCodegen(), impala::LlvmCodeGen::GetFunction(), hash_tbl_, impala::Status::ok(), impala::LlvmCodeGen::OptimizeFunctionWithExprs(), and impala::LlvmCodeGen::ReplaceCallSites().
Referenced by Prepare().
|
private |
Codegen processing probe batches. Identical signature to ProcessProbeBatch. hash_fn is the codegen'd function for computing hashes over tuple rows in the hash table. Returns NULL if codegen was not possible.
Definition at line 559 of file hash-join-node.cc.
References CodegenCreateOutputRow(), impala::ExecNode::CodegenEvalConjuncts(), impala::ExecNode::conjunct_ctxs_, impala::RuntimeState::GetCodegen(), impala::LlvmCodeGen::GetFunction(), hash_tbl_, impala::Status::ok(), impala::LlvmCodeGen::OptimizeFunctionWithExprs(), other_join_conjunct_ctxs_, and impala::LlvmCodeGen::ReplaceCallSites().
Referenced by Prepare().
|
inherited |
Collect all nodes of given 'node_type' that are part of this subtree, and return in 'nodes'.
Definition at line 359 of file exec-node.cc.
References impala::ExecNode::children_, and impala::ExecNode::type_.
Referenced by impala::ExecNode::CollectScanNodes(), and impala::PlanFragmentExecutor::Prepare().
|
inherited |
Collect all scan node types.
Definition at line 366 of file exec-node.cc.
References impala::ExecNode::CollectNodes().
Referenced by impala::PlanFragmentExecutor::Prepare().
|
inlineinherited |
Definition at line 152 of file exec-node.h.
References impala::ExecNode::conjunct_ctxs_.
Referenced by impala::HdfsScanNode::ComputeSlotMaterializationOrder(), impala::SelectNode::CopyRows(), impala::UnionNode::EvalAndMaterializeExprs(), GetNext(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ProcessProbeBatch().
|
protectedvirtual |
We parallelize building the build-side with Open'ing the left child. If, for example, the left child is another join node, it can start to build its own build-side at the same time.
Implements impala::BlockingJoinNode.
Definition at line 154 of file hash-join-node.cc.
References impala::ExecNode::AddRuntimeExecOption(), impala::RuntimeState::batch_size(), build_buckets_counter_, build_expr_ctxs_, impala::BlockingJoinNode::build_pool_, impala::BlockingJoinNode::build_row_counter_, impala::BlockingJoinNode::build_timer_, impala::BlockingJoinNode::can_add_probe_filters_, impala::ExecNode::child(), COUNTER_SET, GetNext(), hash_tbl_, hash_tbl_load_factor_counter_, impala::ExecNode::mem_tracker(), impala::Status::OK, impala::BlockingJoinNode::Open(), impala::Expr::Open(), other_join_conjunct_ctxs_, probe_expr_ctxs_, process_build_batch_fn_, ProcessBuildBatch(), impala::ExecNode::QueryMaintenance(), RETURN_IF_CANCELLED, RETURN_IF_ERROR, impala::ExecNode::row_desc(), SCOPED_TIMER, impala::RuntimeState::slot_filter_bitmap_size(), and VLOG_ROW.
|
staticprotectedinherited |
Create a single exec node derived from thrift node; place exec node in 'pool'.
Definition at line 260 of file exec-node.cc.
References impala::ObjectPool::Add(), impala::Status::OK, and RETURN_IF_ERROR.
Referenced by impala::ExecNode::CreateTreeHelper().
|
protectedinherited |
Write combined row, consisting of the left child's 'probe_row' and right child's 'build_row' to 'out_row'. This is replaced by codegen.
Definition at line 240 of file blocking-join-node.cc.
References impala::BlockingJoinNode::build_tuple_row_size_, and impala::BlockingJoinNode::probe_tuple_row_size_.
Referenced by impala::PartitionedHashJoinNode::EvaluateNullProbe(), GetNext(), impala::PartitionedHashJoinNode::OutputNullAwareProbeRows(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), impala::CrossJoinNode::ProcessLeftChildBatch(), ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ProcessProbeBatch().
|
staticinherited |
Creates exec node tree from list of nodes contained in plan via depth-first traversal. All nodes are placed in pool. Returns error if 'plan' is corrupted, otherwise success.
Definition at line 199 of file exec-node.cc.
References impala::ExecNode::CreateTreeHelper(), impala::Status::OK, and impala::Status::ok().
Referenced by impala::PlanFragmentExecutor::Prepare().
|
staticprotectedinherited |
Definition at line 218 of file exec-node.cc.
References impala::RuntimeProfile::AddChild(), impala::ExecNode::children_, impala::ExecNode::CreateNode(), impala::Status::OK, RETURN_IF_ERROR, and impala::ExecNode::runtime_profile().
Referenced by impala::ExecNode::CreateTree().
|
protectedvirtualinherited |
Subclasses should not override, use AddToDebugString() to add to the result.
Reimplemented from impala::ExecNode.
Definition at line 212 of file blocking-join-node.cc.
References impala::BlockingJoinNode::AddToDebugString(), impala::ExecNode::DebugString(), impala::BlockingJoinNode::eos_, impala::BlockingJoinNode::node_name_, and impala::BlockingJoinNode::probe_batch_pos_.
|
inherited |
Returns a string representation in DFS order of the plan rooted at this.
Definition at line 345 of file exec-node.cc.
Referenced by impala::SortNode::DebugString(), impala::TopNNode::DebugString(), impala::ExchangeNode::DebugString(), impala::AggregationNode::DebugString(), impala::AnalyticEvalNode::DebugString(), impala::PartitionedAggregationNode::DebugString(), impala::BlockingJoinNode::DebugString(), and impala::PlanFragmentExecutor::Prepare().
|
staticinherited |
Evaluate ExprContexts over row. Returns true if all exprs return true. TODO: This doesn't use the vector<Expr*> signature because I haven't figured out how to deal with declaring a templated std:vector type in IR
Definition at line 393 of file exec-node.cc.
References impala::ExprContext::GetBooleanVal(), impala_udf::AnyVal::is_null, and impala_udf::BooleanVal::val.
Referenced by impala::SelectNode::CopyRows(), impala::UnionNode::EvalAndMaterializeExprs(), impala::HdfsScanner::EvalConjuncts(), EvalOtherJoinConjuncts(), EvalOtherJoinConjuncts2(), impala::PartitionedHashJoinNode::EvaluateNullProbe(), impala::HBaseScanNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::AnalyticEvalNode::GetNextOutputBatch(), impala::PartitionedHashJoinNode::OutputNullAwareProbeRows(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), impala::CrossJoinNode::ProcessLeftChildBatch(), ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ProcessProbeBatch().
|
protectedinherited |
Executes debug_action_ if phase matches debug_phase_. 'phase' must not be INVALID.
Definition at line 378 of file exec-node.cc.
References impala::Status::CANCELLED, impala::ExecNode::debug_action_, impala::ExecNode::debug_phase_, impala::RuntimeState::is_cancelled(), and impala::Status::OK.
Referenced by impala::SelectNode::GetNext(), impala::SortNode::GetNext(), impala::UnionNode::GetNext(), impala::HBaseScanNode::GetNext(), impala::TopNNode::GetNext(), impala::ExchangeNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::AnalyticEvalNode::GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::HdfsScanNode::GetNextInternal(), impala::ExecNode::Open(), and impala::ExecNode::Prepare().
|
inlineinherited |
Definition at line 163 of file exec-node.h.
References impala::ExecNode::expr_mem_tracker_.
Referenced by impala::PartitionedAggregationNode::Partition::InitStreams(), impala::SortNode::Prepare(), impala::UnionNode::Prepare(), impala::TopNNode::Prepare(), impala::ExchangeNode::Prepare(), Prepare(), impala::AggregationNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::AnalyticEvalNode::Prepare(), impala::ExecNode::Prepare(), impala::PartitionedAggregationNode::Prepare(), and impala::HdfsScanNode::Prepare().
|
protectedinherited |
Returns a debug string for the left child's 'row'. They have tuple ptrs that are uninitialized; the left child only populates the tuple ptrs it is responsible for. This function outputs just the row values and leaves the build side values as NULL. This is only used for debugging and outputting the left child rows before doing the join.
Definition at line 222 of file blocking-join-node.cc.
References impala::ExecNode::child(), impala::TupleRow::GetTuple(), impala::PrintTuple(), impala::ExecNode::row_desc(), and impala::RowDescriptor::tuple_descriptors().
Referenced by GetNext().
|
virtual |
Retrieves rows and returns them via row_batch. Sets eos to true if subsequent calls will not retrieve any more rows. Data referenced by any tuples returned in row_batch must not be overwritten by the callee until Close() is called. The memory holding that data can be returned via row_batch's tuple_data_pool (in which case it may be deleted by the caller) or held on to by the callee. The row_batch, including its tuple_data_pool, will be destroyed by the caller at some point prior to the final Close() call. In other words, if the memory holding the tuple data will be referenced by the callee in subsequent GetNext() calls, it must not be attached to the row_batch's tuple_data_pool. Caller must not be holding any io buffers. This will cause deadlock. TODO: AggregationNode and HashJoinNode cannot be "re-opened" yet.
Implements impala::ExecNode.
Definition at line 218 of file hash-join-node.cc.
References impala::RowBatch::AddRow(), impala::RowBatch::AtCapacity(), impala::OldHashTable::Iterator::AtEnd(), impala::ExecNode::child(), impala::RowBatch::CommitLastRow(), impala::ExecNode::conjunct_ctxs(), impala::ExecNode::conjunct_ctxs_, COUNTER_ADD, COUNTER_SET, impala::BlockingJoinNode::CreateOutputRow(), impala::BlockingJoinNode::current_probe_row_, impala::BlockingJoinNode::eos_, impala::ExecNode::EvalConjuncts(), impala::ExecNode::ExecDebugAction(), impala::BlockingJoinNode::GetLeftChildRowString(), impala::RowBatch::GetRow(), impala::OldHashTable::Iterator::GetRow(), hash_tbl_, hash_tbl_iterator_, LeftJoinGetNext(), match_all_build_, match_all_probe_, impala::OldHashTable::Iterator::matched(), impala::BlockingJoinNode::matched_probe_, impala::OldHashTable::Iterator::Next(), impala::ExecNode::num_rows_returned_, impala::Status::OK, other_join_conjunct_ctxs_, impala::PrintRow(), impala::BlockingJoinNode::probe_batch_, impala::BlockingJoinNode::probe_batch_pos_, impala::BlockingJoinNode::probe_row_counter_, impala::BlockingJoinNode::probe_side_eos_, impala::BlockingJoinNode::probe_timer_, impala::ExecNode::QueryMaintenance(), impala::ExecNode::ReachedLimit(), RETURN_IF_CANCELLED, RETURN_IF_ERROR, impala::ExecNode::row_desc(), impala::ExecNode::rows_returned_counter_, impala::ExecNode::runtime_profile_, SCOPED_TIMER, impala::OldHashTable::Iterator::set_matched(), impala::ScopedTimer< T >::Start(), impala::ScopedTimer< T >::Stop(), and VLOG_ROW.
Referenced by ConstructBuildSide(), and LeftJoinGetNext().
|
staticinherited |
Extract node id from p->name().
Definition at line 62 of file exec-node.cc.
References impala::RuntimeProfile::metadata().
|
inlineinherited |
Definition at line 154 of file exec-node.h.
References impala::ExecNode::id_.
Referenced by impala::AnalyticEvalNode::AddResultTuple(), impala::AnalyticEvalNode::AddRow(), impala::AnalyticEvalNode::AnalyticEvalNode(), impala::AnalyticEvalNode::GetNext(), impala::AnalyticEvalNode::GetNextOutputBatch(), impala::HdfsScanner::InitializeWriteTuplesFn(), impala::HdfsAvroScanner::InitNewRange(), impala::AnalyticEvalNode::InitNextPartition(), impala::PartitionedAggregationNode::MoveHashPartitions(), impala::PartitionedHashJoinNode::NodeDebugString(), impala::AnalyticEvalNode::Open(), impala::HdfsScanNode::Open(), impala::PlanFragmentExecutor::Prepare(), impala::PartitionedHashJoinNode::ProcessBuildInput(), impala::AnalyticEvalNode::ProcessChildBatch(), impala::HdfsScanNode::ScannerThread(), impala::AnalyticEvalNode::TryAddRemainingResults(), impala::AnalyticEvalNode::TryAddResultTupleForCurrRow(), impala::AnalyticEvalNode::TryAddResultTupleForPrevRow(), and impala::AnalyticEvalNode::TryRemoveRowsBeforeWindow().
|
virtual |
Subclasses should call BlockingJoinNode::Init() and then perform any other Init() work, e.g. creating expr trees.
Reimplemented from impala::BlockingJoinNode.
Definition at line 62 of file hash-join-node.cc.
References build_expr_ctxs_, impala::Expr::CreateExprTree(), impala::Expr::CreateExprTrees(), impala::BlockingJoinNode::Init(), impala::Status::OK, other_join_conjunct_ctxs_, impala::ExecNode::pool_, probe_expr_ctxs_, and RETURN_IF_ERROR.
Init the build-side state for a new left child row (e.g. hash table iterator or list iterator) given the first row. Used in Open() to prepare for GetNext(). A NULL ptr for first_left_child_row indicates the left child eos.
Implements impala::BlockingJoinNode.
Definition at line 208 of file hash-join-node.cc.
References hash_tbl_, hash_tbl_iterator_, impala::BlockingJoinNode::matched_probe_, and impala::Status::OK.
|
protectedinherited |
Definition at line 371 of file exec-node.cc.
References impala::ExecNode::id_, impala::ExecNode::pool_, and impala::ExecNode::runtime_profile_.
Referenced by impala::ExecNode::ExecNode().
|
inlineprotectedinherited |
Definition at line 242 of file exec-node.h.
References impala::ExecNode::is_closed_.
Referenced by impala::SelectNode::Close(), impala::SortNode::Close(), impala::UnionNode::Close(), impala::TopNNode::Close(), impala::ExchangeNode::Close(), impala::HBaseScanNode::Close(), impala::CrossJoinNode::Close(), Close(), impala::AggregationNode::Close(), impala::BlockingJoinNode::Close(), impala::AnalyticEvalNode::Close(), impala::PartitionedHashJoinNode::Close(), impala::PartitionedAggregationNode::Close(), impala::HdfsScanNode::Close(), impala::PartitionedAggregationNode::Partition::Close(), impala::PartitionedHashJoinNode::Partition::Close(), impala::PartitionedHashJoinNode::ReserveTupleStreamBlocks(), impala::PartitionedHashJoinNode::SpillPartition(), impala::PartitionedAggregationNode::SpillPartition(), and impala::PartitionedHashJoinNode::Partition::~Partition().
|
inlineprotectedvirtualinherited |
Reimplemented in impala::ScanNode.
Definition at line 251 of file exec-node.h.
|
private |
GetNext helper function for the common join cases: Inner join, left semi and left outer
Definition at line 378 of file hash-join-node.cc.
References impala::RowBatch::AtCapacity(), impala::OldHashTable::Iterator::AtEnd(), impala::RowBatch::capacity(), impala::ExecNode::child(), COUNTER_ADD, COUNTER_SET, impala::BlockingJoinNode::eos_, GetNext(), hash_tbl_iterator_, impala::ExecNode::limit(), impala::RowBatch::num_rows(), impala::ExecNode::num_rows_returned_, impala::Status::OK, impala::BlockingJoinNode::probe_batch_, impala::BlockingJoinNode::probe_batch_pos_, impala::BlockingJoinNode::probe_row_counter_, impala::BlockingJoinNode::probe_side_eos_, impala::BlockingJoinNode::probe_timer_, process_probe_batch_fn_, ProcessProbeBatch(), impala::ExecNode::ReachedLimit(), RETURN_IF_ERROR, impala::ExecNode::rows_returned(), impala::ExecNode::rows_returned_counter_, impala::ScopedTimer< T >::Start(), and impala::ScopedTimer< T >::Stop().
Referenced by GetNext().
|
inlineinherited |
Definition at line 158 of file exec-node.h.
References impala::ExecNode::limit_.
Referenced by impala::CrossJoinNode::GetNext(), and LeftJoinGetNext().
|
inlineinherited |
Definition at line 162 of file exec-node.h.
References impala::ExecNode::mem_tracker_.
Referenced by impala::ExecNode::Close(), impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), impala::HdfsScanNode::EnoughMemoryForScannerThread(), impala::AnalyticEvalNode::GetNextOutputBatch(), impala::SortNode::Open(), impala::TopNNode::Open(), impala::AggregationNode::Open(), impala::AnalyticEvalNode::Open(), impala::PartitionedAggregationNode::Open(), impala::HdfsScanNode::Open(), impala::UnionNode::OpenCurrentChild(), impala::SelectNode::Prepare(), impala::HBaseScanNode::Prepare(), impala::TopNNode::Prepare(), impala::BlockingJoinNode::Prepare(), Prepare(), impala::AggregationNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::AnalyticEvalNode::Prepare(), impala::PartitionedAggregationNode::Prepare(), impala::HdfsScanNode::Prepare(), impala::PartitionedHashJoinNode::PrepareNextPartition(), impala::PartitionedHashJoinNode::ProcessBuildInput(), impala::PartitionedAggregationNode::ProcessStream(), impala::HdfsRCFileScanner::ReadRowGroup(), impala::HdfsAvroScanner::ResolveSchemas(), impala::SortNode::SortInput(), and impala::HdfsScanner::StartNewRowBatch().
|
virtualinherited |
Open prepares the build side structures (subclasses should implement ConstructBuildSide()) and then prepares for GetNext with the first left child row (subclasses should implement InitGetNext()).
Reimplemented from impala::ExecNode.
Definition at line 156 of file blocking-join-node.cc.
References impala::ExecNode::AddRuntimeExecOption(), impala::CgroupsMgr::AssignThreadToCgroup(), impala::BlockingJoinNode::BuildSideThread(), impala::RuntimeState::cgroup(), impala::ExecEnv::cgroups_mgr(), impala::ExecNode::child(), impala::BlockingJoinNode::ConstructBuildSide(), COUNTER_ADD, impala::BlockingJoinNode::current_probe_row_, impala::BlockingJoinNode::eos_, impala::RuntimeState::exec_env(), impala::Promise< T >::Get(), impala::ExecNode::GetNext(), impala::BlockingJoinNode::InitGetNext(), impala::RuntimeState::LogError(), impala::Status::msg(), impala::BlockingJoinNode::node_name_, impala::Status::OK, impala::Status::ok(), impala::ExecNode::Open(), impala::BlockingJoinNode::probe_batch_, impala::BlockingJoinNode::probe_batch_pos_, impala::BlockingJoinNode::probe_row_counter_, impala::BlockingJoinNode::probe_side_eos_, impala::ExecNode::QueryMaintenance(), impala::RuntimeState::resource_pool(), RETURN_IF_CANCELLED, RETURN_IF_ERROR, impala::ExecNode::runtime_profile_, SCOPED_TIMER, and impala::ThreadResourceMgr::ResourcePool::TryAcquireThreadToken().
Referenced by impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), and impala::PartitionedHashJoinNode::ConstructBuildSide().
|
virtual |
Subclasses should call BlockingJoinNode::Prepare() and then perform any other Prepare() work, e.g. codegen.
Reimplemented from impala::BlockingJoinNode.
Definition at line 80 of file hash-join-node.cc.
References ADD_COUNTER, impala::LlvmCodeGen::AddFunctionToJit(), impala::ExecNode::AddRuntimeExecOption(), build_buckets_counter_, build_expr_ctxs_, impala::ExecNode::child(), impala::RuntimeState::codegen_enabled(), codegen_process_build_batch_fn_, CodegenProcessBuildBatch(), CodegenProcessProbeBatch(), impala::ExecNode::expr_mem_tracker(), impala::RuntimeState::fragment_hash_seed(), impala::RuntimeState::GetCodegen(), hash_tbl_, hash_tbl_load_factor_counter_, impala::BlockingJoinNode::join_op_, match_all_build_, impala::ExecNode::mem_tracker(), impala::Status::OK, other_join_conjunct_ctxs_, impala::BlockingJoinNode::Prepare(), impala::Expr::Prepare(), probe_expr_ctxs_, process_build_batch_fn_, process_probe_batch_fn_, RETURN_IF_ERROR, impala::ExecNode::row_desc(), impala::ExecNode::runtime_profile(), impala::ExecNode::runtime_profile_, and SCOPED_TIMER.
|
private |
Construct the build hash table, adding all the rows in 'build_batch'.
Definition at line 129 of file hash-join-node-ir.cc.
References impala::RowBatch::GetRow(), hash_tbl_, and impala::RowBatch::num_rows().
Referenced by ConstructBuildSide().
|
private |
Processes a probe batch for the common (non right-outer join) cases. out_batch: the batch for resulting tuple rows probe_batch: the probe batch to process. This function can be called to continue processing a batch in the middle max_added_rows: maximum rows that can be added to out_batch return the number of rows added to out_batch
Definition at line 40 of file hash-join-node-ir.cc.
References impala::RowBatch::AddRows(), impala::OldHashTable::Iterator::AtEnd(), impala::RowBatch::CommitRows(), impala::ExecNode::conjunct_ctxs(), impala::ExecNode::conjunct_ctxs_, impala::RowBatch::CopyRow(), impala::BlockingJoinNode::CreateOutputRow(), impala::BlockingJoinNode::current_probe_row_, impala::ExecNode::EvalConjuncts(), EvalOtherJoinConjuncts2(), impala::RowBatch::GetRow(), impala::OldHashTable::Iterator::GetRow(), hash_tbl_, hash_tbl_iterator_, impala::RowBatch::INVALID_ROW_INDEX, impala::BlockingJoinNode::join_op_, match_all_build_, match_all_probe_, match_one_build_, impala::BlockingJoinNode::matched_probe_, impala::OldHashTable::Iterator::Next(), impala::RowBatch::num_rows(), other_join_conjunct_ctxs_, impala::BlockingJoinNode::probe_batch_pos_, impala::RowBatch::row_byte_size(), impala::ExecNode::rows_returned(), impala::BlockingJoinNode::semi_join_staging_row_, and UNLIKELY.
Referenced by LeftJoinGetNext().
|
protectedvirtualinherited |
Frees any local allocations made by expr_ctxs_to_free_ and returns the result of state->CheckQueryState(). Nodes should call this periodically, e.g. once per input row batch. This should not be called outside the main execution thread. Nodes may override this to add extra periodic cleanup, e.g. freeing other local allocations. ExecNodes overriding this function should return ExecNode::QueryMaintenance().
Reimplemented in impala::PartitionedAggregationNode, and impala::AnalyticEvalNode.
Definition at line 401 of file exec-node.cc.
References impala::RuntimeState::CheckQueryState(), impala::ExecNode::expr_ctxs_to_free_, and impala::ExprContext::FreeLocalAllocations().
Referenced by impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), impala::SelectNode::GetNext(), impala::SortNode::GetNext(), impala::UnionNode::GetNext(), impala::HBaseScanNode::GetNext(), impala::TopNNode::GetNext(), impala::ExchangeNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::HdfsScanNode::GetNextInternal(), impala::HBaseScanNode::Open(), impala::SortNode::Open(), impala::TopNNode::Open(), impala::BlockingJoinNode::Open(), impala::AggregationNode::Open(), impala::PartitionedHashJoinNode::ProcessBuildInput(), impala::AnalyticEvalNode::QueryMaintenance(), impala::PartitionedAggregationNode::QueryMaintenance(), and impala::SortNode::SortInput().
|
inlineinherited |
Definition at line 159 of file exec-node.h.
References impala::ExecNode::limit_, and impala::ExecNode::num_rows_returned_.
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::SelectNode::CopyRows(), impala::UnionNode::EvalAndMaterializeExprs(), impala::HdfsTextScanner::FinishScanRange(), impala::SelectNode::GetNext(), impala::UnionNode::GetNext(), impala::SortNode::GetNext(), impala::HBaseScanNode::GetNext(), impala::ExchangeNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::AnalyticEvalNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::HdfsScanNode::GetNextInternal(), impala::ExchangeNode::GetNextMerging(), impala::AnalyticEvalNode::GetNextOutputBatch(), LeftJoinGetNext(), impala::HdfsSequenceScanner::ProcessBlockCompressedScanRange(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), impala::HdfsSequenceScanner::ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), and impala::PlanFragmentExecutor::ReachedLimit().
|
virtual |
Subclasses should reset any state modified in Open() and GetNext() and then call BlockingJoinNode::Reset().
Reimplemented from impala::BlockingJoinNode.
Definition at line 140 of file hash-join-node.cc.
|
inlineinherited |
Definition at line 156 of file exec-node.h.
References impala::ExecNode::row_descriptor_.
Referenced by impala::CrossJoinNode::BuildListDebugString(), CodegenCreateOutputRow(), impala::PartitionedHashJoinNode::CodegenCreateOutputRow(), impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), impala::BlockingJoinNode::GetLeftChildRowString(), GetNext(), impala::AggregationNode::GetNext(), impala::AnalyticEvalNode::GetNextOutputBatch(), impala::PartitionedAggregationNode::Partition::InitStreams(), impala::TopNNode::Open(), impala::AggregationNode::Open(), impala::AnalyticEvalNode::Open(), impala::PartitionedAggregationNode::Open(), impala::UnionNode::OpenCurrentChild(), impala::SelectNode::Prepare(), impala::SortNode::Prepare(), impala::UnionNode::Prepare(), impala::TopNNode::Prepare(), impala::BlockingJoinNode::Prepare(), Prepare(), impala::AggregationNode::Prepare(), impala::AnalyticEvalNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::ExecNode::Prepare(), impala::PlanFragmentExecutor::Prepare(), impala::PartitionedAggregationNode::Prepare(), impala::HdfsScanNode::Prepare(), impala::PartitionedHashJoinNode::ProcessBuildInput(), impala::PartitionedAggregationNode::ProcessStream(), impala::PlanFragmentExecutor::row_desc(), impala::SortNode::SortInput(), and impala::HdfsScanner::StartNewRowBatch().
|
inlineinherited |
Definition at line 157 of file exec-node.h.
References impala::ExecNode::num_rows_returned_.
Referenced by impala::CrossJoinNode::GetNext(), impala::AnalyticEvalNode::GetNext(), LeftJoinGetNext(), impala::PartitionedAggregationNode::Open(), impala::HdfsSequenceScanner::ProcessDecompressedBlock(), impala::CrossJoinNode::ProcessLeftChildBatch(), ProcessProbeBatch(), and impala::HdfsTextScanner::WriteFields().
|
inlineinherited |
Definition at line 161 of file exec-node.h.
References impala::ExecNode::runtime_profile_.
Referenced by impala::ExecNode::AddRuntimeExecOption(), impala::BlockingJoinNode::BuildSideThread(), impala::ExecNode::CreateTreeHelper(), impala::PartitionedAggregationNode::Partition::InitStreams(), impala::SortNode::Open(), impala::AnalyticEvalNode::Open(), impala::PartitionedAggregationNode::Open(), impala::HdfsScanNode::Open(), impala::HdfsTextScanner::Prepare(), impala::HBaseScanNode::Prepare(), impala::BaseSequenceScanner::Prepare(), impala::ExchangeNode::Prepare(), impala::HdfsParquetScanner::Prepare(), impala::BlockingJoinNode::Prepare(), Prepare(), impala::AggregationNode::Prepare(), impala::AnalyticEvalNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::ExecNode::Prepare(), impala::ScanNode::Prepare(), impala::PlanFragmentExecutor::Prepare(), impala::PartitionedAggregationNode::Prepare(), impala::HdfsScanner::Prepare(), impala::HdfsScanNode::Prepare(), and impala::PartitionedHashJoinNode::ProcessBuildInput().
|
staticinherited |
Set debug action for node with given id in 'tree'.
Definition at line 332 of file exec-node.cc.
References impala::ExecNode::children_, impala::ExecNode::debug_action_, impala::ExecNode::debug_phase_, and impala::ExecNode::id_.
Referenced by impala::PlanFragmentExecutor::Prepare().
|
inlineinherited |
Definition at line 155 of file exec-node.h.
References impala::ExecNode::type_.
Referenced by impala::ExecNode::CodegenEvalConjuncts(), impala::PartitionedAggregationNode::CodegenUpdateTuple(), and impala::PlanFragmentExecutor::Prepare().
|
private |
Definition at line 103 of file hash-join-node.h.
Referenced by ConstructBuildSide(), and Prepare().
|
private |
Definition at line 73 of file hash-join-node.h.
Referenced by AddToDebugString(), Close(), ConstructBuildSide(), Init(), and Prepare().
|
protectedinherited |
Definition at line 70 of file blocking-join-node.h.
Referenced by impala::BlockingJoinNode::Close(), ConstructBuildSide(), impala::BlockingJoinNode::Prepare(), and impala::BlockingJoinNode::Reset().
|
protectedinherited |
Definition at line 102 of file blocking-join-node.h.
Referenced by impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), impala::BlockingJoinNode::Prepare(), and impala::PartitionedHashJoinNode::ProcessBuildInput().
|
protectedinherited |
Definition at line 100 of file blocking-join-node.h.
Referenced by impala::CrossJoinNode::ConstructBuildSide(), ConstructBuildSide(), and impala::BlockingJoinNode::Prepare().
|
protectedinherited |
Definition at line 89 of file blocking-join-node.h.
Referenced by CodegenCreateOutputRow(), impala::PartitionedHashJoinNode::CodegenCreateOutputRow(), impala::BlockingJoinNode::CreateOutputRow(), and impala::BlockingJoinNode::Prepare().
|
protectedinherited |
If true, this node can add filters to the probe (left child) node after processing the entire build side.
Definition at line 98 of file blocking-join-node.h.
Referenced by impala::PartitionedHashJoinNode::AllocateProbeFilters(), impala::PartitionedHashJoinNode::AttachProbeFilters(), impala::PartitionedHashJoinNode::BuildHashTables(), ConstructBuildSide(), HashJoinNode(), and impala::PartitionedHashJoinNode::PartitionedHashJoinNode().
|
protectedinherited |
Definition at line 214 of file exec-node.h.
Referenced by impala::ExecNode::child(), impala::ExecNode::Close(), impala::ExecNode::CollectNodes(), impala::ExecNode::CreateTreeHelper(), impala::HBaseScanNode::DebugString(), impala::UnionNode::GetNext(), impala::UnionNode::Open(), impala::AggregationNode::Open(), impala::PartitionedAggregationNode::Open(), impala::UnionNode::OpenCurrentChild(), impala::ExecNode::Prepare(), impala::PartitionedAggregationNode::ProcessStream(), impala::ExecNode::Reset(), and impala::ExecNode::SetDebugOptions().
|
private |
llvm function for build batch
Definition at line 91 of file hash-join-node.h.
Referenced by Prepare().
|
protectedinherited |
Definition at line 212 of file exec-node.h.
Referenced by impala::ExecNode::Close(), CodegenProcessProbeBatch(), impala::PartitionedHashJoinNode::CodegenProcessProbeBatch(), impala::ExecNode::conjunct_ctxs(), impala::SelectNode::CopyRows(), impala::UnionNode::EvalAndMaterializeExprs(), impala::HBaseScanNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::AnalyticEvalNode::GetNextOutputBatch(), impala::TopNNode::Init(), impala::ExecNode::Init(), impala::PartitionedHashJoinNode::Init(), impala::ExecNode::Open(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), impala::ExecNode::Prepare(), impala::CrossJoinNode::ProcessLeftChildBatch(), ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ProcessProbeBatch().
|
protectedinherited |
Definition at line 82 of file blocking-join-node.h.
Referenced by GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::PartitionedHashJoinNode::NextProbeRowBatch(), impala::PartitionedHashJoinNode::NextSpilledProbeRowBatch(), impala::BlockingJoinNode::Open(), impala::CrossJoinNode::ProcessLeftChildBatch(), ProcessProbeBatch(), impala::PartitionedHashJoinNode::ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ResetForProbe().
|
protectedinherited |
Definition at line 220 of file exec-node.h.
Referenced by impala::ExecNode::ExecDebugAction(), and impala::ExecNode::SetDebugOptions().
|
protectedinherited |
debug-only: if debug_action_ is not INVALID, node will perform action in debug_phase_
Definition at line 219 of file exec-node.h.
Referenced by impala::ExecNode::ExecDebugAction(), and impala::ExecNode::SetDebugOptions().
|
protectedinherited |
Definition at line 69 of file blocking-join-node.h.
Referenced by impala::BlockingJoinNode::DebugString(), impala::CrossJoinNode::GetNext(), GetNext(), LeftJoinGetNext(), impala::BlockingJoinNode::Open(), and impala::BlockingJoinNode::Reset().
|
protectedinherited |
Execution options that are determined at runtime. This is added to the runtime profile at Close(). Examples for options logged here would be "Codegen Enabled"
Definition at line 238 of file exec-node.h.
Referenced by impala::ExecNode::AddRuntimeExecOption().
|
protectedinherited |
MemTracker that should be used for ExprContexts.
Definition at line 233 of file exec-node.h.
Referenced by impala::ExecNode::expr_mem_tracker(), and impala::ExecNode::Prepare().
|
private |
Definition at line 67 of file hash-join-node.h.
Referenced by Close(), CodegenProcessBuildBatch(), CodegenProcessProbeBatch(), ConstructBuildSide(), GetNext(), InitGetNext(), Prepare(), ProcessBuildBatch(), and ProcessProbeBatch().
|
private |
Definition at line 68 of file hash-join-node.h.
Referenced by GetNext(), InitGetNext(), LeftJoinGetNext(), and ProcessProbeBatch().
|
private |
Definition at line 104 of file hash-join-node.h.
Referenced by ConstructBuildSide(), and Prepare().
|
protectedinherited |
Definition at line 209 of file exec-node.h.
Referenced by impala::PartitionedAggregationNode::CreateHashPartitions(), impala::ExecNode::id(), impala::ExecNode::InitRuntimeProfile(), impala::PartitionedAggregationNode::NextPartition(), impala::ExchangeNode::Prepare(), impala::PartitionedHashJoinNode::PrepareNextPartition(), impala::PartitionedHashJoinNode::ProcessBuildInput(), and impala::ExecNode::SetDebugOptions().
|
protectedinherited |
Definition at line 68 of file blocking-join-node.h.
Referenced by impala::PartitionedHashJoinNode::CleanUpHashPartitions(), impala::PartitionedHashJoinNode::CodegenCreateOutputRow(), impala::PartitionedHashJoinNode::CodegenProcessProbeBatch(), impala::PartitionedHashJoinNode::GetNext(), HashJoinNode(), impala::PartitionedHashJoinNode::Init(), impala::PartitionedHashJoinNode::MinRequiredBuffers(), impala::PartitionedHashJoinNode::NextSpilledProbeRowBatch(), impala::PartitionedHashJoinNode::NodeDebugString(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), impala::CrossJoinNode::Prepare(), impala::BlockingJoinNode::Prepare(), Prepare(), impala::PartitionedHashJoinNode::Prepare(), and ProcessProbeBatch().
|
protectedinherited |
Definition at line 222 of file exec-node.h.
Referenced by impala::SortNode::GetNext(), impala::HdfsScanNode::GetNextInternal(), impala::ExchangeNode::GetNextMerging(), impala::TopNNode::InsertTupleRow(), impala::HdfsScanNode::limit(), impala::ExecNode::limit(), impala::TopNNode::Open(), and impala::ExecNode::ReachedLimit().
|
static |
Definition at line 59 of file hash-join-node.h.
|
private |
Output all rows coming from the build input. Used in RIGHT_OUTER_JOIN and FULL_OUTER_JOIN.
Definition at line 88 of file hash-join-node.h.
Referenced by GetNext(), HashJoinNode(), Prepare(), and ProcessProbeBatch().
|
private |
Derived from join_op_ Output all rows coming from the probe input. Used in LEFT_OUTER_JOIN and FULL_OUTER_JOIN.
Definition at line 81 of file hash-join-node.h.
Referenced by CodegenCreateOutputRow(), GetNext(), HashJoinNode(), and ProcessProbeBatch().
|
private |
Match at most one build row to each probe row. Used in LEFT_SEMI_JOIN.
Definition at line 84 of file hash-join-node.h.
Referenced by HashJoinNode(), and ProcessProbeBatch().
|
protectedinherited |
Definition at line 83 of file blocking-join-node.h.
Referenced by GetNext(), InitGetNext(), ProcessProbeBatch(), impala::PartitionedHashJoinNode::ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ResetForProbe().
|
protectedinherited |
Account for peak memory used by this node.
Definition at line 230 of file exec-node.h.
Referenced by impala::ExecNode::mem_tracker(), and impala::ExecNode::Prepare().
|
protectedinherited |
Definition at line 67 of file blocking-join-node.h.
Referenced by impala::BlockingJoinNode::DebugString(), and impala::BlockingJoinNode::Open().
|
protectedinherited |
Definition at line 223 of file exec-node.h.
Referenced by impala::ExecNode::Close(), impala::SelectNode::CopyRows(), impala::UnionNode::EvalAndMaterializeExprs(), impala::SortNode::GetNext(), impala::HBaseScanNode::GetNext(), impala::TopNNode::GetNext(), impala::ExchangeNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::AnalyticEvalNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::HdfsScanNode::GetNextInternal(), impala::ExchangeNode::GetNextMerging(), impala::AnalyticEvalNode::GetNextOutputBatch(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), impala::ExecNode::ReachedLimit(), and impala::ExecNode::rows_returned().
|
private |
non-equi-join conjuncts from the JOIN clause
Definition at line 76 of file hash-join-node.h.
Referenced by Close(), CodegenProcessProbeBatch(), ConstructBuildSide(), GetNext(), Init(), Prepare(), and ProcessProbeBatch().
|
protectedinherited |
Definition at line 211 of file exec-node.h.
Referenced by impala::SortNode::Init(), impala::UnionNode::Init(), impala::TopNNode::Init(), impala::ExchangeNode::Init(), Init(), impala::AggregationNode::Init(), impala::ExecNode::Init(), impala::PartitionedHashJoinNode::Init(), impala::AnalyticEvalNode::Init(), impala::PartitionedAggregationNode::Init(), impala::ExecNode::InitRuntimeProfile(), impala::HdfsScanNode::Open(), impala::PartitionedHashJoinNode::Prepare(), and impala::PartitionedHashJoinNode::ProcessBuildInput().
|
protectedinherited |
probe_batch_ must be cleared before calling GetNext(). The child node does not initialize all tuple ptrs in the row, only the ones that it is responsible for.
Definition at line 75 of file blocking-join-node.h.
Referenced by impala::BlockingJoinNode::Close(), impala::CrossJoinNode::GetNext(), GetNext(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::NextProbeRowBatch(), impala::PartitionedHashJoinNode::NextSpilledProbeRowBatch(), impala::BlockingJoinNode::Open(), impala::PartitionedHashJoinNode::OutputNullAwareNullProbe(), impala::PartitionedHashJoinNode::OutputNullAwareProbeRows(), impala::BlockingJoinNode::Prepare(), impala::PartitionedHashJoinNode::PrepareNullAwareNullProbe(), impala::PartitionedHashJoinNode::PrepareNullAwarePartition(), impala::PartitionedHashJoinNode::ProcessProbeBatch(), impala::BlockingJoinNode::Reset(), and impala::BlockingJoinNode::~BlockingJoinNode().
|
protectedinherited |
TODO: These variables should move to a join control block struct, which is local to each probing thread.
Definition at line 81 of file blocking-join-node.h.
Referenced by impala::PartitionedHashJoinNode::CleanUpHashPartitions(), impala::BlockingJoinNode::DebugString(), impala::CrossJoinNode::GetNext(), GetNext(), impala::PartitionedHashJoinNode::GetNext(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::NextProbeRowBatch(), impala::PartitionedHashJoinNode::NextSpilledProbeRowBatch(), impala::BlockingJoinNode::Open(), impala::PartitionedHashJoinNode::OutputNullAwareNullProbe(), impala::PartitionedHashJoinNode::OutputNullAwareProbeRows(), impala::PartitionedHashJoinNode::PrepareNullAwareNullProbe(), impala::PartitionedHashJoinNode::PrepareNullAwarePartition(), impala::CrossJoinNode::ProcessLeftChildBatch(), ProcessProbeBatch(), impala::PartitionedHashJoinNode::ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ResetForProbe().
|
private |
our equi-join predicates "<lhs> = <rhs>" are separated into build_exprs_ (over child(1)) and probe_exprs_ (over child(0))
Definition at line 72 of file hash-join-node.h.
Referenced by AddToDebugString(), Close(), ConstructBuildSide(), Init(), and Prepare().
|
protectedinherited |
Definition at line 103 of file blocking-join-node.h.
Referenced by impala::CrossJoinNode::GetNext(), GetNext(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::NextProbeRowBatch(), impala::BlockingJoinNode::Open(), and impala::BlockingJoinNode::Prepare().
|
protectedinherited |
Definition at line 77 of file blocking-join-node.h.
Referenced by impala::CrossJoinNode::GetNext(), GetNext(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::NextProbeRowBatch(), impala::BlockingJoinNode::Open(), and impala::BlockingJoinNode::Reset().
|
protectedinherited |
Definition at line 101 of file blocking-join-node.h.
Referenced by impala::CrossJoinNode::GetNext(), GetNext(), impala::PartitionedHashJoinNode::GetNext(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), and impala::BlockingJoinNode::Prepare().
|
protectedinherited |
Size of the TupleRow (just the Tuple ptrs) from the build (right) and probe (left) sides. Set to zero if the build/probe tuples are not returned, e.g., for semi joins. Cached because it is used in the hot path.
Definition at line 88 of file blocking-join-node.h.
Referenced by CodegenCreateOutputRow(), impala::PartitionedHashJoinNode::CodegenCreateOutputRow(), impala::BlockingJoinNode::CreateOutputRow(), and impala::BlockingJoinNode::Prepare().
|
private |
Definition at line 96 of file hash-join-node.h.
Referenced by ConstructBuildSide(), and Prepare().
|
private |
Jitted ProcessProbeBatch function pointer. Null if codegen is disabled.
Definition at line 101 of file hash-join-node.h.
Referenced by LeftJoinGetNext(), and Prepare().
|
protectedinherited |
Definition at line 215 of file exec-node.h.
Referenced by impala::SortNode::Open(), impala::SortNode::Prepare(), impala::TopNNode::Prepare(), impala::ExchangeNode::Prepare(), and impala::ExecNode::row_desc().
|
staticinherited |
Names of counters shared by all exec nodes.
Definition at line 169 of file exec-node.h.
Referenced by impala::ExecNode::Prepare().
|
protectedinherited |
Definition at line 226 of file exec-node.h.
Referenced by impala::ExecNode::Close(), impala::SelectNode::CopyRows(), impala::UnionNode::EvalAndMaterializeExprs(), impala::SortNode::GetNext(), impala::HBaseScanNode::GetNext(), impala::TopNNode::GetNext(), impala::ExchangeNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::AnalyticEvalNode::GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::HdfsScanNode::GetNextInternal(), impala::ExchangeNode::GetNextMerging(), LeftJoinGetNext(), impala::PartitionedHashJoinNode::OutputUnmatchedBuild(), and impala::ExecNode::Prepare().
|
protectedinherited |
Definition at line 227 of file exec-node.h.
Referenced by impala::ExecNode::Prepare().
|
protectedinherited |
Definition at line 239 of file exec-node.h.
Referenced by impala::ExecNode::AddRuntimeExecOption().
|
protectedinherited |
Definition at line 225 of file exec-node.h.
Referenced by impala::HBaseScanNode::Close(), impala::SelectNode::GetNext(), impala::SortNode::GetNext(), impala::UnionNode::GetNext(), impala::HBaseScanNode::GetNext(), impala::TopNNode::GetNext(), impala::ExchangeNode::GetNext(), impala::CrossJoinNode::GetNext(), GetNext(), impala::AggregationNode::GetNext(), impala::AnalyticEvalNode::GetNext(), impala::PartitionedHashJoinNode::GetNext(), impala::PartitionedAggregationNode::GetNext(), impala::HdfsScanNode::GetNext(), impala::ExecNode::InitRuntimeProfile(), impala::SelectNode::Open(), impala::HBaseScanNode::Open(), impala::UnionNode::Open(), impala::SortNode::Open(), impala::TopNNode::Open(), impala::ExchangeNode::Open(), impala::DataSourceScanNode::Open(), impala::BlockingJoinNode::Open(), impala::AggregationNode::Open(), impala::AnalyticEvalNode::Open(), impala::PartitionedAggregationNode::Open(), impala::SelectNode::Prepare(), impala::SortNode::Prepare(), impala::UnionNode::Prepare(), impala::TopNNode::Prepare(), impala::BlockingJoinNode::Prepare(), Prepare(), impala::AggregationNode::Prepare(), impala::PartitionedHashJoinNode::Prepare(), impala::AnalyticEvalNode::Prepare(), impala::ExecNode::Prepare(), impala::ScanNode::Prepare(), impala::PartitionedAggregationNode::Prepare(), impala::HdfsScanNode::Prepare(), impala::ExecNode::runtime_profile(), and impala::HdfsScanNode::StopAndFinalizeCounters().
|
protectedinherited |
Row assembled from all lhs and rhs tuples used for evaluating the non-equi-join conjuncts for semi joins. Semi joins only return the lhs or rhs output tuples, so this tuple is temporarily assembled for evaluating the conjuncts.
Definition at line 94 of file blocking-join-node.h.
Referenced by impala::BlockingJoinNode::Close(), impala::PartitionedHashJoinNode::EvaluateNullProbe(), impala::PartitionedHashJoinNode::OutputNullAwareProbeRows(), impala::BlockingJoinNode::Prepare(), ProcessProbeBatch(), and impala::PartitionedHashJoinNode::ProcessProbeBatch().
|
protectedinherited |
Definition at line 210 of file exec-node.h.
Referenced by impala::ExecNode::CollectNodes(), and impala::ExecNode::type().