This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit c5da3ea61684c4827fcec3a74be5589e1c1b5cfc
Author: TengJianPing <18241664+jackte...@users.noreply.github.com>
AuthorDate: Fri May 31 22:40:38 2024 +0800

    [fix](decimal256) fix coredump when enable decimal256 but fallback to old 
planner (#35731)
    
    ## Proposed changes
    
    Issue Number: close #xxx
    
    BE coredump when enable decimal256 but fallback to old planner.
    When enable_decimal256 =true and falls back to the old optimizer, the
    sum result type become decimal128, but BE receives
    enable_decimal256=true, thinking that the sum result type is still
    decimal256.
    
    ```
    20240530 18:01:40.713162 72530 assert_cast.h:57] Bad cast from 
type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to 
doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul,
 int> > >
    *** Check failure stack trace: ***
        @     0x564c51b56e86  google::LogMessage::SendToLog()
        @     0x564c51b538d0  google::LogMessage::Flush()
        @     0x564c51b576c9  google::LogMessageFatal::~LogMessageFatal()
        @     0x564c266f6880  assert_cast<>()
        @     0x564c3361ebe8  
doris::vectorized::AggregateFunctionSum<>::insert_result_into()
        @     0x564c33633cee  
doris::vectorized::AggregateFunctionNullBaseInline<>::insert_result_into()
        @     0x564c33633f48  
doris::vectorized::IAggregateFunctionHelper<>::insert_result_into_vec()
    F20240530 18:01:40.986271 72538 assert_cast.h:57] Bad cast from 
type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to 
doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul,
 int> > >
    
    *** Query id: 6ba2b0c5b10249d4-a36d87744741db1d ***
    *** is nereids: 0 ***
    *** tablet id: 0 ***
    *** Aborted at 1717063302 (unix time) try "date -d @1717063302" if you are 
using GNU date ***
    *** Current BE git commitID: b130df2488 ***
    *** SIGABRT unknown detail explain (@0x10fd5) received by PID 69589 (TID 
72530 OR 0x7f61a04bb700) from PID 69589; stack trace: ***
        @     0x564c3bafab38  std::_Function_handler<>::_M_invoke()
        @     0x564c2489325f  std::function<>::operator()()
        @     0x564c3b82da6d  doris::vectorized::AggregationNode::pull()
        @     0x564c3b82d6cc  doris::vectorized::AggregationNode::get_next()
        @     0x564c2487329d  std::__invoke_impl<>()
        @     0x564c24872fb0  std::__invoke<>()
        @     0x564c24872ea7  
_ZNSt5_BindIFMN5doris8ExecNodeEFNS0_6StatusEPNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS1_St12_PlaceholderILi1EESC_ILi2EESC_ILi3EEEE6__callIS2_JOS4_OS7_OS8_EJLm0ELm1ELm2ELm3EEEET_OSt5tupleIJDpT0_EESt12_Index_tupleIJXspT1_EEE
        @     0x564c24872c38  std::_Bind<>::operator()<>()
        @     0x564c24872ae8  std::__invoke_impl<>()
        @     0x564c24872a58  
_ZSt10__invoke_rIN5doris6StatusERSt5_BindIFMNS0_8ExecNodeEFS1_PNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS3_St12_PlaceholderILi1EESD_ILi2EESD_ILi3EEEEJS5_S8_S9_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESL_E4typeEOSM_DpOSN_
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/mnt/disk2/tengjianping/doris-38/be/src/common/signal_handler.h:421
     1# 0x00007F6C0F5AD400 in /lib64/libc.so.6
     2# gsignal in /lib64/libc.so.6
     3# abort in /lib64/libc.so.6
     4# 0x0000564C51B616FD in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
     5# 0x0000564C51B53D9A in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
     6# google::LogMessage::SendToLog() in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
     7# google::LogMessage::Flush() in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
     8# google::LogMessageFatal::~LogMessageFatal() in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
     9# 
doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul,
 int> > >& 
assert_cast<doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul,
 int> > >&, doris::vectorized::IColumn&>(doris::vectorized::IColumn&) in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
    10# 
doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, 
doris::vectorized::Decimal<wide::integer<256ul, int> >, 
doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul,
 int> > > >::insert_result_into(char const*, doris::vectorized::IColumn&) const 
at 
/mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_sum.h:124
    11# 
doris::vectorized::AggregateFunctionNullBaseInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3,
 doris::vectorized::Decimal<wide::integer<256ul, int> >, 
doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul,
 int> > > >, true, 
doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3,
 doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectori [...]
    12# 
doris::vectorized::IAggregateFunctionHelper<doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3,
 doris::vectorized::Decimal<wide::integer<256ul, int> >, 
doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul,
 int> > > >, true> >::insert_result_into_vec(std::vector<char*, 
std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn&, 
unsigned long) const at /mnt/ [...]
    13# 
doris::vectorized::AggFnEvaluator::insert_result_info_vec(std::vector<char*, 
std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn*, 
unsigned long) at 
/mnt/disk2/tengjianping/doris-38/be/src/vec/exprs/vectorized_agg_fn.cpp:273
    14# void 
doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*,
 doris::vectorized::Block*, 
bool*)::$_0::operator()<doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*,
 Allocator<true, true, false> > > > 
>&>(doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<c
 [...]
    15# void std::__invoke_impl<void, 
doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*,
 doris::vectorized::Block*, bool*)::$_0, 
doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*,
 Allocator<true, true, false> > > > >&>(std::__invoke_other, 
doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*,
 doris:: [...]
    
    20# 
doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*,
 doris::vectorized::Block*, bool*) at 
/mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1264
    21# 
doris::vectorized::AggregationNode::_get_with_serialized_key_result(doris::RuntimeState*,
 doris::vectorized::Block*, bool*) in 
/usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
    22# doris::Status std::__invoke_impl<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, 
doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, 
doris::RuntimeState*, doris::vectorized::Block*, 
bool*>(std::__invoke_memfun_deref, doris::Status 
(doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, 
doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, 
doris::RuntimeState*&&, doris::vectorized::Block*&&,  [...]
    23# std::enable_if<is_invocable_r_v<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, 
doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, 
doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type 
std::__invoke_r<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, 
doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, 
doris::RuntimeState*, doris:: [...]
    24# doris::Status std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>, std::_Placeholder<2>, 
std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, 
bool*)>::__call<doris::Status, doris::RuntimeState*&&, 
doris::vectorized::Block*&&, bool*&&, 0ul, 1ul, 2ul, 
3ul>(std::tuple<doris::RuntimeState*&&, doris::vectorized::Block*&&, 
bool*&&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) at / [...]
    25# doris::Status std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>, std::_Placeholder<2>, 
std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, 
bool*)>::operator()<doris::RuntimeState*, doris::vectorized::Block*, 
bool*>(doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at 
/mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../
 [...]
    26# doris::Status std::__invoke_impl<doris::Status, 
std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>, std::_Placeholder<2>, 
std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, 
bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, 
bool*>(std::__invoke_other, std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::Aggreg [...]
    27# std::enable_if<is_invocable_r_v<doris::Status, 
std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>, std::_Placeholder<2>, 
std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, 
bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, 
doris::Status>::type std::__invoke_r<doris::Status, 
std::_Bind_result<doris::Status, doris::Status 
(doris::vectorized::AggregationNo [...]
    28# std::_Function_handler<doris::Status (doris::RuntimeState*, 
doris::vectorized::Block*, bool*), std::_Bind_result<doris::Status, 
doris::Status 
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, 
std::_Placeholder<1>, std::_Placeholder<2>, 
std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)> 
>::_M_invoke(std::_Any_data const&, doris::RuntimeState*&&, 
doris::vectorized::Block*&&, bool*&&) at 
/mnt/disk2/tengjianping/local/ldb_toolchai [...]
    29# std::function<doris::Status (doris::RuntimeState*, 
doris::vectorized::Block*, bool*)>::operator()(doris::RuntimeState*, 
doris::vectorized::Block*, bool*) const at 
/mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
    30# doris::vectorized::AggregationNode::pull(doris::RuntimeState*, 
doris::vectorized::Block*, bool*) at 
/mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:494
    31# doris::vectorized::AggregationNode::get_next(doris::RuntimeState*, 
doris::vectorized::Block*, bool*) at 
/mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:487
    ```
---
 fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index b1d6d877e89..03479643522 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -3260,7 +3260,7 @@ public class SessionVariable implements Serializable, 
Writable {
         
tResult.setInvertedIndexConjunctionOptThreshold(invertedIndexConjunctionOptThreshold);
         tResult.setInvertedIndexMaxExpansions(invertedIndexMaxExpansions);
 
-        tResult.setEnableDecimal256(enableNereidsPlanner && enableDecimal256);
+        tResult.setEnableDecimal256(getEnableDecimal256());
 
         tResult.setSkipMissingVersion(skipMissingVersion);
 
@@ -3654,7 +3654,7 @@ public class SessionVariable implements Serializable, 
Writable {
             return false;
         }
         SessionVariable sessionVariable = connectContext.getSessionVariable();
-        return sessionVariable.isEnableNereidsPlanner() && 
sessionVariable.isEnableDecimal256();
+        return connectContext.getState().isNereids() && 
sessionVariable.isEnableDecimal256();
     }
 
     public boolean isEnableDecimal256() {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to