[MCOL-4470] collation aware join code crashes ExeMgr Created: 2020-12-24  Updated: 2021-02-02  Resolved: 2021-01-04

Status: Closed
Project: MariaDB ColumnStore
Component/s: ExeMgr
Affects Version/s: 5.4.3, 6.1.1
Fix Version/s: 5.5.2, 5.6.1

Type: Bug Priority: Major
Reporter: Roman Assignee: Daniel Lee (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Relates
relates to MCOL-495 Make string comparison not case sensi... Closed

 Description   

The crash happens running the query from working_tpch1_compareLogOnly/view/view_DL_outerjoin.sql with this stack

#0  0x00007f400477cc8c in charset_info_st::strnncollsp (this=0x7f3f00000001, a=0x7f3ff53fe620 "name5", alen=5, b=0x7f3ff53fe628 "\377\377\377\377\377\377\377\177 \346?\365?\177", blen=8) at /data/mdb-server/include/m_ctype.h:787
#1  0x00007f400477cd49 in datatypes::Charset::strnncollsp (this=0x7f3ff53fe690, str1=..., str2=...) at /data/mdb-server/storage/columnstore/columnstore/utils/common/collation.h:138
#2  0x00007f400477d1f2 in datatypes::TCharShort::strnncollsp (cs=..., a=229334933870, b=9223372036854775807) at /data/mdb-server/storage/columnstore/columnstore/datatypes/mcs_string.h:45
#3  0x00007f4003499b86 in joiner::TupleJoiner::updateCPData (this=0x7f3ff3836500, r=...) at /data/mdb-server/storage/columnstore/columnstore/utils/joiner/tuplejoiner.cpp:1134
#4  0x00007f400349511f in joiner::TupleJoiner::insertRGData (this=0x7f3ff3836500, rg=..., threadID=0) at /data/mdb-server/storage/columnstore/columnstore/utils/joiner/tuplejoiner.cpp:417
#5  0x00007f40048596b0 in joblist::TupleHashJoinStep::smallRunnerFcn (this=0x7f3fe80d7600, index=0, threadID=0, jobs=0x7f3ff4bfd8b8) at /data/mdb-server/storage/columnstore/columnstore/dbcon/joblist/tuplehashjoin.cpp:437
#6  0x00007f40048585ca in joblist::TupleHashJoinStep::<lambda()>::operator()(void) const (__closure=0x7f3ff3824120) at /data/mdb-server/storage/columnstore/columnstore/dbcon/joblist/tuplehashjoin.cpp:307
#7  0x00007f4004863236 in boost::detail::function::void_function_obj_invoker0<joblist::TupleHashJoinStep::startSmallRunners(uint)::<lambda()>, void>::invoke(boost::detail::function::function_buffer &) (function_obj_ptr=...)
    at /usr/include/boost/function/function_template.hpp:159
#8  0x00007f3ffe2f8fa1 in boost::function0<void>::operator() (this=0x7f3ff3824118) at /usr/include/boost/function/function_template.hpp:759
#9  0x00007f3ffe2f5e09 in threadpool::ThreadPool::beginThread (this=0x5608e63ae1c0 <joblist::JobStep::jobstepThreadPool>) at /data/mdb-server/storage/columnstore/columnstore/utils/threadpool/threadpool.cpp:396
#10 0x00007f3ffe2f7fb7 in threadpool::ThreadPool::beginThreadFunc::operator() (this=0x7f3ff546f878) at /data/mdb-server/storage/columnstore/columnstore/utils/threadpool/threadpool.h:332
#11 0x00007f3ffe2fe2dc in boost::detail::thread_data<threadpool::ThreadPool::beginThreadFunc>::run (this=0x7f3ff546f6c0) at /usr/include/boost/thread/detail/thread.hpp:116
#12 0x00007f3fffceebcd in ?? () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1
#13 0x00007f4004c5f6db in start_thread (arg=0x7f3ff53ff700) at pthread_create.c:463
#14 0x00007f3ffd041a3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Here is the query that crashes ExeMgr:

select a.name, b.name, c.name from tablechar8 a inner join v_tablevchar7 b on a.name = b.name right outer join v_tablechar25 c on a.name = c.name order by 1, 2, 3;

The code crashes b/c joiner::TupleJoiner::updateCPData() uses a wrong column index getting CHARSET_INFO*.



 Comments   
Comment by Daniel Lee (Inactive) [ 2021-01-04 ]

Build verified: 5.6.1-1 (Drone build 1442)

Reproduced the issue in 5.5.1-1 and verified fixed in Drone build.

Generated at Thu Feb 08 02:50:35 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.