[CP] fix convert co with incomplete column group in storage schema

This commit is contained in:
Tsunaou
2024-11-05 03:15:36 +00:00
committed by ob-robot
parent c01f6650be
commit 9b00bf0452
2 changed files with 4 additions and 2 deletions

View File

@ -1431,8 +1431,9 @@ int ObBasicTabletMergeCtx::get_convert_compaction_info()
LOG_WARN("failed to alloc storage schema", K(ret));
} else if (schema_on_tablet->is_column_info_simplified() && OB_FAIL(param.init(*tablet))) {
LOG_WARN("failed to init param", K(ret), KPC(tablet));
} else if (FALSE_IT(generate_cs_replica_cg_array = (schema_on_tablet->is_row_store() || schema_on_tablet->is_column_info_simplified()))) {
// storage schema is column store but simplifed, it should become not simplified before it can be used for merge
} else if (FALSE_IT(generate_cs_replica_cg_array = (schema_on_tablet->is_row_store() || schema_on_tablet->is_column_info_simplified() || schema_on_tablet->need_generate_cg_array()))) {
// 1. storage schema is column store but simplifed, it should become not simplified before it can be used for merge
// 2. if need generate cg array (column group cnt <= column cnt), need generate cg array from the latest column array
} else if (OB_FAIL(schema_for_merge->init(mem_ctx_.get_allocator(), *schema_on_tablet,
false /*skip_column_info*/, nullptr /*column_group_schema*/, generate_cs_replica_cg_array,
schema_on_tablet->is_column_info_simplified() ? &param : nullptr))) {

View File

@ -244,6 +244,7 @@ public:
inline int64_t get_column_group_count() const { return column_group_array_.count(); }
inline int64_t has_all_column_group() const { return has_all_column_group_; }
inline bool is_row_store() const { return column_group_array_.count() <= 1; }
inline bool need_generate_cg_array() const { return column_group_array_.count() <= column_array_.count(); }
virtual inline int64_t get_pctfree() const override { return pctfree_; }
virtual inline int64_t get_progressive_merge_round() const override { return progressive_merge_round_; }
virtual inline int64_t get_progressive_merge_num() const override { return progressive_merge_num_; }