diff --git a/src/sql/engine/expr/ob_pl_expr_subquery.cpp b/src/sql/engine/expr/ob_pl_expr_subquery.cpp index 5904f81b79..88b75863bf 100644 --- a/src/sql/engine/expr/ob_pl_expr_subquery.cpp +++ b/src/sql/engine/expr/ob_pl_expr_subquery.cpp @@ -199,7 +199,7 @@ int ObExprOpSubQueryInPl::eval_subquery(const ObExpr &expr, if (OB_ERR_TOO_MANY_ROWS != ret) { int cli_ret = OB_SUCCESS; retry_ctrl.test_and_save_retry_state(GCTX, - *ctx.exec_ctx_.get_sql_ctx(), + spi_result.get_sql_ctx(), *spi_result.get_result_set(), ret, cli_ret, true, true, true); ret = cli_ret; diff --git a/src/sql/ob_spi.cpp b/src/sql/ob_spi.cpp index cd9f9741d6..e7d2082ff2 100644 --- a/src/sql/ob_spi.cpp +++ b/src/sql/ob_spi.cpp @@ -1713,13 +1713,13 @@ int ObSPIService::dbms_cursor_execute(ObPLExecCtx *ctx, int cli_ret = OB_SUCCESS; retry_ctrl.test_and_save_retry_state( GCTX, - *ctx->exec_ctx_->get_sql_ctx(), + spi_result.get_sql_ctx(), *spi_result.get_result_set(), ret, cli_ret, true, true, true); LOG_WARN("failed to get_result, check if need retry", K(ret), K(cli_ret), K(retry_ctrl.need_retry())); ret = cli_ret; - ctx->exec_ctx_->get_sql_ctx()->clear(); + spi_result.get_sql_ctx().clear(); ctx->exec_ctx_->get_my_session()->set_session_in_retry(retry_ctrl.need_retry()); } } /* else if (OB_FAIL(inner_fetch(ctx, @@ -2691,13 +2691,13 @@ int ObSPIService::spi_execute_immediate(ObPLExecCtx *ctx, int cli_ret = OB_SUCCESS; retry_ctrl.test_and_save_retry_state( GCTX, - *ctx->exec_ctx_->get_sql_ctx(), + spi_result.get_sql_ctx(), *spi_result.get_result_set(), ret, cli_ret, true, true, true); LOG_WARN("failed to get_result, check if need retry", K(ret), K(cli_ret), K(retry_ctrl.need_retry())); ret = cli_ret; - ctx->exec_ctx_->get_sql_ctx()->clear(); + spi_result.get_sql_ctx().clear(); ctx->exec_ctx_->get_my_session()->set_session_in_retry(retry_ctrl.need_retry()); } // todo:@hr351303 确认session标记是否还需要 @@ -3656,13 +3656,13 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx, if (spi_result->get_result_set() != NULL) { int cli_ret = OB_SUCCESS; retry_ctrl.test_and_save_retry_state(GCTX, - *ctx->exec_ctx_->get_sql_ctx(), + spi_result->get_sql_ctx(), *spi_result->get_result_set(), ret, cli_ret, true, true, true); LOG_WARN("fail to open, check if need retry", K(ret), K(cli_ret), K(retry_ctrl.need_retry()), K(sql_str), K(ps_sql), K(exec_params)); ret = cli_ret; - ctx->exec_ctx_->get_sql_ctx()->clear(); + spi_result->get_sql_ctx().clear(); ctx->exec_ctx_->get_my_session()->set_session_in_retry(retry_ctrl.need_retry()); } } @@ -3778,7 +3778,7 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx, if (OB_FAIL(ret)) { int cli_ret = OB_SUCCESS; retry_ctrl.test_and_save_retry_state(GCTX, - *ctx->exec_ctx_->get_sql_ctx(), + spi_result.get_sql_ctx(), *spi_result.get_result_set(), ret, cli_ret, @@ -3789,7 +3789,7 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx, K(ret), K(cli_ret), K(retry_ctrl.need_retry()), K(sql_stmt), K(ps_sql), K(exec_params)); ret = cli_ret; - ctx->exec_ctx_->get_sql_ctx()->clear(); + spi_result.get_sql_ctx().clear(); ctx->exec_ctx_->get_my_session()->set_session_in_retry(retry_ctrl.need_retry()); } } @@ -5305,13 +5305,13 @@ int ObSPIService::inner_open(ObPLExecCtx *ctx, int cli_ret = OB_SUCCESS; retry_ctrl->test_and_save_retry_state( GCTX, - *ctx->exec_ctx_->get_sql_ctx(), + spi_result.get_sql_ctx(), *spi_result.get_result_set(), ret, cli_ret, true, true, true); LOG_WARN("failed to get_result, check if need retry", K(ret), K(cli_ret), K(retry_ctrl->need_retry()), K(sql), K(ps_sql), K(type)); ret = cli_ret; - ctx->exec_ctx_->get_sql_ctx()->clear(); + spi_result.get_sql_ctx().clear(); ctx->exec_ctx_->get_my_session()->set_session_in_retry(retry_ctrl->need_retry()); } } @@ -5453,7 +5453,7 @@ int ObSPIService::inner_fetch(ObPLExecCtx *ctx, int cli_ret = OB_SUCCESS; retry_ctrl.test_and_save_retry_state( GCTX, - *ctx->exec_ctx_->get_sql_ctx(), + spi_result.get_sql_ctx(), *result_set, ret, cli_ret, true, true, true); if (!for_cursor || (for_cursor && ret != OB_READ_NOTHING)) { LOG_WARN("failed to get_result, check if need retry", @@ -5463,7 +5463,7 @@ int ObSPIService::inner_fetch(ObPLExecCtx *ctx, } } } - ctx->exec_ctx_->get_sql_ctx()->clear(); + spi_result.get_sql_ctx().clear(); ctx->exec_ctx_->get_my_session()->set_session_in_retry(retry_ctrl.need_retry()); } return ret; diff --git a/src/sql/resolver/ob_resolver_utils.cpp b/src/sql/resolver/ob_resolver_utils.cpp index 2b8b19c8f2..7a35f38232 100644 --- a/src/sql/resolver/ob_resolver_utils.cpp +++ b/src/sql/resolver/ob_resolver_utils.cpp @@ -5425,7 +5425,9 @@ int ObResolverUtils::resolve_data_type(const ParseNode &type_node, ret = OB_ERR_TOO_LONG_COLUMN_LENGTH; LOG_WARN("column data length is invalid", K(ret), K(length), K(data_type)); LOG_USER_ERROR(OB_ERR_TOO_LONG_COLUMN_LENGTH, ident_name.ptr(), - static_cast(OB_MAX_MYSQL_VARCHAR_LENGTH)); + static_cast((ObVarcharType == data_type.get_obj_type() || ObNVarchar2Type == data_type.get_obj_type()) + ? OB_MAX_ORACLE_VARCHAR_LENGTH : + (is_for_pl_type ? OB_MAX_ORACLE_PL_CHAR_LENGTH_BYTE : OB_MAX_ORACLE_CHAR_LENGTH_BYTE))); } else if (ObVarcharType != data_type.get_obj_type() && ObCharType != data_type.get_obj_type() && ObNVarchar2Type != data_type.get_obj_type()