You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Attila Jeges (JIRA)" <ji...@apache.org> on 2019/06/27 13:48:00 UTC
[jira] [Created] (IMPALA-8719) SELECT from view fails with
"AnalysisException: Column/field reference is ambiguous" after expression
rewite
Attila Jeges created IMPALA-8719:
------------------------------------
Summary: SELECT from view fails with "AnalysisException: Column/field reference is ambiguous" after expression rewite
Key: IMPALA-8719
URL: https://issues.apache.org/jira/browse/IMPALA-8719
Project: IMPALA
Issue Type: Bug
Components: Frontend
Affects Versions: Impala 3.3.0
Reporter: Attila Jeges
Minimal repro:
{code}
CREATE DATABASE tmp;
CREATE EXTERNAL TABLE tmp.a_tbl (col1 BIGINT, col2 INT);
CREATE EXTERNAL TABLE tmp.b_tbl (col1 BIGINT);
CREATE VIEW tmp.c_view
AS SELECT a.col1 as c1, a.col2 as c2
FROM tmp.a_tbl a INNER JOIN tmp.b_tbl b ON a.col1 = b.col1;
SELECT * FROM tmp.c_view WHERE ((c1 = 1 AND c2 = 2) OR (c1 = 11 AND c2 = 12)) AND c2 = 22;
{code}
We should get 0 rows, but instead the query fails with "ERROR: IllegalStateException: null" and in the impalad log we get the following:
{code}
W0627 15:38:07.103969 31182 Expr.java:1201] a94d3fb39954fe29:ef89dd2300000000] Not able to analyze after rewrite: org.apache.impala.common.AnalysisException: Column/field reference is ambiguous: 'col1' conjuncts: CompoundPredicate{op=OR, CompoundPredicate{op=AND, BoolLiteral{value=false} BinaryPredicate{op==, SlotRef{label=a.col1, path=col1, type=BIGINT, id=0} NumericLiteral{value=1, type=TINYINT}}} CompoundPredicate{op=AND, BoolLiteral{value=false} BinaryPredicate{op==, SlotRef{label=a.col1, path=col1, type=BIGINT, id=0} NumericLiteral{value=11, type=TINYINT}}}} BinaryPredicate{op==, SlotRef{label=a.col2, path=col2, type=INT, id=2} NumericLiteral{value=22, type=INT}, isInferred=true}
I0627 15:38:07.104437 31182 jni-util.cc:288] a94d3fb39954fe29:ef89dd2300000000] java.lang.IllegalStateException
at com.google.common.base.Preconditions.checkState(Preconditions.java:133)
at org.apache.impala.analysis.SlotRef.isBoundBySlotIds(SlotRef.java:222)
at org.apache.impala.analysis.Expr.isBoundBySlotIds(Expr.java:1230)
at org.apache.impala.analysis.Expr.isBoundBySlotIds(Expr.java:1230)
at org.apache.impala.analysis.Expr.isBoundBySlotIds(Expr.java:1230)
at org.apache.impala.planner.HdfsPartitionPruner.prunePartitions(HdfsPartitionPruner.java:124)
at org.apache.impala.planner.SingleNodePlanner.createHdfsScanPlan(SingleNodePlanner.java:1265)
at org.apache.impala.planner.SingleNodePlanner.createScanNode(SingleNodePlanner.java:1391)
at org.apache.impala.planner.SingleNodePlanner.createTableRefNode(SingleNodePlanner.java:1578)
at org.apache.impala.planner.SingleNodePlanner.createTableRefsPlan(SingleNodePlanner.java:822)
at org.apache.impala.planner.SingleNodePlanner.createSelectPlan(SingleNodePlanner.java:658)
at org.apache.impala.planner.SingleNodePlanner.createQueryPlan(SingleNodePlanner.java:261)
at org.apache.impala.planner.SingleNodePlanner.createInlineViewPlan(SingleNodePlanner.java:1096)
at org.apache.impala.planner.SingleNodePlanner.createTableRefNode(SingleNodePlanner.java:1589)
at org.apache.impala.planner.SingleNodePlanner.createTableRefsPlan(SingleNodePlanner.java:822)
at org.apache.impala.planner.SingleNodePlanner.createSelectPlan(SingleNodePlanner.java:658)
at org.apache.impala.planner.SingleNodePlanner.createQueryPlan(SingleNodePlanner.java:261)
at org.apache.impala.planner.SingleNodePlanner.createSingleNodePlan(SingleNodePlanner.java:151)
at org.apache.impala.planner.Planner.createPlan(Planner.java:105)
at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1136)
at org.apache.impala.service.Frontend.getPlannedExecRequest(Frontend.java:1430)
at org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:1309)
at org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:1217)
at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1187)
at org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:153)
I0627 15:38:07.302868 31182 status.cc:124] a94d3fb39954fe29:ef89dd2300000000] IllegalStateException: null
@ 0x1b0b92c impala::Status::Status()
@ 0x22c3ba4 impala::JniUtil::GetJniExceptionMsg()
@ 0x2101acf impala::JniCall::Call<>()
@ 0x20fec9d impala::JniUtil::CallJniMethod<>()
@ 0x20fd0e6 impala::Frontend::GetExecRequest()
@ 0x212acb2 impala::ImpalaServer::ExecuteInternal()
@ 0x212a79a impala::ImpalaServer::Execute()
@ 0x21acf82 impala::ImpalaServer::query()
@ 0x26fdcf1 beeswax::BeeswaxServiceProcessor::process_query()
@ 0x26fda3f beeswax::BeeswaxServiceProcessor::dispatchCall()
@ 0x26cc05c impala::ImpalaServiceProcessor::dispatchCall()
@ 0x1abad1d apache::thrift::TDispatchProcessor::process()
@ 0x1f09cc9 apache::thrift::server::TAcceptQueueServer::Task::run()
@ 0x1f002f8 impala::ThriftThread::RunRunnable()
@ 0x1f01a1e boost::_mfi::mf2<>::operator()()
@ 0x1f018b4 boost::_bi::list3<>::operator()<>()
@ 0x1f01600 boost::_bi::bind_t<>::operator()()
@ 0x1f01513 boost::detail::function::void_function_obj_invoker0<>::invoke()
@ 0x1e26249 boost::function0<>::operator()()
@ 0x2339ea8 impala::Thread::SuperviseThread()
@ 0x234222c boost::_bi::list5<>::operator()<>()
@ 0x2342150 boost::_bi::bind_t<>::operator()()
@ 0x2342113 boost::detail::thread_data<>::run()
@ 0x3a0cd09 thread_proxy
@ 0x7f3a31cf66da start_thread
@ 0x7f3a2e34488e clone
{code}
Workarounds:
Disabling expression rewrites (SET enable_expr_rewrites=false) fixes the issue.
Renaming 'col1' column to something else in one of the tables and then recreating the view is another workaround.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)