Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
Impala 2.10.0
-
None
-
ghx-label-4
Description
This query on tpch_parquet throws an IllegalStateException for me on master commit dbd596bebbd4ed2e4a34ca0aa14a8a9bfcca8c62
select *
from tpch_parquet.lineitem
left join tpch_parquet.part on if(l_orderkey % 2 = 0, NULL, l_partkey) = p_partkey
where l_orderkey = 965 and l_extendedprice * l_tax = p_retailprice;
Output from impalad.INFO is:
I0628 13:52:30.222602 18838 Frontend.java:931] Compiled query. I0628 13:52:30.289227 18838 jni-util.cc:176] java.lang.IllegalStateException at com.google.common.base.Preconditions.checkState(Preconditions.java:129) at org.apache.impala.planner.RuntimeFilterGenerator.computeTargetExpr(RuntimeFilterGenerator.java:596) at org.apache.impala.planner.RuntimeFilterGenerator.assignRuntimeFilters(RuntimeFilterGenerator.java:551) at org.apache.impala.planner.RuntimeFilterGenerator.generateFilters(RuntimeFilterGenerator.java:487) at org.apache.impala.planner.RuntimeFilterGenerator.generateFilters(RuntimeFilterGenerator.java:480) at org.apache.impala.planner.RuntimeFilterGenerator.generateRuntimeFilters(RuntimeFilterGenerator.java:411) at org.apache.impala.planner.Planner.createPlan(Planner.java:120) at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1008) at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1104) at org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:156) I0628 13:52:30.330711 18838 status.cc:122] IllegalStateException: null @ 0x125d6c5 impala::Status::Status() @ 0x1654f54 impala::JniUtil::GetJniExceptionMsg() @ 0x150d280 impala::JniUtil::CallJniMethod<>() @ 0x1509755 impala::Frontend::GetExecRequest() @ 0x1528b9e impala::ImpalaServer::ExecuteInternal() @ 0x1528718 impala::ImpalaServer::Execute() @ 0x1592daa impala::ImpalaServer::query() @ 0x1a8ca54 beeswax::BeeswaxServiceProcessor::process_query() @ 0x1a8c7a2 beeswax::BeeswaxServiceProcessor::dispatchCall() @ 0x1a750a1 impala::ImpalaServiceProcessor::dispatchCall() @ 0x1204d6e apache::thrift::TDispatchProcessor::process() @ 0x29230cb apache::thrift::server::TThreadPoolServer::Task::run() @ 0x290ba49 apache::thrift::concurrency::ThreadManager::Worker::run() @ 0x13ca54d impala::ThriftThread::RunRunnable() @ 0x13cbc79 boost::_mfi::mf2<>::operator()() @ 0x13cbb0f boost::_bi::list3<>::operator()<>() @ 0x13cb85b boost::_bi::bind_t<>::operator()() @ 0x13cb76e boost::detail::function::void_function_obj_invoker0<>::invoke() @ 0x13da2d8 boost::function0<>::operator()() @ 0x16ae059 impala::Thread::SuperviseThread() @ 0x16b69c8 boost::_bi::list4<>::operator()<>() @ 0x16b690b boost::_bi::bind_t<>::operator()() @ 0x16b68ce boost::detail::thread_data<>::run() @ 0x1ba1bda thread_proxy @ 0x7faf6df5a6ba start_thread @ 0x7faf6e48c82d clone
If I remove the multiplication in the where clause I don't see this:
select *
from tpch_parquet.lineitem
left join tpch_parquet.part on if(l_orderkey % 2 = 0, NULL, l_partkey) = p_partkey
where l_orderkey = 965 and l_extendedprice = p_retailprice;