From 7f6a80c189adba4baf024bfdacf959ccbee9f364 Mon Sep 17 00:00:00 2001 From: wangt1xiuyi <13547954130@163.com> Date: Mon, 11 Mar 2024 11:15:05 +0000 Subject: [PATCH] fix lead window function bug --- .../engine/window_function/ob_window_function_op.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/sql/engine/window_function/ob_window_function_op.cpp b/src/sql/engine/window_function/ob_window_function_op.cpp index 665a8b529..e8124ee35 100644 --- a/src/sql/engine/window_function/ob_window_function_op.cpp +++ b/src/sql/engine/window_function/ob_window_function_op.cpp @@ -702,6 +702,16 @@ int ObWindowFunctionOp::NonAggrCellLeadOrLag::eval(RowsReader &row_reader, LOG_WARN("invalid param", K(ret)); } else if (OB_FAIL(params.at(j)->eval(op_.eval_ctx_, result))) { LOG_WARN("fail to calc result row", K(ret)); + } else if (j == DEFAULT_VALUE && !result->is_null()) { + char *buf = NULL; + int64_t buf_size = result->get_deep_copy_size(); + int64_t pos = 0; + if (OB_ISNULL(buf = wf_info_.expr_->get_str_res_mem(op_.eval_ctx_, buf_size))) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_WARN("failed to alloc", K(buf), K(ret)); + } else if (OB_FAIL(lead_lag_params[j].deep_copy(*result, buf, buf_size, pos))) { + LOG_WARN("failed to deep copy datum", K(ret)); + } } else { lead_lag_params[j] = *result; is_lead_lag_offset_used |= (j == OFFSET);