Fix oceanbase::storage::ObCopyMacroRangeInfo core
This commit is contained in:
3
deps/oblib/src/lib/ob_define.h
vendored
3
deps/oblib/src/lib/ob_define.h
vendored
@ -248,6 +248,9 @@ const int64_t OB_MAX_NODEGROUP_LENGTH = 12;
|
|||||||
//change from 128 to 64, according to production definition document
|
//change from 128 to 64, according to production definition document
|
||||||
const int64_t OB_MAX_RESERVED_POINT_TYPE_LENGTH = 32;
|
const int64_t OB_MAX_RESERVED_POINT_TYPE_LENGTH = 32;
|
||||||
const int64_t OB_MAX_RESERVED_POINT_NAME_LENGTH = 128;
|
const int64_t OB_MAX_RESERVED_POINT_NAME_LENGTH = 128;
|
||||||
|
const int64_t OB_MAX_EXTRA_ROWKEY_COLUMN_NUMBER = 2; //storage extra rowkey column number, it contains trans version column and sql sequence column
|
||||||
|
const int64_t OB_INNER_MAX_ROWKEY_COLUMN_NUMBER = OB_MAX_ROWKEY_COLUMN_NUMBER + OB_MAX_EXTRA_ROWKEY_COLUMN_NUMBER;
|
||||||
|
|
||||||
|
|
||||||
//for recybin
|
//for recybin
|
||||||
const int64_t OB_MAX_OBJECT_NAME_LENGTH = 128; //should include index_name
|
const int64_t OB_MAX_OBJECT_NAME_LENGTH = 128; //should include index_name
|
||||||
|
|||||||
@ -264,11 +264,11 @@ int ObAllVirtualTabletSSTableMacroInfo::get_macro_info(
|
|||||||
ObStoreRowkey &end_key = info.store_range_.get_end_key();
|
ObStoreRowkey &end_key = info.store_range_.get_end_key();
|
||||||
if (start_key != ObStoreRowkey::MIN_STORE_ROWKEY
|
if (start_key != ObStoreRowkey::MIN_STORE_ROWKEY
|
||||||
&& OB_FAIL(start_key.assign(start_key.get_obj_ptr(),
|
&& OB_FAIL(start_key.assign(start_key.get_obj_ptr(),
|
||||||
start_key.get_obj_cnt() - ObMultiVersionRowkeyHelpper::MAX_EXTRA_ROWKEY_CNT))) {
|
start_key.get_obj_cnt() - OB_MAX_EXTRA_ROWKEY_COLUMN_NUMBER))) {
|
||||||
SERVER_LOG(WARN, "fail to set start key", K(ret), K(start_key));
|
SERVER_LOG(WARN, "fail to set start key", K(ret), K(start_key));
|
||||||
} else if (end_key != ObStoreRowkey::MAX_STORE_ROWKEY
|
} else if (end_key != ObStoreRowkey::MAX_STORE_ROWKEY
|
||||||
&& OB_FAIL(end_key.assign(end_key.get_obj_ptr(),
|
&& OB_FAIL(end_key.assign(end_key.get_obj_ptr(),
|
||||||
end_key.get_obj_cnt() - ObMultiVersionRowkeyHelpper::MAX_EXTRA_ROWKEY_CNT))) {
|
end_key.get_obj_cnt() - OB_MAX_EXTRA_ROWKEY_COLUMN_NUMBER))) {
|
||||||
SERVER_LOG(WARN, "fail to set end key", K(ret), K(end_key));
|
SERVER_LOG(WARN, "fail to set end key", K(ret), K(end_key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -144,6 +144,10 @@ OB_DEF_DESERIALIZE(ObDatumRowkey)
|
|||||||
STORAGE_LOG(WARN, "datum row key is not init", K(ret), KP(datums_));
|
STORAGE_LOG(WARN, "datum row key is not init", K(ret), KP(datums_));
|
||||||
} else {
|
} else {
|
||||||
OB_UNIS_DECODE(datum_cnt_);
|
OB_UNIS_DECODE(datum_cnt_);
|
||||||
|
if (datum_cnt_ > OB_INNER_MAX_ROWKEY_COLUMN_NUMBER) {
|
||||||
|
ret = OB_ERR_UNEXPECTED;
|
||||||
|
STORAGE_LOG(ERROR, "table store inner max rowkey column number exceed the limit, too large", K(ret), K(datum_cnt_));
|
||||||
|
}
|
||||||
OB_UNIS_DECODE_ARRAY(datums_, datum_cnt_);
|
OB_UNIS_DECODE_ARRAY(datums_, datum_cnt_);
|
||||||
hash_ = 0;
|
hash_ = 0;
|
||||||
group_idx_ = 0;
|
group_idx_ = 0;
|
||||||
|
|||||||
@ -209,7 +209,7 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static const int64_t OB_INDEX_BLOCK_MAX_COL_CNT =
|
static const int64_t OB_INDEX_BLOCK_MAX_COL_CNT =
|
||||||
common::OB_MAX_ROWKEY_COLUMN_NUMBER+ ObMultiVersionRowkeyHelpper::MAX_EXTRA_ROWKEY_CNT + 1;
|
common::OB_MAX_ROWKEY_COLUMN_NUMBER + OB_MAX_EXTRA_ROWKEY_COLUMN_NUMBER + 1;
|
||||||
ObIndexBlockTreePath cursor_path_;
|
ObIndexBlockTreePath cursor_path_;
|
||||||
ObIndexMicroBlockCache *index_block_cache_;
|
ObIndexMicroBlockCache *index_block_cache_;
|
||||||
ObIMicroBlockReader *reader_;
|
ObIMicroBlockReader *reader_;
|
||||||
|
|||||||
@ -653,7 +653,7 @@ ObCopyMacroRangeInfo::ObCopyMacroRangeInfo()
|
|||||||
end_macro_block_id_(),
|
end_macro_block_id_(),
|
||||||
macro_block_count_(0),
|
macro_block_count_(0),
|
||||||
is_leader_restore_(false),
|
is_leader_restore_(false),
|
||||||
start_macro_block_end_key_(datums_, OB_MAX_ROWKEY_COLUMN_NUMBER),
|
start_macro_block_end_key_(datums_, OB_INNER_MAX_ROWKEY_COLUMN_NUMBER),
|
||||||
allocator_("CopyMacroRange")
|
allocator_("CopyMacroRange")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -679,7 +679,7 @@ void ObCopyMacroRangeInfo::reuse()
|
|||||||
macro_block_count_ = 0;
|
macro_block_count_ = 0;
|
||||||
is_leader_restore_ = false;
|
is_leader_restore_ = false;
|
||||||
start_macro_block_end_key_.datums_ = datums_;
|
start_macro_block_end_key_.datums_ = datums_;
|
||||||
start_macro_block_end_key_.datum_cnt_ = OB_MAX_ROWKEY_COLUMN_NUMBER;
|
start_macro_block_end_key_.datum_cnt_ = OB_INNER_MAX_ROWKEY_COLUMN_NUMBER;
|
||||||
start_macro_block_end_key_.reuse();
|
start_macro_block_end_key_.reuse();
|
||||||
allocator_.reuse();
|
allocator_.reuse();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
#ifndef OCEABASE_STORAGE_HA_STRUCT_
|
#ifndef OCEABASE_STORAGE_HA_STRUCT_
|
||||||
#define OCEABASE_STORAGE_HA_STRUCT_
|
#define OCEABASE_STORAGE_HA_STRUCT_
|
||||||
|
|
||||||
|
#include "lib/ob_define.h"
|
||||||
#include "share/ob_ls_id.h"
|
#include "share/ob_ls_id.h"
|
||||||
#include "common/ob_member.h"
|
#include "common/ob_member.h"
|
||||||
#include "common/ob_tablet_id.h"
|
#include "common/ob_tablet_id.h"
|
||||||
@ -22,6 +23,7 @@
|
|||||||
#include "storage/blocksstable/ob_datum_rowkey.h"
|
#include "storage/blocksstable/ob_datum_rowkey.h"
|
||||||
#include "storage/blocksstable/ob_logic_macro_id.h"
|
#include "storage/blocksstable/ob_logic_macro_id.h"
|
||||||
|
|
||||||
|
|
||||||
namespace oceanbase
|
namespace oceanbase
|
||||||
{
|
{
|
||||||
namespace storage
|
namespace storage
|
||||||
@ -258,14 +260,15 @@ public:
|
|||||||
|
|
||||||
TO_STRING_KV(K_(start_macro_block_id), K_(end_macro_block_id),
|
TO_STRING_KV(K_(start_macro_block_id), K_(end_macro_block_id),
|
||||||
K_(macro_block_count), K_(start_macro_block_end_key), K_(is_leader_restore));
|
K_(macro_block_count), K_(start_macro_block_end_key), K_(is_leader_restore));
|
||||||
|
public:
|
||||||
blocksstable::ObLogicMacroBlockId start_macro_block_id_;
|
blocksstable::ObLogicMacroBlockId start_macro_block_id_;
|
||||||
blocksstable::ObLogicMacroBlockId end_macro_block_id_;
|
blocksstable::ObLogicMacroBlockId end_macro_block_id_;
|
||||||
int64_t macro_block_count_;
|
int64_t macro_block_count_;
|
||||||
bool is_leader_restore_;
|
bool is_leader_restore_;
|
||||||
blocksstable::ObStorageDatum datums_[OB_MAX_ROWKEY_COLUMN_NUMBER];
|
blocksstable::ObStorageDatum datums_[OB_INNER_MAX_ROWKEY_COLUMN_NUMBER];
|
||||||
blocksstable::ObDatumRowkey start_macro_block_end_key_;
|
blocksstable::ObDatumRowkey start_macro_block_end_key_;
|
||||||
ObArenaAllocator allocator_;
|
ObArenaAllocator allocator_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ObCopyMacroRangeInfo);
|
DISALLOW_COPY_AND_ASSIGN(ObCopyMacroRangeInfo);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -164,7 +164,6 @@ public:
|
|||||||
MVRC_VERSION_AFTER_3_0 = 2, // TransVersion | SqlSequence[A]:Use After Version3.0
|
MVRC_VERSION_AFTER_3_0 = 2, // TransVersion | SqlSequence[A]:Use After Version3.0
|
||||||
MVRC_VERSION_MAX = 3,
|
MVRC_VERSION_MAX = 3,
|
||||||
};
|
};
|
||||||
static const int64_t MAX_EXTRA_ROWKEY_CNT = 2;
|
|
||||||
static int64_t get_trans_version_col_store_index(
|
static int64_t get_trans_version_col_store_index(
|
||||||
const int64_t schema_rowkey_col_cnt,
|
const int64_t schema_rowkey_col_cnt,
|
||||||
const bool is_multi_version)
|
const bool is_multi_version)
|
||||||
|
|||||||
Reference in New Issue
Block a user