Fix: The set variable does not involve rewriting logic

This commit is contained in:
yaojing624 2023-09-14 11:43:59 +00:00 committed by ob-robot
parent d57a913644
commit 1c8aa41d3e

View File

@ -34,6 +34,7 @@
#include "sql/ob_select_stmt_printer.h"
#include "lib/timezone/ob_oracle_format_models.h"
#include "observer/ob_server.h"
#include "sql/rewrite/ob_transform_pre_process.h"
using namespace oceanbase::common;
using namespace oceanbase::share;
@ -116,11 +117,21 @@ int ObVariableSetExecutor::execute(ObExecContext &ctx, ObVariableSetStmt &stmt)
} else {
ObObj value_obj;
ObBasicSysVar *sys_var = NULL;
bool transformed = false;
ObRawExprFactory *expr_factory = ctx.get_expr_factory();
if (true == node.is_set_default_) {
if (false == node.is_system_variable_) {
ret = OB_ERR_UNEXPECTED;
LOG_ERROR("when reach here, node.is_system_variable_ must be true", K(ret));
} else {}
} else if (OB_ISNULL(expr_factory)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("expr_factory is NULL", K(ret), KP(expr_factory));
} else if (OB_FAIL(ObTransformPreProcess::transform_expr(*expr_factory,
*session,
node.value_expr_,
transformed))) {
LOG_WARN("transform expr failed", K(ret));
} else if (node.value_expr_->has_flag(CNT_SUB_QUERY)) {
if (OB_FAIL(calc_subquery_expr_value(ctx, session, node.value_expr_, value_obj))) {
LOG_WARN("failed to calc subquery result", K(ret));