You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Tianyi Wang (JIRA)" <ji...@apache.org> on 2017/09/13 17:28:00 UTC
[jira] [Resolved] (IMPALA-5597) IllegalStateException in
RuntimeFilterGenerator.computeTargetExpr() with left join
[ https://issues.apache.org/jira/browse/IMPALA-5597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tianyi Wang resolved IMPALA-5597.
---------------------------------
Resolution: Fixed
Fix Version/s: Impala 2.10.0
IMPALA-5597: Try casting targetExpr when building runtime filter plan
This patch fixes a bug that fails a precondition check when generating
runtime filter plans. The lhs and rhs or join predicate might have
different types when the eq predicate function accepts wildcard-typed
parameters. In this case in existing code the types of source and target
expr will be found mismatch and an exception will be thrown when
generating runtime filters. This patch tries to cast target expr to be
of the same type as source expr. A testcase is added to joins.test
Change-Id: I0d66673e280ce13cd3a514236c0c2ecbc50475a6
Reviewed-on: http://gerrit.cloudera.org:8080/7949
Reviewed-by: Alex Behm <al...@cloudera.com>
Tested-by: Impala Public Jenkins
> IllegalStateException in RuntimeFilterGenerator.computeTargetExpr() with left join
> ----------------------------------------------------------------------------------
>
> Key: IMPALA-5597
> URL: https://issues.apache.org/jira/browse/IMPALA-5597
> Project: IMPALA
> Issue Type: Bug
> Components: Frontend
> Affects Versions: Impala 2.10.0
> Reporter: Tim Armstrong
> Assignee: Tianyi Wang
> Fix For: Impala 2.10.0
>
>
> This query on tpch_parquet throws an IllegalStateException for me on master commit dbd596bebbd4ed2e4a34ca0aa14a8a9bfcca8c62
> {code}
> 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;
> {code}
> Output from impalad.INFO is:
> {code}
> 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
> {code}
> If I remove the multiplication in the where clause I don't see this:
> {code}
> 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;
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)