forbid direct load for non-empty cotable&& fix 4103
This commit is contained in:
@ -525,7 +525,7 @@ TEST_F(TestCOMerge, test_merge_default_row_store_with_empty_major)
|
||||
|
||||
int schema_rowkey_cnt = 2;
|
||||
|
||||
int64_t snapshot_version = 10;
|
||||
int64_t snapshot_version = 7;
|
||||
ObScnRange scn_range;
|
||||
scn_range.start_scn_.set_min();
|
||||
scn_range.end_scn_.convert_for_tx(10);
|
||||
@ -740,7 +740,7 @@ TEST_F(TestCOMerge, test_column_store_merge_with_empty_co_table)
|
||||
|
||||
int schema_rowkey_cnt = 2;
|
||||
|
||||
int64_t snapshot_version = 10;
|
||||
int64_t snapshot_version = 7;
|
||||
ObScnRange scn_range;
|
||||
scn_range.start_scn_.set_min();
|
||||
scn_range.end_scn_.convert_for_tx(10);
|
||||
@ -835,10 +835,10 @@ TEST_F(TestCOMerge, test_co_merge_with_twice_major)
|
||||
|
||||
int schema_rowkey_cnt = 2;
|
||||
|
||||
int64_t snapshot_version = 10;
|
||||
int64_t snapshot_version = 7;
|
||||
ObScnRange scn_range;
|
||||
scn_range.start_scn_.set_min();
|
||||
scn_range.end_scn_.convert_for_tx(10);
|
||||
scn_range.end_scn_.convert_for_tx(7);
|
||||
//prepare table schema
|
||||
prepare_table_schema(micro_data, schema_rowkey_cnt, scn_range, snapshot_version);
|
||||
ObArray<ObColDesc> col_ids;
|
||||
@ -862,7 +862,7 @@ TEST_F(TestCOMerge, test_co_merge_with_twice_major)
|
||||
STORAGE_LOG(INFO, "finish prepare sstable1");
|
||||
|
||||
ObVersionRange trans_version_range;
|
||||
trans_version_range.snapshot_version_ = 100;
|
||||
trans_version_range.snapshot_version_ = 9;
|
||||
trans_version_range.multi_version_start_ = 7;
|
||||
trans_version_range.base_version_ = 7;
|
||||
|
||||
|
||||
@ -210,7 +210,7 @@ int ObPartitionMergeIter::init_query_base_params(const ObMergeParameter &merge_p
|
||||
false); /*query_stat*/
|
||||
query_flag.multi_version_minor_merge_ = is_multi_version_merge(static_param.get_merge_type());
|
||||
if (OB_FAIL(access_context_.init(query_flag, store_ctx_, allocator_, allocator_,
|
||||
static_param.version_range_))) {
|
||||
merge_param.merge_version_range_))) {
|
||||
LOG_WARN("Failed to init table access context", K(ret), K(query_flag));
|
||||
} else {
|
||||
access_context_.trans_state_mgr_ = merge_param.trans_state_mgr_;
|
||||
|
||||
@ -149,7 +149,7 @@ int ObPartitionMergePolicy::get_medium_merge_tables(
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get unexpected null base table", K(ret), K(tablet));
|
||||
} else {
|
||||
result.version_range_.base_version_ = base_table->get_upper_trans_version();
|
||||
result.version_range_.base_version_ = 0;
|
||||
result.version_range_.multi_version_start_ = tablet.get_multi_version_start();
|
||||
result.version_range_.snapshot_version_ = param.merge_version_;
|
||||
if (OB_FAIL(get_multi_version_start(param.merge_type_, ls, tablet, result.version_range_, result.snapshot_info_))) {
|
||||
|
||||
@ -177,7 +177,7 @@ int ObMergeParameter::init(
|
||||
if (is_major_merge_type(merge_type)) {
|
||||
// major merge should only read data between two major freeze points
|
||||
// but there will be some minor sstables which across major freeze points
|
||||
merge_version_range_.base_version_ = MAX(merge_ctx.get_read_base_version(), static_param_.version_range_.base_version_);
|
||||
merge_version_range_.base_version_ = merge_ctx.get_read_base_version();
|
||||
} else if (is_meta_major_merge(merge_type)) {
|
||||
// meta major merge does not keep multi-version
|
||||
merge_version_range_.multi_version_start_ = static_param_.version_range_.snapshot_version_;
|
||||
|
||||
@ -213,9 +213,13 @@ int ObDirectLoadOriginTableScanner::init(ObDirectLoadOriginTable *origin_table,
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("Invalid argument", KR(ret), KPC(origin_table), K(query_range));
|
||||
} else {
|
||||
blocksstable::ObSSTable *major_sstable = origin_table->get_major_sstable();
|
||||
origin_table_ = origin_table;
|
||||
allocator_.set_tenant_id(MTL_ID());
|
||||
if (OB_FAIL((init_table_access_param()))) {
|
||||
if (major_sstable != nullptr && major_sstable->is_co_sstable() && !major_sstable->is_empty()) {
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_WARN("not supported scan co sstable", K(ret), KPC(major_sstable));
|
||||
} else if (OB_FAIL((init_table_access_param()))) {
|
||||
LOG_WARN("fail to init query range", KR(ret));
|
||||
} else if (OB_FAIL(init_table_access_ctx())) {
|
||||
LOG_WARN("fail to init table access param", KR(ret));
|
||||
|
||||
Reference in New Issue
Block a user