You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "Tim Armstrong (JIRA)" <ji...@apache.org> on 2018/10/30 17:42:00 UTC

[jira] [Updated] (IMPALA-2743) Propagate IS NOT NULL to scans from cols in inner joins

     [ 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-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org