apache / doris

Apache Doris is an easy-to-use, high performance and unified analytics database.
https://doris.apache.org
Apache License 2.0
12.26k stars 3.2k forks source link

[Bug] BE crash because Method insert_many_dict_data is not supported for Int64 #27901

Open Wilson-BT opened 9 months ago

Wilson-BT commented 9 months ago

Search before asking

Version

selectdb-doris 2.0.3

What's Wrong?

So, I just paste the stack information here.


F1202 00:46:10.985437 134102 column.h:260] Method insert_many_dict_data is not supported for Int64
*** Check failure stack trace: ***
    @     0x556c1bf8486d  google::LogMessage::Fail()
    @     0x556c1bf86da9  google::LogMessage::SendToLog()
    @     0x556c1bf843d6  google::LogMessage::Flush()
    @     0x556c1bf87419  google::LogMessageFatal::~LogMessageFatal()
    @     0x556c13e0d850  doris::vectorized::IColumn::insert_many_dict_data()
    @     0x556c143fa7f9  doris::segment_v2::BinaryDictPageDecoder::next_batch()
    @     0x556c144463b7  doris::segment_v2::FileColumnIterator::next_batch()
    @     0x556c14474bb5  doris::segment_v2::SegmentIterator::_read_columns_by_index()
    @     0x556c14475f24  doris::segment_v2::SegmentIterator::_next_batch_internal()
    @     0x556c14475bd2  doris::segment_v2::SegmentIterator::next_batch()
    @     0x556c1ba82729  doris::vectorized::VUnionIterator::next_batch()
    @     0x556c14392674  doris::BetaRowsetReader::next_block()
    @     0x556c1ba6f23c  doris::vectorized::VCollectIterator::Level0Iterator::next()
    @     0x556c1ba70c86  doris::vectorized::VCollectIterator::Level1Iterator::_normal_next()
    @     0x556c1ba70068  doris::vectorized::VCollectIterator::Level1Iterator::next()
    @     0x556c1ba6c47b  doris::vectorized::VCollectIterator::next()
    @     0x556c1ba5ee56  doris::vectorized::BlockReader::_direct_next_block()
    @     0x556c1ba6225f  doris::vectorized::BlockReader::next_block_with_aggregation()
    @     0x556c184e3d4d  doris::vectorized::NewOlapScanner::_get_block_impl()
    @     0x556c18597054  doris::vectorized::VScanner::get_block()
    @     0x556c184f6fa3  doris::vectorized::ScannerScheduler::_scanner_scan()
    @     0x556c184f7ff1  _ZNSt17_Function_handlerIFvvEZZN5doris10vectorized16ScannerScheduler18_schedule_scannersEPNS2_14ScannerContextEENK3$_1clEvEUlvE_E9_M_invokeERKSt9_Any_data
    @     0x556c1493410f  doris::ThreadPool::dispatch_thread()
    @     0x556c1492a08c  doris::Thread::supervise_thread()
    @     0x7fe6b522aea5  start_thread
    @     0x7fe6b5c5996d  __clone
    @              (nil)  (unknown)
*** Query id: bbcbd3b448554d2f-b49b3ee661a94b9b ***
*** tablet id: 0 ***
*** Aborted at 1701449171 (unix time) try "date -d @1701449171" if you are using GNU date ***
*** Current BE git commitID: 305a8d5055 ***
*** SIGABRT unknown detail explain (@0x45a00020398) received by PID 131992 (TID 134102 OR 0x7fe29f446700) from PID 131992; stack trace: ***
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/common/signal_handler.h:417
 1# 0x00007FE6B5B91400 in /lib64/libc.so.6
 2# __GI_raise in /lib64/libc.so.6
 3# abort in /lib64/libc.so.6
 4# 0x0000556C1BF8F259 in /data/database/doris/be/lib/doris_be
 5# 0x0000556C1BF8486D in /data/database/doris/be/lib/doris_be
 6# google::LogMessage::SendToLog() in /data/database/doris/be/lib/doris_be
 7# google::LogMessage::Flush() in /data/database/doris/be/lib/doris_be
 8# google::LogMessageFatal::~LogMessageFatal() in /data/database/doris/be/lib/doris_be
 9# doris::vectorized::IColumn::insert_many_dict_data(int const*, unsigned long, doris::StringRef const*, unsigned long, unsigned int) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/columns/column.h:260
