opensource bigfix patch

This commit is contained in:
obdev
2021-07-13 19:42:21 +08:00
committed by wangzelin.wzl
parent 2c4f8593fb
commit f27ecbb784
17 changed files with 124 additions and 52 deletions

View File

@ -570,7 +570,30 @@ int ObObj::deep_copy(const ObObj& src, char* buf, const int64_t size, int64_t& p
return ret;
}
bool ObObj::can_compare(const ObObj& other) const
void* ObObj::get_deep_copy_obj_ptr()
{
void * ptr = NULL;
if (ob_is_string_type(this->get_type())) {
// val_len_ == 0 is empty string, and it may point to unexpected address
// Therefore, reset it to NULL
if (val_len_ != 0) {
ptr = (void *)v_.string_;
}
} else if (ob_is_raw(this->get_type())) {
ptr = (void *)v_.string_;
} else if (ob_is_number_tc(this->get_type())) {
ptr = (void *)v_.nmb_digits_;
} else if (ob_is_rowid_tc(this->get_type())) {
ptr = (void *)v_.string_;
} else if (ob_is_lob_locator(this->get_type())) {
ptr = (void *)&v_.lob_locator_;
} else {
// do nothing
}
return ptr;
}
bool ObObj::can_compare(const ObObj &other) const
{
obj_cmp_func cmp_func = NULL;
return (is_min_value() || is_max_value() || other.is_min_value() || other.is_max_value() ||

View File

@ -2084,10 +2084,11 @@ public:
//@{ deep copy
bool need_deep_copy() const;
OB_INLINE int64_t get_deep_copy_size() const;
int deep_copy(const ObObj& src, char* buf, const int64_t size, int64_t& pos);
void set_data_ptr(void* data_ptr);
const void* get_data_ptr() const;
// return byte length
int deep_copy(const ObObj &src, char *buf, const int64_t size, int64_t &pos);
void* get_deep_copy_obj_ptr();
void set_data_ptr(void *data_ptr);
const void *get_data_ptr() const;
//return byte length
int64_t get_data_length() const;
template <typename Allocator>

View File

@ -818,6 +818,9 @@ const uint64_t OB_ORA_SYS_DATABASE_ID = 6;
const uint64_t OB_ORA_LBACSYS_DATABASE_ID = 7;
const uint64_t OB_ORA_AUDITOR_DATABASE_ID = 8;
const char* const OB_ORA_PUBLIC_SCHEMA_NAME = "PUBLIC";
// not actual database, only for using and creating outlines without specified database
const uint64_t OB_OUTLINE_DEFAULT_DATABASE_ID = 9;
const char* const OB_OUTLINE_DEFAULT_DATABASE_NAME = "__outline_default_db";
// sys unit associated const
const uint64_t OB_SYS_UNIT_CONFIG_ID = 1;