[to #51732060]fix core outer call dblink
This commit is contained in:
@ -123,7 +123,7 @@ int ObCallProcedureExecutor::execute(ObExecContext &ctx, ObCallProcedureStmt &st
|
||||
} else {
|
||||
param.reset();
|
||||
param.ObObj::reset();
|
||||
if (OB_FAIL(ObSQLUtils::calc_sql_expression_without_row(ctx, *expr, param))) {
|
||||
if (OB_FAIL(calc_param(ctx, *expr, param))) {
|
||||
LOG_WARN("failed to calc exec param expr", K(i), K(*expr), K(ret));
|
||||
} else {
|
||||
if (expr->get_is_pl_mock_default_expr()) {
|
||||
@ -292,6 +292,21 @@ int ObCallProcedureExecutor::execute(ObExecContext &ctx, ObCallProcedureStmt &st
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObCallProcedureExecutor::calc_param(ObExecContext &ctx, const ObISqlExpression &expr, ObObjParam &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
OZ (ObSQLUtils::calc_sql_expression_without_row(ctx, expr, result), K(expr));
|
||||
if (OB_SUCC(ret) && !result.is_ext()) {
|
||||
const sql::ObExpr *new_expr = expr.get_expr();
|
||||
CK (OB_NOT_NULL(new_expr));
|
||||
OX (result.set_length(new_expr->max_length_));
|
||||
OX (result.set_precision(new_expr->datum_meta_.precision_));
|
||||
OX (result.set_scale(new_expr->datum_meta_.scale_));
|
||||
OX (result.set_length_semantics(new_expr->datum_meta_.length_semantics_));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObDropRoutineExecutor::execute(ObExecContext &ctx, ObDropRoutineStmt &stmt)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -65,7 +65,7 @@ public:
|
||||
ObCallProcedureExecutor() {}
|
||||
virtual ~ObCallProcedureExecutor() {}
|
||||
int execute(ObExecContext &ctx, ObCallProcedureStmt &stmt);
|
||||
|
||||
int calc_param(ObExecContext &ctx, const ObISqlExpression &expr, ObObjParam &result);
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(ObCallProcedureExecutor);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user