diff --git a/src/storage/column_store/ob_cg_tile_scanner.cpp b/src/storage/column_store/ob_cg_tile_scanner.cpp index 1bfb03f054..5c850d238d 100644 --- a/src/storage/column_store/ob_cg_tile_scanner.cpp +++ b/src/storage/column_store/ob_cg_tile_scanner.cpp @@ -256,7 +256,7 @@ int ObCGTileScanner::get_next_rows(uint64_t &count, const uint64_t capacity) if (OB_ISNULL(cg_scanner = cg_scanners_.at(i))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("Unexpected null cg scanner", K(ret), K(i)); - } else if (OB_CG_ROW_SCANNER == cg_scanner->get_type()) { + } else if (is_valid_cg_row_scanner(cg_scanner->get_type())) { ret = get_next_aligned_rows(static_cast(cg_scanner), count); } else { ret = cg_scanner->get_next_rows(count, capacity); diff --git a/src/storage/column_store/ob_co_sstable_row_scanner.cpp b/src/storage/column_store/ob_co_sstable_row_scanner.cpp index 91fe945eaf..e8e0470d32 100644 --- a/src/storage/column_store/ob_co_sstable_row_scanner.cpp +++ b/src/storage/column_store/ob_co_sstable_row_scanner.cpp @@ -1138,7 +1138,7 @@ int ObCOSSTableRowScanner::push_group_by_processor(ObICGIterator *cg_iterator) if (OB_ISNULL(cg_iterator)) { ret = OB_INVALID_ARGUMENT; LOG_WARN("Invalid argument", K(ret)); - } else if (cg_iterator->get_type() != ObICGIterator::OB_CG_GROUP_BY_SCANNER) { + } else if (OB_UNLIKELY(!ObICGIterator::is_valid_group_by_cg_scanner(cg_iterator->get_type()))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("Unexpected cg scanner", K(ret), K(cg_iterator->get_type())); } else { diff --git a/src/storage/column_store/ob_i_cg_iterator.h b/src/storage/column_store/ob_i_cg_iterator.h index 093468ab54..7c39aeff81 100644 --- a/src/storage/column_store/ob_i_cg_iterator.h +++ b/src/storage/column_store/ob_i_cg_iterator.h @@ -36,6 +36,7 @@ public: OB_CG_SINGLE_ROW_SCANNER, OB_CG_AGGREGATED_SCANNER, OB_CG_GROUP_BY_SCANNER, + OB_CG_GROUP_BY_DEFAULT_SCANNER, OB_CG_VIRTUAL_SCANNER, OB_CG_DEFAULT_SCANNER, OB_CG_TILE_SCANNER, @@ -50,6 +51,14 @@ public: { return project_single_row ? (OB_CG_SINGLE_ROW_SCANNER || OB_CG_DEFAULT_SCANNER) : (OB_CG_ROW_SCANNER <= cg_iter_type && cg_iter_type < OB_CG_TILE_SCANNER); } + static bool is_valid_cg_row_scanner(const int cg_iter_type) + { + return OB_CG_ROW_SCANNER == cg_iter_type || OB_CG_GROUP_BY_SCANNER == cg_iter_type; + } + static bool is_valid_group_by_cg_scanner(const int cg_iter_type) + { + return OB_CG_GROUP_BY_SCANNER == cg_iter_type || OB_CG_GROUP_BY_DEFAULT_SCANNER == cg_iter_type; + } ObICGIterator() : cg_idx_(OB_CS_INVALID_CG_IDX) {}; virtual ~ObICGIterator() {}; virtual void reset() = 0; diff --git a/src/storage/column_store/ob_virtual_cg_scanner.h b/src/storage/column_store/ob_virtual_cg_scanner.h index 36a852d677..21ec2a75fe 100644 --- a/src/storage/column_store/ob_virtual_cg_scanner.h +++ b/src/storage/column_store/ob_virtual_cg_scanner.h @@ -136,7 +136,7 @@ public: ObSSTableWrapper &wrapper) override; virtual int init_group_by_info() override; virtual ObCGIterType get_type() override - { return OB_CG_GROUP_BY_SCANNER; } + { return OB_CG_GROUP_BY_DEFAULT_SCANNER; } virtual int decide_group_size(int64_t &group_size) override; virtual int decide_can_group_by( const int32_t group_by_col,