[CP] add serialization size check
This commit is contained in:
@ -55,6 +55,11 @@ if(ENABLE_SMART_VAR_CHECK)
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SMART_VAR_CHECK")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SMART_VAR_CHECK")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_SERIALIZATION_CHECK)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_SERIALIZATION_CHECK")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SERIALIZATION_CHECK")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(ENABLE_DEBUG_LOG)
|
if(ENABLE_DEBUG_LOG)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_DEBUG_LOG")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_DEBUG_LOG")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_DEBUG_LOG")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_DEBUG_LOG")
|
||||||
|
|||||||
@ -18,6 +18,7 @@ ob_define(ENABLE_MEMORY_DIAGNOSIS OFF)
|
|||||||
ob_define(ENABLE_OBJ_LEAK_CHECK OFF)
|
ob_define(ENABLE_OBJ_LEAK_CHECK OFF)
|
||||||
ob_define(ENABLE_FATAL_ERROR_HANG ON)
|
ob_define(ENABLE_FATAL_ERROR_HANG ON)
|
||||||
ob_define(ENABLE_SMART_VAR_CHECK OFF)
|
ob_define(ENABLE_SMART_VAR_CHECK OFF)
|
||||||
|
ob_define(ENABLE_SERIALIZATION_CHECK OFF)
|
||||||
ob_define(ENABLE_COMPILE_DLL_MODE OFF)
|
ob_define(ENABLE_COMPILE_DLL_MODE OFF)
|
||||||
ob_define(OB_CMAKE_RULES_CHECK ON)
|
ob_define(OB_CMAKE_RULES_CHECK ON)
|
||||||
ob_define(OB_STATIC_LINK_LGPL_DEPS ON)
|
ob_define(OB_STATIC_LINK_LGPL_DEPS ON)
|
||||||
|
|||||||
1
deps/oblib/src/lib/CMakeLists.txt
vendored
1
deps/oblib/src/lib/CMakeLists.txt
vendored
@ -262,6 +262,7 @@ ob_set_subtarget(oblib_lib utility
|
|||||||
utility/utility.cpp
|
utility/utility.cpp
|
||||||
utility/ob_backtrace.cpp
|
utility/ob_backtrace.cpp
|
||||||
utility/ob_proto_trans_util.cpp
|
utility/ob_proto_trans_util.cpp
|
||||||
|
utility/ob_unify_serialize.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
ob_set_subtarget(oblib_lib ash
|
ob_set_subtarget(oblib_lib ash
|
||||||
|
|||||||
@ -291,6 +291,11 @@ const char *to_cstring<int64_t>(const int64_t &v)
|
|||||||
return to_cstring<int64_t>(v, BoolType<false>());
|
return to_cstring<int64_t>(v, BoolType<false>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *to_cstring(const int64_t v)
|
||||||
|
{
|
||||||
|
return to_cstring<int64_t>(v, BoolType<false>());
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int databuff_printf(char *buf, const int64_t buf_len, const char *fmt, ...)
|
int databuff_printf(char *buf, const int64_t buf_len, const char *fmt, ...)
|
||||||
|
|||||||
2
deps/oblib/src/lib/utility/ob_print_utils.h
vendored
2
deps/oblib/src/lib/utility/ob_print_utils.h
vendored
@ -272,6 +272,8 @@ const char *to_cstring<const char *>(const char *const &str);
|
|||||||
template <>
|
template <>
|
||||||
const char *to_cstring<int64_t>(const int64_t &v);
|
const char *to_cstring<int64_t>(const int64_t &v);
|
||||||
|
|
||||||
|
const char *to_cstring(const int64_t v);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
const char *to_cstring(T *obj)
|
const char *to_cstring(T *obj)
|
||||||
{
|
{
|
||||||
|
|||||||
49
deps/oblib/src/lib/utility/ob_unify_serialize.cpp
vendored
Normal file
49
deps/oblib/src/lib/utility/ob_unify_serialize.cpp
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_SERIALIZATION_CHECK
|
||||||
|
#include "ob_unify_serialize.h"
|
||||||
|
namespace oceanbase
|
||||||
|
{
|
||||||
|
namespace lib
|
||||||
|
{
|
||||||
|
RLOCAL(SerializeDiagnoseRecord, ser_diag_record);
|
||||||
|
void begin_record_serialization()
|
||||||
|
{
|
||||||
|
ser_diag_record.count = 0;
|
||||||
|
ser_diag_record.check_index = 0;
|
||||||
|
ser_diag_record.flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void finish_record_serialization()
|
||||||
|
{
|
||||||
|
ser_diag_record.flag = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void begin_check_serialization()
|
||||||
|
{
|
||||||
|
ser_diag_record.check_index = 0;
|
||||||
|
if (ser_diag_record.count > 0) {
|
||||||
|
ser_diag_record.flag = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void finish_check_serialization()
|
||||||
|
{
|
||||||
|
ser_diag_record.count = -1;
|
||||||
|
ser_diag_record.check_index = -1;
|
||||||
|
ser_diag_record.flag = 0;
|
||||||
|
}
|
||||||
|
} // namespace lib
|
||||||
|
} // namespace oceanbase
|
||||||
|
#endif
|
||||||
49
deps/oblib/src/lib/utility/ob_unify_serialize.h
vendored
49
deps/oblib/src/lib/utility/ob_unify_serialize.h
vendored
@ -15,8 +15,26 @@
|
|||||||
|
|
||||||
#include "lib/utility/serialization.h"
|
#include "lib/utility/serialization.h"
|
||||||
|
|
||||||
namespace oceanbase {
|
namespace oceanbase
|
||||||
namespace lib {
|
{
|
||||||
|
namespace lib
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef ENABLE_SERIALIZATION_CHECK
|
||||||
|
static constexpr int MAX_SERIALIZE_RECORD_LENGTH = 256;
|
||||||
|
struct SerializeDiagnoseRecord
|
||||||
|
{
|
||||||
|
uint8_t encoded_lens[MAX_SERIALIZE_RECORD_LENGTH];
|
||||||
|
int count = -1;
|
||||||
|
int check_index = -1;
|
||||||
|
int flag = 0;
|
||||||
|
};
|
||||||
|
RLOCAL_EXTERN(SerializeDiagnoseRecord, ser_diag_record);
|
||||||
|
void begin_record_serialization();
|
||||||
|
void finish_record_serialization();
|
||||||
|
void begin_check_serialization();
|
||||||
|
void finish_check_serialization();
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SERIAL_PARAMS char *buf, const int64_t buf_len, int64_t &pos
|
#define SERIAL_PARAMS char *buf, const int64_t buf_len, int64_t &pos
|
||||||
#define DESERIAL_PARAMS const char *buf, const int64_t data_len, int64_t &pos
|
#define DESERIAL_PARAMS const char *buf, const int64_t data_len, int64_t &pos
|
||||||
@ -67,8 +85,32 @@ namespace lib {
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_SERIALIZATION_CHECK
|
||||||
|
#define OB_UNIS_ADD_LEN(obj) \
|
||||||
|
{ \
|
||||||
|
int64_t this_len = NS_::encoded_length(obj); \
|
||||||
|
if (!(std::is_same<uint8_t, decltype(obj)>::value || std::is_same<int8_t, decltype(obj)>::value || \
|
||||||
|
std::is_same<bool, decltype(obj)>::value || std::is_same<char, decltype(obj)>::value)) { \
|
||||||
|
if (1 == oceanbase::lib::ser_diag_record.flag && \
|
||||||
|
oceanbase::lib::ser_diag_record.count < oceanbase::lib::MAX_SERIALIZE_RECORD_LENGTH) { \
|
||||||
|
oceanbase::lib::ser_diag_record.encoded_lens[oceanbase::lib::ser_diag_record.count++] = \
|
||||||
|
static_cast<uint8_t>(this_len); \
|
||||||
|
} else if (2 == oceanbase::lib::ser_diag_record.flag && \
|
||||||
|
oceanbase::lib::ser_diag_record.check_index < oceanbase::lib::ser_diag_record.count) { \
|
||||||
|
int ret = OB_ERR_UNEXPECTED; \
|
||||||
|
int record_len = oceanbase::lib::ser_diag_record.encoded_lens[oceanbase::lib::ser_diag_record.check_index]; \
|
||||||
|
if (this_len != record_len) { \
|
||||||
|
OB_LOG(ERROR, "encoded length not match", "name", MSTR(obj), K(this_len), K(record_len), K(obj)); \
|
||||||
|
} \
|
||||||
|
oceanbase::lib::ser_diag_record.check_index++; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
len += this_len; \
|
||||||
|
}
|
||||||
|
#else
|
||||||
#define OB_UNIS_ADD_LEN(obj) \
|
#define OB_UNIS_ADD_LEN(obj) \
|
||||||
len += NS_::encoded_length(obj)
|
len += NS_::encoded_length(obj)
|
||||||
|
#endif
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
|
|
||||||
// serialize_ no header
|
// serialize_ no header
|
||||||
@ -316,6 +358,7 @@ inline uint64_t &get_unis_compat_version()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define UNIS_VERSION_GUARD(x)
|
#define UNIS_VERSION_GUARD(x)
|
||||||
}} // namespace oceanbase::lib
|
} // namespace lib
|
||||||
|
} // namespace oceanbase
|
||||||
|
|
||||||
#endif /* _OCEABASE_LIB_UTILITY_OB_UNIFY_SERIALIZE_H_ */
|
#endif /* _OCEABASE_LIB_UTILITY_OB_UNIFY_SERIALIZE_H_ */
|
||||||
|
|||||||
11
deps/oblib/src/rpc/obrpc/ob_rpc_endec.h
vendored
11
deps/oblib/src/rpc/obrpc/ob_rpc_endec.h
vendored
@ -47,7 +47,13 @@ template <typename T>
|
|||||||
ObRpcPacket pkt;
|
ObRpcPacket pkt;
|
||||||
const int64_t header_sz = pkt.get_header_size();
|
const int64_t header_sz = pkt.get_header_size();
|
||||||
int64_t extra_payload_size = calc_extra_payload_size();
|
int64_t extra_payload_size = calc_extra_payload_size();
|
||||||
|
#ifdef ENABLE_SERIALIZATION_CHECK
|
||||||
|
lib::begin_record_serialization();
|
||||||
int64_t args_len = common::serialization::encoded_length(args);
|
int64_t args_len = common::serialization::encoded_length(args);
|
||||||
|
lib::finish_record_serialization();
|
||||||
|
#else
|
||||||
|
int64_t args_len = common::serialization::encoded_length(args);
|
||||||
|
#endif
|
||||||
int64_t payload_sz = extra_payload_size + args_len;
|
int64_t payload_sz = extra_payload_size + args_len;
|
||||||
const int64_t reserve_bytes_for_pnio = 0;
|
const int64_t reserve_bytes_for_pnio = 0;
|
||||||
char* header_buf = (char*)pool.alloc(reserve_bytes_for_pnio + header_sz + payload_sz) + reserve_bytes_for_pnio;
|
char* header_buf = (char*)pool.alloc(reserve_bytes_for_pnio + header_sz + payload_sz) + reserve_bytes_for_pnio;
|
||||||
@ -65,6 +71,11 @@ template <typename T>
|
|||||||
payload_buf, payload_sz, pos, args))) {
|
payload_buf, payload_sz, pos, args))) {
|
||||||
RPC_OBRPC_LOG(WARN, "serialize argument fail", K(pos), K(payload_sz), K(ret));
|
RPC_OBRPC_LOG(WARN, "serialize argument fail", K(pos), K(payload_sz), K(ret));
|
||||||
} else if (OB_UNLIKELY(args_len < pos)) {
|
} else if (OB_UNLIKELY(args_len < pos)) {
|
||||||
|
#ifdef ENABLE_SERIALIZATION_CHECK
|
||||||
|
lib::begin_check_serialization();
|
||||||
|
common::serialization::encoded_length(args);
|
||||||
|
lib::finish_check_serialization();
|
||||||
|
#endif
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
RPC_OBRPC_LOG(ERROR, "arg encoded length greater than arg length", K(ret), K(payload_sz),
|
RPC_OBRPC_LOG(ERROR, "arg encoded length greater than arg length", K(ret), K(payload_sz),
|
||||||
K(args_len), K(extra_payload_size), K(pos), K(pcode));
|
K(args_len), K(extra_payload_size), K(pos), K(pcode));
|
||||||
|
|||||||
@ -354,6 +354,8 @@ struct ElectionPriorityAdaptivedSerializationBuffer
|
|||||||
}
|
}
|
||||||
unsigned char *priority_buffer_;
|
unsigned char *priority_buffer_;
|
||||||
int64_t buffer_used_size_;
|
int64_t buffer_used_size_;
|
||||||
|
public:
|
||||||
|
TO_STRING_KV(K(buffer_used_size_));
|
||||||
};
|
};
|
||||||
class ElectionAcceptResponseMsgMiddle : public ElectionMsgBase
|
class ElectionAcceptResponseMsgMiddle : public ElectionMsgBase
|
||||||
{
|
{
|
||||||
|
|||||||
@ -863,6 +863,7 @@ public:
|
|||||||
const common::ObIArray<common::ObString>& get_select_columns() const { return properties_names_; };
|
const common::ObIArray<common::ObString>& get_select_columns() const { return properties_names_; };
|
||||||
static int64_t get_max_packet_buffer_length() { return obrpc::get_max_rpc_packet_size() - (1<<20); }
|
static int64_t get_max_packet_buffer_length() { return obrpc::get_max_rpc_packet_size() - (1<<20); }
|
||||||
static int64_t get_max_buf_block_size() { return get_max_packet_buffer_length() - (1024*1024LL); }
|
static int64_t get_max_buf_block_size() { return get_max_packet_buffer_length() - (1024*1024LL); }
|
||||||
|
TO_STRING_KV(K(properties_names_), K(row_count_), K(buf_.get_position()));
|
||||||
private:
|
private:
|
||||||
static const int64_t DEFAULT_BUF_BLOCK_SIZE = common::OB_MALLOC_BIG_BLOCK_SIZE - (1024*1024LL);
|
static const int64_t DEFAULT_BUF_BLOCK_SIZE = common::OB_MALLOC_BIG_BLOCK_SIZE - (1024*1024LL);
|
||||||
int alloc_buf_if_need(const int64_t size);
|
int alloc_buf_if_need(const int64_t size);
|
||||||
|
|||||||
@ -331,6 +331,7 @@ public:
|
|||||||
}
|
}
|
||||||
int save_success_task(const common::ObTabletID &succ_id)
|
int save_success_task(const common::ObTabletID &succ_id)
|
||||||
{ return succ_tablet_list_.push_back(succ_id); }
|
{ return succ_tablet_list_.push_back(succ_id); }
|
||||||
|
TO_STRING_KV(K(all_tablet_list_));
|
||||||
private:
|
private:
|
||||||
int get_vt_svr_pair(uint64_t vt_id, const VirtualSvrPair *&vt_svr_pair);
|
int get_vt_svr_pair(uint64_t vt_id, const VirtualSvrPair *&vt_svr_pair);
|
||||||
int get_vt_tablet_loc(uint64_t table_id,
|
int get_vt_tablet_loc(uint64_t table_id,
|
||||||
|
|||||||
@ -415,6 +415,7 @@ public:
|
|||||||
ObPushdownFilterNode *&pd_storage_filter);
|
ObPushdownFilterNode *&pd_storage_filter);
|
||||||
static int64_t get_serialize_pushdown_filter_size(ObPushdownFilterNode *pd_filter_node);
|
static int64_t get_serialize_pushdown_filter_size(ObPushdownFilterNode *pd_filter_node);
|
||||||
// NEED_SERIALIZE_AND_DESERIALIZE;
|
// NEED_SERIALIZE_AND_DESERIALIZE;
|
||||||
|
TO_STRING_KV(KP(filter_tree_));
|
||||||
private:
|
private:
|
||||||
common::ObIAllocator &alloc_;
|
common::ObIAllocator &alloc_;
|
||||||
ObPushdownFilterNode *filter_tree_;
|
ObPushdownFilterNode *filter_tree_;
|
||||||
|
|||||||
@ -236,6 +236,7 @@ public:
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
TO_STRING_KV(KP(ptr_value_));
|
||||||
|
|
||||||
private:
|
private:
|
||||||
union {
|
union {
|
||||||
|
|||||||
@ -1235,6 +1235,7 @@ struct ObSerCArray
|
|||||||
ObSerCArray(T &data, U &cnt) : data_(data), cnt_(cnt) {}
|
ObSerCArray(T &data, U &cnt) : data_(data), cnt_(cnt) {}
|
||||||
T &data_;
|
T &data_;
|
||||||
U &cnt_;
|
U &cnt_;
|
||||||
|
TO_STRING_KV(K(cnt_));
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T, typename U>
|
template <typename T, typename U>
|
||||||
|
|||||||
@ -103,6 +103,7 @@ public:
|
|||||||
common::ObFixedArray<ObExprResType, common::ObIAllocator> udf_attributes_types_;
|
common::ObFixedArray<ObExprResType, common::ObIAllocator> udf_attributes_types_;
|
||||||
// indicate the argument is const expr or not
|
// indicate the argument is const expr or not
|
||||||
common::ObFixedArray<bool, common::ObIAllocator> args_const_attr_;
|
common::ObFixedArray<bool, common::ObIAllocator> args_const_attr_;
|
||||||
|
TO_STRING_KV(K(udf_meta_), K(udf_attributes_), K(udf_attributes_types_), K(args_const_attr_));
|
||||||
};
|
};
|
||||||
|
|
||||||
OB_DEF_SERIALIZE(ObDllUdfInfo<UF>, template<typename UF>)
|
OB_DEF_SERIALIZE(ObDllUdfInfo<UF>, template<typename UF>)
|
||||||
|
|||||||
@ -40,6 +40,7 @@ public:
|
|||||||
ObIExprExtraInfo *&copied_info) const = 0;
|
ObIExprExtraInfo *&copied_info) const = 0;
|
||||||
public:
|
public:
|
||||||
ObExprOperatorType type_;
|
ObExprOperatorType type_;
|
||||||
|
TO_STRING_KV(K(type_));
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace sql
|
} // end namespace sql
|
||||||
|
|||||||
@ -47,6 +47,8 @@ struct ObJoinFilterShareInfo
|
|||||||
uint64_t filter_ptr_; //此指针将作为PX JOIN FILTER CREATE算子共享内存.
|
uint64_t filter_ptr_; //此指针将作为PX JOIN FILTER CREATE算子共享内存.
|
||||||
uint64_t shared_msgs_; //sqc-shared dh msgs
|
uint64_t shared_msgs_; //sqc-shared dh msgs
|
||||||
OB_UNIS_VERSION_V(1);
|
OB_UNIS_VERSION_V(1);
|
||||||
|
public:
|
||||||
|
TO_STRING_KV(KP(unfinished_count_ptr_), KP(ch_provider_ptr_), KP(release_ref_ptr_), KP(filter_ptr_), K(shared_msgs_));
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ObJoinFilterRuntimeConfig
|
struct ObJoinFilterRuntimeConfig
|
||||||
|
|||||||
@ -681,6 +681,7 @@ public:
|
|||||||
|
|
||||||
ObPhyOperatorType get_type() const { return spec_.type_; }
|
ObPhyOperatorType get_type() const { return spec_.type_; }
|
||||||
const ObOpSpec &get_spec() const { return spec_; }
|
const ObOpSpec &get_spec() const { return spec_; }
|
||||||
|
TO_STRING_KV(K(spec_));
|
||||||
protected:
|
protected:
|
||||||
ObExecContext &exec_ctx_;
|
ObExecContext &exec_ctx_;
|
||||||
const ObOpSpec &spec_;
|
const ObOpSpec &spec_;
|
||||||
|
|||||||
@ -44,6 +44,7 @@ public:
|
|||||||
bool is_inited() const { return PHY_INVALID != op_type_; }
|
bool is_inited() const { return PHY_INVALID != op_type_; }
|
||||||
ObPhyOperatorType op_type_;
|
ObPhyOperatorType op_type_;
|
||||||
int64_t op_id_;
|
int64_t op_id_;
|
||||||
|
TO_STRING_KV(K(op_type_), K(op_id_));
|
||||||
};
|
};
|
||||||
public:
|
public:
|
||||||
virtual int inner_open() override;
|
virtual int inner_open() override;
|
||||||
|
|||||||
@ -224,6 +224,9 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ObTaskExecutorCtx);
|
DISALLOW_COPY_AND_ASSIGN(ObTaskExecutorCtx);
|
||||||
|
TO_STRING_KV(K(table_locations_), K(retry_times_), K(min_cluster_version_), K(expected_worker_cnt_),
|
||||||
|
K(admited_worker_cnt_), K(query_tenant_begin_schema_version_), K(query_sys_begin_schema_version_),
|
||||||
|
K(minimal_worker_cnt_));
|
||||||
};
|
};
|
||||||
|
|
||||||
class ObExecutorRpcImpl;
|
class ObExecutorRpcImpl;
|
||||||
|
|||||||
@ -638,6 +638,7 @@ public:
|
|||||||
uint32_t reserved_ : 29;
|
uint32_t reserved_ : 29;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
TO_STRING_KV(K(stmt_type_));
|
||||||
private:
|
private:
|
||||||
share::ObFeedbackRerouteInfo *reroute_info_;
|
share::ObFeedbackRerouteInfo *reroute_info_;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -68,6 +68,7 @@ public:
|
|||||||
int erase_refactored(const common::ObString &key, ObSessionVariable *sess_var = NULL);
|
int erase_refactored(const common::ObString &key, ObSessionVariable *sess_var = NULL);
|
||||||
int64_t size() const {return map_.size();}
|
int64_t size() const {return map_.size();}
|
||||||
NEED_SERIALIZE_AND_DESERIALIZE;
|
NEED_SERIALIZE_AND_DESERIALIZE;
|
||||||
|
TO_STRING_KV(K(size()));
|
||||||
private:
|
private:
|
||||||
int free_mem();
|
int free_mem();
|
||||||
|
|
||||||
|
|||||||
@ -509,6 +509,8 @@ struct ObInnerContextMap {
|
|||||||
ObInnerContextHashMap *context_map_;
|
ObInnerContextHashMap *context_map_;
|
||||||
common::ObIAllocator &alloc_;
|
common::ObIAllocator &alloc_;
|
||||||
OB_UNIS_VERSION(1);
|
OB_UNIS_VERSION(1);
|
||||||
|
public:
|
||||||
|
TO_STRING_KV(K(context_name_), K(context_map_->size()));
|
||||||
};
|
};
|
||||||
typedef common::hash::ObHashMap<common::ObString, ObInnerContextMap *,
|
typedef common::hash::ObHashMap<common::ObString, ObInnerContextMap *,
|
||||||
common::hash::NoPthreadDefendMode,
|
common::hash::NoPthreadDefendMode,
|
||||||
|
|||||||
Reference in New Issue
Block a user