Fix tile scanner with groupby pushdown
This commit is contained in:
@ -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<ObCGRowScanner*>(cg_scanner), count);
|
||||
} else {
|
||||
ret = cg_scanner->get_next_rows(count, capacity);
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user