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)