128 lines
4.5 KiB
C++
128 lines
4.5 KiB
C++
/**
|
|
* Copyright (c) 2021 OceanBase
|
|
* OceanBase CE is licensed under Mulan PubL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PubL v2.
|
|
* You may obtain a copy of Mulan PubL v2 at:
|
|
* http://license.coscl.org.cn/MulanPubL-2.0
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PubL v2 for more details.
|
|
*/
|
|
|
|
#ifndef OCEANBASE_SQL_EXECUTOR_OB_EXECUTOR_RPC_PROXY_
|
|
#define OCEANBASE_SQL_EXECUTOR_OB_EXECUTOR_RPC_PROXY_
|
|
|
|
#include "rpc/obrpc/ob_rpc_proxy.h"
|
|
#include "sql/executor/ob_task.h"
|
|
#include "sql/executor/ob_task_event.h"
|
|
#include "share/config/ob_server_config.h"
|
|
#include "observer/ob_server_struct.h"
|
|
|
|
namespace oceanbase {
|
|
namespace sql {
|
|
class ObMiniTask;
|
|
class ObMiniTaskResult;
|
|
} // namespace sql
|
|
|
|
namespace sql {
|
|
|
|
struct ObBKGDDistExecuteArg {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObBKGDDistExecuteArg() : tenant_id_(OB_INVALID_ID), scheduler_id_(0)
|
|
{}
|
|
TO_STRING_KV(K_(tenant_id), K_(task_id), K_(scheduler_id), K_(return_addr), K(serialized_task_.length()));
|
|
|
|
bool is_valid() const
|
|
{
|
|
return OB_INVALID_ID != tenant_id_ && task_id_.is_valid() && scheduler_id_ > 0 && return_addr_.is_valid() &&
|
|
!serialized_task_.empty();
|
|
}
|
|
|
|
uint64_t tenant_id_;
|
|
ObTaskID task_id_;
|
|
uint64_t scheduler_id_;
|
|
common::ObAddr return_addr_;
|
|
common::ObString serialized_task_;
|
|
};
|
|
|
|
struct ObBKGDTaskCompleteArg {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObBKGDTaskCompleteArg() : scheduler_id_(0), return_code_(common::OB_SUCCESS)
|
|
{}
|
|
TO_STRING_KV(K_(task_id), K_(scheduler_id), K_(return_code), K_(event));
|
|
|
|
ObTaskID task_id_;
|
|
uint64_t scheduler_id_;
|
|
int return_code_;
|
|
ObTaskCompleteEvent event_;
|
|
};
|
|
|
|
struct ObFetchIntermResultItemArg {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFetchIntermResultItemArg() : index_(OB_INVALID_INDEX)
|
|
{}
|
|
|
|
ObSliceID slice_id_;
|
|
int64_t index_;
|
|
|
|
TO_STRING_KV(K_(slice_id), K_(index));
|
|
};
|
|
|
|
struct ObFetchIntermResultItemRes {
|
|
OB_UNIS_VERSION(1);
|
|
|
|
public:
|
|
ObFetchIntermResultItemRes() : total_item_cnt_(-1)
|
|
{}
|
|
|
|
ObIntermResultItem result_item_;
|
|
int64_t total_item_cnt_;
|
|
|
|
TO_STRING_KV(K_(result_item), K_(total_item_cnt));
|
|
};
|
|
|
|
} // namespace sql
|
|
|
|
namespace obrpc {
|
|
class ObExecutorRpcProxy : public obrpc::ObRpcProxy {
|
|
public:
|
|
DEFINE_TO(ObExecutorRpcProxy);
|
|
|
|
RPC_SS(@PR5 task_execute, obrpc::OB_REMOTE_EXECUTE, (sql::ObTask), common::ObScanner);
|
|
RPC_SS(@PR5 remote_task_execute, obrpc::OB_REMOTE_SYNC_EXECUTE, (sql::ObRemoteTask), common::ObScanner);
|
|
RPC_SS(@PR5 task_fetch_result, obrpc::OB_TASK_FETCH_RESULT, (sql::ObSliceID), common::ObScanner);
|
|
RPC_SS(@PR5 task_fetch_interm_result, obrpc::OB_TASK_FETCH_INTERM_RESULT, (sql::ObSliceID), sql::ObIntermResultItem);
|
|
RPC_S(@PR4 fetch_interm_result_item, obrpc::OB_FETCH_INTERM_RESULT_ITEM, (sql::ObFetchIntermResultItemArg),
|
|
sql::ObFetchIntermResultItemRes);
|
|
// task_submit not used after cluser version upgrade to 1.3.0
|
|
// Remain this for compatibility
|
|
RPC_S(@PR5 task_submit, obrpc::OB_DIST_EXECUTE, (sql::ObTask));
|
|
RPC_S(@PR5 task_kill, obrpc::OB_TASK_KILL, (sql::ObTaskID));
|
|
RPC_S(@PR5 task_notify_fetch, obrpc::OB_TASK_NOTIFY_FETCH, (sql::ObTaskEvent));
|
|
RPC_S(@PR5 task_complete, obrpc::OB_TASK_COMPLETE, (sql::ObTaskCompleteEvent));
|
|
RPC_S(@PR5 mini_task_execute, obrpc::OB_MINI_TASK_EXECUTE, (sql::ObMiniTask), sql::ObMiniTaskResult);
|
|
RPC_S(@PR5 bkgd_task_submit, obrpc::OB_BKGD_DIST_EXECUTE, (sql::ObBKGDDistExecuteArg));
|
|
RPC_S(@PR5 bkgd_task_complete, obrpc::OB_BKGD_TASK_COMPLETE, (sql::ObBKGDTaskCompleteArg));
|
|
RPC_S(
|
|
@PR5 check_build_index_task_exist, OB_CHECK_BUILD_INDEX_TASK_EXIST, (ObCheckBuildIndexTaskExistArg), obrpc::Bool);
|
|
RPC_AP(@PR5 close_result, obrpc::OB_CLOSE_RESULT, (sql::ObSliceID));
|
|
// ap_task_submit async process of task submit.
|
|
// The task complete event would process in IO thread.
|
|
RPC_AP(@PR5 ap_task_submit, obrpc::OB_AP_DIST_EXECUTE, (sql::ObTask), sql::ObTaskCompleteEvent);
|
|
RPC_AP(@PR5 ap_mini_task_submit, obrpc::OB_AP_MINI_DIST_EXECUTE, (sql::ObMiniTask), sql::ObMiniTaskResult);
|
|
RPC_AP(@PR5 ap_ping_sql_task, obrpc::OB_AP_PING_SQL_TASK, (sql::ObPingSqlTask), sql::ObPingSqlTaskResult);
|
|
RPC_AP(@PR5 remote_task_submit, obrpc::OB_REMOTE_ASYNC_EXECUTE, (sql::ObRemoteTask));
|
|
RPC_AP(@PR5 remote_post_result, obrpc::OB_REMOTE_POST_RESULT, (sql::ObRemoteResult));
|
|
};
|
|
} // namespace obrpc
|
|
} // namespace oceanbase
|
|
#endif /* OCEANBASE_SQL_EXECUTOR_OB_EXECUTOR_RPC_PROXY_ */
|
|
//// end of header file
|