mymeiyi opened a new pull request, #67633:
URL: https://github.com/apache/doris/pull/67633

   Problem Summary: An expression-only load can legitimately omit the optional 
destination-to-source direct slot map. FileScanner previously skipped 
initializing its destination-ordered source descriptor vector in that case. 
When an expression produced NULL under strict mode, output conversion indexed 
the empty vector and could abort the BE.
   ```
   *** SIGABRT unknown detail explain (@0x3f500000373) received by PID 883 (TID 
2653 OR 0x7bd43699f700) from PID 883; stack trace: ***
    0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at ../src/common/signal_handler.h:418
    1# 0x00007FE3F5E55140 in /lib/x86_64-linux-gnu/libpthread.so.0
    2# raise in /lib/x86_64-linux-gnu/libc.so.6
    3# abort in /lib/x86_64-linux-gnu/libc.so.6
    4# 0x000055E3C2D186A7 in /opt/apache-doris/be/lib/doris_be
    5# std::vector<doris::SlotDescriptor*, 
std::allocator<doris::SlotDescriptor*> >::operator[](unsigned long) at 
/mnt/disk2/meiyi/soft/ldb_toolchain/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/stl_vector.h:1263
    6# doris::FileScanner::_convert_to_output_block(doris::Block*) at 
./be/src/exec/scan/file_scanner.cpp:810
    7# 
doris::FileScanner::_process_src_block_after_read_for_load(doris::Block*) at 
./be/src/exec/scan/file_scanner.cpp:902
    8# doris::FileScanner::_process_src_block_after_read(doris::Block*) at 
./be/src/exec/scan/file_scanner.cpp:868
    9# doris::FileScanner::_get_block_wrapped(doris::RuntimeState*, 
doris::Block*, bool*) at ./be/src/exec/scan/file_scanner.cpp:595
   10# doris::FileScanner::_get_block_impl(doris::RuntimeState*, doris::Block*, 
bool*) at ./be/src/exec/scan/file_scanner.cpp:514
   11# doris::Scanner::get_block(doris::RuntimeState*, doris::Block*, bool*) at 
./be/src/exec/scan/scanner.cpp:171
   12# doris::Scanner::get_block_after_projects(doris::RuntimeState*, 
doris::Block*, bool*) at ./be/src/exec/scan/scanner.cpp:138
   13# 
doris::ScannerScheduler::_scanner_scan(std::shared_ptr<doris::ScannerContext>, 
std::shared_ptr<doris::ScanTask>) at 
./be/src/exec/scan/scanner_scheduler.cpp:193
   ```
   
   Initialize one source descriptor entry for every destination expression, 
using nullptr when no direct mapping exists. This preserves destination index 
alignment and the existing strict-mode and NOT NULL filtering semantics.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to