fix mysqltest

This commit is contained in:
a1iive 2024-11-28 13:45:14 +00:00 committed by ob-robot
parent fd09979d38
commit 1a86ebe117
2 changed files with 34 additions and 0 deletions

View File

@ -388,6 +388,35 @@ int ObTempColumnStore::Iterator::init(ObTempColumnStore *store)
return BlockReader::init(store);
}
int ObTempColumnStore::Iterator::nested_from_vector(ObExpr &expr, ObEvalCtx &ctx, const int64_t start_pos, const int64_t size)
{
int ret = OB_SUCCESS;
ObIVector *root_vec = expr.get_vector(ctx);
if (root_vec->get_format() != VEC_CONTINUOUS) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected format", K(ret), K(root_vec->get_format()));
} else if (OB_FAIL(from_vector(static_cast<ObContinuousBase*>(root_vec), &expr, ctx, start_pos, size))) {
LOG_WARN("from vector failed", K(ret), K(root_vec->get_format()));
} else {
for (uint32_t i = 0; i < expr.attrs_cnt_ && OB_SUCC(ret); ++i) {
ObIVector *vec = expr.attrs_[i]->get_vector(ctx);
const VectorFormat format = vec->get_format();
switch (format) {
case VEC_FIXED:
ret = from_vector(static_cast<ObFixedLengthBase*>(vec), expr.attrs_[i], ctx, start_pos, size);
break;
case VEC_CONTINUOUS:
ret = from_vector(static_cast<ObContinuousBase*>(vec), expr.attrs_[i], ctx, start_pos, size);
break;
default:
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected format", K(ret), K(format));
}
}
}
return ret;
}
int ObTempColumnStore::Iterator::get_next_batch(const ObExprPtrIArray &exprs,
ObEvalCtx &ctx,
const int64_t max_rows,
@ -421,6 +450,10 @@ int ObTempColumnStore::Iterator::get_next_batch(const ObExprPtrIArray &exprs,
ObIVector *vec = NULL;
if (OB_ISNULL(e) || ((is_uniform_format((vec = e->get_vector(ctx))->get_format())))) {
// skip null input expr and uniform expr
} else if (e->is_nested_expr()) {
if (OB_FAIL(nested_from_vector(*e, ctx, begin, batch_rows))) {
LOG_WARN("failed to get nested expr", K(ret), K(begin), K(batch_rows));
}
} else {
const VectorFormat format = vec->get_format();
switch (format) {

View File

@ -143,6 +143,7 @@ public:
inline bool has_next() const { return cur_blk_id_ < get_row_cnt(); }
inline int64_t get_row_cnt() const { return column_store_->get_row_cnt(); }
inline int64_t get_col_cnt() const { return column_store_->get_col_cnt(); }
int nested_from_vector(ObExpr &expr, ObEvalCtx &ctx, const int64_t start_pos, const int64_t size);
int get_next_batch(const ObExprPtrIArray &exprs,
ObEvalCtx &ctx,
const int64_t max_rows,