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 "Daniel Becker (Jira)" <ji...@apache.org> on 2023/06/12 10:29:00 UTC

[jira] [Updated] (IMPALA-12001) Select distinct() with complex types errors or crashes

     [ https://issues.apache.org/jira/browse/IMPALA-12001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Becker updated IMPALA-12001:
-----------------------------------
    Summary: Select distinct() with complex types errors or crashes  (was: Select distinct() with complex types does not work)

> Select distinct() with complex types errors or crashes
> ------------------------------------------------------
>
>                 Key: IMPALA-12001
>                 URL: https://issues.apache.org/jira/browse/IMPALA-12001
>             Project: IMPALA
>          Issue Type: Bug
>            Reporter: Daniel Becker
>            Priority: Major
>              Labels: complextype
>
> Queries with select distinct on a complex type fail.
> With structs, we get a FE exception:
> {code:java}
> set disable_codegen=1; use functional_parquet;
> select distinct(struct_val) from alltypes_structs;
> {code}
> {code:java}
> [1] com.google.common.base.Preconditions.checkState (Preconditions.java:486)
> [2] org.apache.impala.analysis.SlotRef.addStructChildrenAsSlotRefs (SlotRef.java:249)
> [3] org.apache.impala.analysis.SlotRef.<init> (SlotRef.java:91)
> [4] org.apache.impala.analysis.AggregateInfoBase.createTupleDesc (AggregateInfoBase.java:135)
> [5] org.apache.impala.analysis.AggregateInfoBase.createTupleDescs (AggregateInfoBase.java:101)
> [6] org.apache.impala.analysis.AggregateInfo.create (AggregateInfo.java:150)
> [7] org.apache.impala.analysis.AggregateInfo.create (AggregateInfo.java:171)
> [8] org.apache.impala.analysis.MultiAggregateInfo.analyze (MultiAggregateInfo.java:297)
> [9] org.apache.impala.analysis.SelectStmt$SelectAnalyzer.buildAggregateExprs (SelectStmt.java:1,148)
> [10] org.apache.impala.analysis.SelectStmt$SelectAnalyzer.analyze (SelectStmt.java:355)
> [11] org.apache.impala.analysis.SelectStmt$SelectAnalyzer.access$100 (SelectStmt.java:282)
> [12] org.apache.impala.analysis.SelectStmt.analyze (SelectStmt.java:274)
> [13] org.apache.impala.analysis.AnalysisContext.analyze (AnalysisContext.java:521)
> [14] org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize (AnalysisContext.java:468)
> [15] org.apache.impala.service.Frontend.doCreateExecRequest (Frontend.java:2,116)
> [16] org.apache.impala.service.Frontend.getTExecRequest (Frontend.java:2,003)
> [17] org.apache.impala.service.Frontend.createExecRequest (Frontend.java:1,805)
> [18] org.apache.impala.service.JniFrontend.createExecRequest (JniFrontend.java:164)
> {code}
> With collections the BE hits a DCHECK and crashes:
> {code:java}
> use functional_parquet;
> select distinct(arr1) from complextypes_arrays;
> {code}
> {code:java}
> #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
> #1  0x00007f2bae54b7f1 in __GI_abort () at abort.c:79
> #2  0x00000000020a7763 in google::DumpStackTraceAndExit() [clone .cold] ()
> #3  0x000000000593c4ad in google::LogMessage::Fail() ()
> #4  0x000000000593e3e4 in google::LogMessage::SendToLog() ()
> #5  0x000000000593be8c in google::LogMessage::Flush() ()
> #6  0x000000000593e909 in google::LogMessageFatal::~LogMessageFatal() ()
> #7  0x000000000278b90e in impala::SlotDescriptor::SlotDescriptor (this=0xe82a300, tdesc=..., parent=0xe40d710, children_tuple_descriptor=0x0) at /home/danielbecker/Impala/be/src/runtime/descriptors.cc:114
> #8  0x00000000027909aa in impala::DescriptorTbl::CreateInternal (pool=0x18ec7b30, thrift_tbl=..., tbl=0x18ec7aa8) at /home/danielbecker/Impala/be/src/runtime/descriptors.cc:638
> #9  0x000000000279050a in impala::DescriptorTbl::Create (pool=0x18ec7b30, serialized_thrift_tbl=..., tbl=0x18ec7aa8) at /home/danielbecker/Impala/be/src/runtime/descriptors.cc:609
> #10 0x00000000026dfd6d in impala::QueryState::StartFInstances (this=0x18ec7200) at /home/danielbecker/Impala/be/src/runtime/query-state.cc:822
> #11 0x00000000026cedd7 in impala::QueryExecMgr::ExecuteQueryHelper (this=0xeeb4480, qs=0x18ec7200) at /home/danielbecker/Impala/be/src/runtime/query-exec-mgr.cc:162
> #12 0x00000000026d84b4 in boost::_mfi::mf1<void, impala::QueryExecMgr, impala::QueryState*>::operator() (this=0x12444800, p=0xeeb4480, a1=0x18ec7200)
>     at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/mem_fn_template.hpp:165
> #13 0x00000000026d7d44 in boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, boost::_bi::value<impala::QueryState*> >::operator()<boost::_mfi::mf1<void, impala::QueryExecMgr, impala::QueryState*>, boost::_bi::list0> (this=0x12444810, f=..., a=...)
>     at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:319
> #14 0x00000000026d729b in boost::_bi::bind_t<void, boost::_mfi::mf1<void, impala::QueryExecMgr, impala::QueryState*>, boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, boost::_bi::value<impala::QueryState*> > >::operator() (this=0x12444800)
>     at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294
> #15 0x00000000026d66db in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, impala::QueryExecMgr, impala::QueryState*>, boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>, boost::_bi::value<impala::QueryState*> > >, void>::invoke (function_obj_ptr=...) at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:158
> #16 0x000000000267535a in boost::function0<void>::operator() (this=0x7f2988fa9ba0) at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763
> #17 0x0000000002d7a671 in impala::Thread::SuperviseThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*) (name=..., category=..., functor=..., parent_thread_info=0x7f2b6cbb2840, thread_started=0x7f2b6cbb14e0) at /home/danielbecker/Impala/be/src/util/thread.cc:360
> #18 0x0000000002d82ffe in boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> >::operator()<void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list0&, int) (this=0xf07c300,
>     f=@0xf07c2f8: 0x2d7a32e <impala::Thread::SuperviseThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*)>, a=...) at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:531
> #19 0x0000000002d82f29 in boost::_bi::bind_t<void, void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > >::operator()() (this=0xf07c2f8)
>     at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294
> #20 0x0000000002d82ef0 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<void ()>, impala::ThreadDebugInfo const*, impala::Promise<long, (impala::PromiseMode)0>*), boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::ThreadDebugInfo*>, boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > > >::run() (this=0xf07c1c0)
>     at /home/danielbecker/Impala/toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:120
> #21 0x00000000046f3c67 in thread_proxy ()
> #22 0x00007f2bb18b46db in start_thread (arg=0x7f2988faa700) at pthread_create.c:463
> #23 0x00007f2bae62c61f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
> {code}
> In both cases the error is connected to the itemTupleDesc (or itemTupleId) not being set and we hit a precondition check (in the struct case) or a DCHECK (in the collection case).
> The error also occurs if "DISTINCT" is not applied on the complex type but the complex type is also present in the tuple:
> {code:java}
> select distinct(id), struct_val from alltypes_structs;
> select distinct(id), arr1 from complextypes_arrays;
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org