-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[fix](variant)fix core in column_object when sort from empty block #50032
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
run buildall |
TPC-H: Total hot run time: 34131 ms |
TPC-DS: Total hot run time: 193005 ms |
ClickBench: Total hot run time: 31.41 s |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
dataroaring
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
PR approved by at least one committer and no changes requested. |
|
PR approved by anyone and no changes requested. |
|
run buildall |
TPC-H: Total hot run time: 34343 ms |
TPC-DS: Total hot run time: 187044 ms |
ClickBench: Total hot run time: 31.21 s |
eldenmoon
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
PR approved by at least one committer and no changes requested. |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
…pache#50032) somehow in sort situation we meet an empty block in some operator. so we should deal with empty column in column_variant. otherwise we may meet core like : ``` SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/cow.h:198:12 in *** Query id: f7c99aba0f494e70-8a36947b66383aa7 *** *** is nereids: 1 *** *** tablet id: 0 *** *** Aborted at 1744620857 (unix time) try "date -d @1744620857" if you are using GNU date *** *** Current BE git commitID: 62a58bf *** *** SIGSEGV address not mapped to object (@0x0) received by PID 483713 (TID 489737 OR 0x7fd98093e700) from PID 0; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/common/signal_handler.h:421 1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in /mnt/disk2/wangqiannan/tool/jdk-17.0.10/lib/server/libjvm.so 2# JVM_handle_linux_signal in /mnt/disk2/wangqiannan/tool/jdk-17.0.10/lib/server/libjvm.so 3# 0x00007FE4D07005B0 in /lib64/libc.so.6 4# COW<doris::vectorized::IColumn>::intrusive_ptr<doris::vectorized::IColumn const>::operator->() const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/cow.h:198 5# COW<doris::vectorized::IColumn>::chameleon_ptr<doris::vectorized::IColumn>::operator*() at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/cow.h:340 6# doris::vectorized::ColumnObject::Subcolumn::get_finalized_column() at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_object.cpp:744 7# COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn> doris::vectorized::ColumnObject::apply_for_subcolumns<doris::vectorized::ColumnObject::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const::$_0>(doris::vectorized::ColumnObject::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const::$_0&&) const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_object.cpp:625 8# doris::vectorized::ColumnObject::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_object.cpp:1125 9# doris::vectorized::ColumnNullable::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_nullable.cpp:382 10# doris::vectorized::sort_block(doris::vectorized::Block&, doris::vectorized::Block&, std::vector<doris::vectorized::SortColumnDescription, std::allocator<doris::vectorized::SortColumnDescription> > const&, unsigned long) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/core/sort_block.cpp:66 11# doris::vectorized::Sorter::partial_sort(doris::vectorized::Block&, doris::vectorized::Block&) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/sort/sorter.cpp:203 12# doris::vectorized::PartitionSorter::append_block(doris::vectorized::Block*) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/sort/partition_sorter.cpp:60 13# doris::pipeline::PartitionSortSinkOperatorX::sink(doris::RuntimeState*, doris::vectorized::Block*, bool) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/exec/partition_sort_sink_operator.cpp:215 14# doris::pipeline::PipelineTask::execute(bool*)::$_1::operator()() const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/pipeline_task.cpp:392 15# doris::pipeline::PipelineTask::execute(bool*) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/pipeline_task.cpp:395 16# doris::pipeline::TaskScheduler::_do_work(unsigned long) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/task_scheduler.cpp:138 17# doris::pipeline::TaskScheduler::start()::$_0::operator()() const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/task_scheduler.cpp:64 18# void std::__invoke_impl< ```
…pache#50032) somehow in sort situation we meet an empty block in some operator. so we should deal with empty column in column_variant. otherwise we may meet core like : ``` SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/cow.h:198:12 in *** Query id: f7c99aba0f494e70-8a36947b66383aa7 *** *** is nereids: 1 *** *** tablet id: 0 *** *** Aborted at 1744620857 (unix time) try "date -d @1744620857" if you are using GNU date *** *** Current BE git commitID: 62a58bf *** *** SIGSEGV address not mapped to object (@0x0) received by PID 483713 (TID 489737 OR 0x7fd98093e700) from PID 0; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/common/signal_handler.h:421 1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in /mnt/disk2/wangqiannan/tool/jdk-17.0.10/lib/server/libjvm.so 2# JVM_handle_linux_signal in /mnt/disk2/wangqiannan/tool/jdk-17.0.10/lib/server/libjvm.so 3# 0x00007FE4D07005B0 in /lib64/libc.so.6 4# COW<doris::vectorized::IColumn>::intrusive_ptr<doris::vectorized::IColumn const>::operator->() const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/cow.h:198 5# COW<doris::vectorized::IColumn>::chameleon_ptr<doris::vectorized::IColumn>::operator*() at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/cow.h:340 6# doris::vectorized::ColumnObject::Subcolumn::get_finalized_column() at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_object.cpp:744 7# COW<doris::vectorized::IColumn>::mutable_ptr<doris::vectorized::IColumn> doris::vectorized::ColumnObject::apply_for_subcolumns<doris::vectorized::ColumnObject::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const::$_0>(doris::vectorized::ColumnObject::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const::$_0&&) const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_object.cpp:625 8# doris::vectorized::ColumnObject::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_object.cpp:1125 9# doris::vectorized::ColumnNullable::permute(doris::vectorized::PODArray<unsigned long, 4096ul, Allocator<false, false, false, DefaultMemoryAllocator>, 16ul, 15ul> const&, unsigned long) const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/columns/column_nullable.cpp:382 10# doris::vectorized::sort_block(doris::vectorized::Block&, doris::vectorized::Block&, std::vector<doris::vectorized::SortColumnDescription, std::allocator<doris::vectorized::SortColumnDescription> > const&, unsigned long) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/core/sort_block.cpp:66 11# doris::vectorized::Sorter::partial_sort(doris::vectorized::Block&, doris::vectorized::Block&) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/sort/sorter.cpp:203 12# doris::vectorized::PartitionSorter::append_block(doris::vectorized::Block*) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/vec/common/sort/partition_sorter.cpp:60 13# doris::pipeline::PartitionSortSinkOperatorX::sink(doris::RuntimeState*, doris::vectorized::Block*, bool) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/exec/partition_sort_sink_operator.cpp:215 14# doris::pipeline::PipelineTask::execute(bool*)::$_1::operator()() const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/pipeline_task.cpp:392 15# doris::pipeline::PipelineTask::execute(bool*) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/pipeline_task.cpp:395 16# doris::pipeline::TaskScheduler::_do_work(unsigned long) at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/task_scheduler.cpp:138 17# doris::pipeline::TaskScheduler::start()::$_0::operator()() const at /mnt/disk2/wangqiannan/amory/master/doris/be/src/pipeline/task_scheduler.cpp:64 18# void std::__invoke_impl< ```
What problem does this PR solve?
somehow in sort situation we meet an empty block in some operator. so we should deal with empty column in column_variant. otherwise we may meet core like :
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)