patch 4.0
This commit is contained in:
95
src/sql/resolver/cmd/ob_anonymous_block_stmt.h
Normal file
95
src/sql/resolver/cmd/ob_anonymous_block_stmt.h
Normal file
@ -0,0 +1,95 @@
|
||||
/**
|
||||
* 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_SRC_SQL_RESOLVER_DDL_OB_DO_ANONYMOUS_BLOCK_STMT_H_
|
||||
#define OCEANBASE_SRC_SQL_RESOLVER_DDL_OB_DO_ANONYMOUS_BLOCK_STMT_H_
|
||||
|
||||
#include "lib/container/ob_se_array.h"
|
||||
#include "lib/string/ob_string.h"
|
||||
#include "lib/allocator/ob_allocator.h"
|
||||
#include "common/object/ob_object.h"
|
||||
#include "share/schema/ob_table_schema.h"
|
||||
#include "sql/parser/parse_node.h"
|
||||
#include "sql/resolver/cmd/ob_cmd_stmt.h"
|
||||
namespace oceanbase
|
||||
{
|
||||
namespace sql
|
||||
{
|
||||
|
||||
class ObAnonymousBlockStmt : public ObCMDStmt
|
||||
{
|
||||
public:
|
||||
explicit ObAnonymousBlockStmt(common::ObIAllocator *name_pool)
|
||||
: ObCMDStmt(name_pool, stmt::T_ANONYMOUS_BLOCK),
|
||||
body_(NULL),
|
||||
sql_(),
|
||||
statement_id_(OB_INVALID_ID),
|
||||
is_prepare_protocol_(false),
|
||||
params_(NULL),
|
||||
out_idx_()
|
||||
{
|
||||
}
|
||||
ObAnonymousBlockStmt()
|
||||
: ObCMDStmt(stmt::T_ANONYMOUS_BLOCK),
|
||||
body_(NULL),
|
||||
sql_(),
|
||||
statement_id_(OB_INVALID_ID),
|
||||
is_prepare_protocol_(false),
|
||||
params_(NULL),
|
||||
out_idx_()
|
||||
{
|
||||
}
|
||||
virtual ~ObAnonymousBlockStmt() {}
|
||||
|
||||
inline const ParseNode *get_body() const { return body_; }
|
||||
inline void set_body(ParseNode *body) { body_ = body; }
|
||||
|
||||
inline const ObString &get_sql() const { return sql_;}
|
||||
inline void set_sql(const ObString &sql) { sql_ = sql; }
|
||||
|
||||
inline uint64_t get_stmt_id() const { return statement_id_; }
|
||||
inline void set_stmt_id(uint64_t stmt_id) { statement_id_ = stmt_id; }
|
||||
\
|
||||
inline bool is_prepare_protocol() const {return is_prepare_protocol_; }
|
||||
inline void set_prepare_protocol(bool is_prepare) { is_prepare_protocol_ = is_prepare; }
|
||||
inline void set_params(ParamStore *params) { params_ = params; }
|
||||
inline ParamStore *get_params() { return params_; }
|
||||
int add_param(const common::ObObjParam& param);
|
||||
virtual obrpc::ObDDLArg &get_ddl_arg() { return ddl_arg_; }
|
||||
|
||||
int resolve_inout_param(ParseNode &block_node, ObAnonymousBlockStmt &stmt);
|
||||
const ObBitSet<>& get_out_idx() const { return out_idx_; }
|
||||
ObBitSet<>& get_out_idx() { return out_idx_; }
|
||||
|
||||
TO_STRING_KV(K_(stmt_type),
|
||||
K_(sql),
|
||||
K_(statement_id),
|
||||
K_(is_prepare_protocol));
|
||||
|
||||
private:
|
||||
ParseNode *body_;
|
||||
ObString sql_;
|
||||
uint64_t statement_id_;
|
||||
bool is_prepare_protocol_;
|
||||
ParamStore *params_;//for ps param
|
||||
obrpc::ObDDLArg ddl_arg_; // 用于返回exec_tenant_id_
|
||||
ObBitSet<> out_idx_;
|
||||
DISALLOW_COPY_AND_ASSIGN(ObAnonymousBlockStmt);
|
||||
};
|
||||
|
||||
|
||||
}//namespace sql
|
||||
}//namespace oceanbase
|
||||
|
||||
|
||||
|
||||
#endif /* OCEANBASE_SRC_SQL_RESOLVER_DDL_OB_DO_ANONYMOUS_BLOCK_STMT_H_ */
|
||||
Reference in New Issue
Block a user