[ https://issues.apache.org/jira/browse/IMPALA-2743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tim Armstrong updated IMPALA-2743: ---------------------------------- Issue Type: Improvement (was: Bug) > Propagate IS NOT NULL to scans from cols in inner joins > ------------------------------------------------------- > > Key: IMPALA-2743 > URL: https://issues.apache.org/jira/browse/IMPALA-2743 > Project: IMPALA > Issue Type: Improvement > Components: Frontend > Affects Versions: Impala 2.2, Impala 2.3.0 > Reporter: Mostafa Mokhtar > Priority: Minor > Labels: performance, planner, ramp-up > > Columns involved inner joins and filters should have a "IS NOT NULL" filter > pushed to the ScanNode. Other operators reading the value for the column > shouldn't be re-checking if the value is null again. > When using Parquet file format ideally we should be using the stats to short > circuit these filters. > Currently whenever a slot is read by any of the operators SlotRef checks if > the value is NULL which adds unnecessary branches and instructions. > {code} > BigIntVal SlotRef::GetBigIntVal(ExprContext* context, TupleRow* row) { > DCHECK_EQ(type_.type, TYPE_BIGINT); > Tuple* t = row->GetTuple(tuple_idx_); > if (t == NULL || t->IsNull(null_indicator_offset_)) return > BigIntVal::null(); > return BigIntVal(*reinterpret_cast<int64_t*>(t->GetSlot(slot_offset_))); > } > {code} > {code} > impalad!impala::Tuple::IsNull > impalad!impala::SlotRef::GetBigIntVal - [Unknown] > impalad!impala::SlotRef::GetBigIntVal - [Unknown] > impalad!impala::ExprContext::GetValue+0x13b - [Unknown]:[Unknown] > impalad!impala::HashTableCtx::EvalRow+0xb7 - [Unknown]:[Unknown] > impalad!impala::PartitionedHashJoinNode::Partition::BuildHashTableInternal<(bool)0>+0x372 > - [Unknown]:[Unknown] > impalad!impala::PartitionedHashJoinNode::Partition::BuildHashTable+0xd - > [Unknown]:[Unknown] > impalad!impala::PartitionedHashJoinNode::BuildHashTables+0xa0 - > [Unknown]:[Unknown] > impalad!impala::PartitionedHashJoinNode::ProcessBuildInput+0xc71 - > [Unknown]:[Unknown] > impalad!impala::PartitionedHashJoinNode::ConstructBuildSide+0x106 - > [Unknown]:[Unknown] > impalad!impala::BlockingJoinNode::BuildSideThread+0x7f - [Unknown]:[Unknown] > impalad!impala::Thread::SuperviseThread+0x1b9 - [Unknown]:[Unknown] > impalad!boost::detail::thread_data<boost::_bi::bind_t<void, void > (*)(std::string const&, std::string const&, boost::function<void (void)>, > impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, > boost::_bi::value<std::string>, boost::_bi::value<boost::function<void > (void)>>, boost::_bi::value<impala::Promise<long>*>>>>::run+0x7f - > [Unknown]:[Unknown] > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org For additional commands, e-mail: issues-all-h...@impala.apache.org