10# doris::segment_v2::BinaryDictPageDecoder::next_batch(unsigned long*, COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>&) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/olap/rowset/segment_v2/binary_dict_page.cpp:279
11# doris::segment_v2::FileColumnIterator::next_batch(unsigned long*, COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn>&, bool*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/olap/rowset/segment_v2/column_reader.cpp:1102
12# doris::segment_v2::SegmentIterator::_read_columns_by_index(unsigned int, unsigned int&, bool) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/olap/rowset/segment_v2/segment_iterator.cpp:1719
13# doris::segment_v2::SegmentIterator::_next_batch_internal(doris::vectorized::Block*) in /data/database/doris/be/lib/doris_be
14# doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/olap/rowset/segment_v2/segment_iterator.cpp:1866
15# doris::vectorized::VUnionIterator::next_batch(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/vgeneric_iterators.cpp:398
16# doris::BetaRowsetReader::next_block(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/olap/rowset/beta_rowset_reader.cpp:298
17# doris::vectorized::VCollectIterator::Level0Iterator::next(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/vcollect_iterator.cpp:557
18# doris::vectorized::VCollectIterator::Level1Iterator::_normal_next(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/vcollect_iterator.cpp:852
19# doris::vectorized::VCollectIterator::Level1Iterator::next(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/vcollect_iterator.cpp:643
20# doris::vectorized::VCollectIterator::next(doris::vectorized::Block*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/vcollect_iterator.cpp:250
21# doris::vectorized::BlockReader::_direct_next_block(doris::vectorized::Block*, bool*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/block_reader.cpp:268
22# doris::vectorized::BlockReader::next_block_with_aggregation(doris::vectorized::Block*, bool*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/olap/block_reader.h:52
23# doris::vectorized::NewOlapScanner::_get_block_impl(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/exec/scan/new_olap_scanner.cpp:459
24# doris::vectorized::VScanner::get_block(doris::RuntimeState*, doris::vectorized::Block*, bool*) in /data/database/doris/be/lib/doris_be
25# doris::vectorized::ScannerScheduler::_scanner_scan(doris::vectorized::ScannerScheduler*, doris::vectorized::ScannerContext*, std::shared_ptr<doris::vectorized::VScanner>) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/vec/exec/scan/scanner_scheduler.cpp:384
26# std::_Function_handler<void (), doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::$_1::operator()() const::{lambda()#1}>::_M_invoke(std::_Any_data const&) at /usr/local/software/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
27# doris::ThreadPool::dispatch_thread() in /data/database/doris/be/lib/doris_be
28# doris::Thread::supervise_thread(void*) at /mnt/ssd01/selectdb-doris-package/enterprise-core/be/src/util/thread.cpp:499
29# start_thread in /lib64/libpthread.so.0
30# clone in /lib64/libc.so.6

What You Expected?

be not crash

How to Reproduce?

No response

Anything Else?

No response

Are you willing to submit PR?

Code of Conduct

DongLiang-0 commented 9 months ago

Could you please provide the table structure and insert statement that can reproduce the problem?

Wilson-BT commented 9 months ago

Could you please provide the table structure and insert statement that can reproduce the problem?

SELECT CONCAT(1053983, '-', -1, '-', 'period_sdate') AS `id`
    , 0 AS `catalog_id`, 12392 AS `db_id`, 1053983 AS `tbl_id`, -1 AS `idx_id`, 'period_sdate' AS `col_id`
    , NULL AS `part_id`, COUNT(1) AS `row_count`, NDV(`period_sdate`) AS `ndv`
    , COUNT(1) - COUNT(`period_sdate`) AS `null_count`
    , CAST(MIN(`period_sdate`) AS STRING) AS `min`, CAST(MAX(`period_sdate`) AS STRING) AS `max`, COUNT(1) * 16 AS `data_size`
    , NOW() AS `update_time`
FROM `internal`.`default_cluster:dasuan_analysis_data`.`dws_area_cust_order_d`

Looks like SQL that automatically collects table information.