[to #51732060]fix core outer call dblink
This commit is contained in:
@ -123,7 +123,7 @@ int ObCallProcedureExecutor::execute(ObExecContext &ctx, ObCallProcedureStmt &st
|
|||||||
} else {
|
} else {
|
||||||
param.reset();
|
param.reset();
|
||||||
param.ObObj::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));
|
LOG_WARN("failed to calc exec param expr", K(i), K(*expr), K(ret));
|
||||||
} else {
|
} else {
|
||||||
if (expr->get_is_pl_mock_default_expr()) {
|
if (expr->get_is_pl_mock_default_expr()) {
|
||||||
@ -292,6 +292,21 @@ int ObCallProcedureExecutor::execute(ObExecContext &ctx, ObCallProcedureStmt &st
|
|||||||
return ret;
|
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 ObDropRoutineExecutor::execute(ObExecContext &ctx, ObDropRoutineStmt &stmt)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public:
|
|||||||
ObCallProcedureExecutor() {}
|
ObCallProcedureExecutor() {}
|
||||||
virtual ~ObCallProcedureExecutor() {}
|
virtual ~ObCallProcedureExecutor() {}
|
||||||
int execute(ObExecContext &ctx, ObCallProcedureStmt &stmt);
|
int execute(ObExecContext &ctx, ObCallProcedureStmt &stmt);
|
||||||
|
int calc_param(ObExecContext &ctx, const ObISqlExpression &expr, ObObjParam &result);
|
||||||
private:
|
private:
|
||||||
DISALLOW_COPY_AND_ASSIGN(ObCallProcedureExecutor);
|
DISALLOW_COPY_AND_ASSIGN(ObCallProcedureExecutor);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user