摘要:
mysql列存储引擎-Q16-DEBUG模式下获取数据为空, 待定位
Q16上下文 2022-08-09 mysql/stonedb-慢SQL-Q16分析_帝尊悟世的博客
问题代码:
int64_t VirtualColumnBase::GetMaxInt64(const core::MIIterator &mit) {
int64_t res = GetMaxInt64Impl(mit);
DEBUG_ASSERT(res != common::NULL_VALUE_64);
if (Type().IsFloat()) {
if (*(double *)&res > *(double *)&vc_max_val && vc_max_val != common::PLUS_INF_64 &&
vc_max_val != common::NULL_VALUE_64)
return vc_max_val;
} else if ((vc_max_val != common::NULL_VALUE_64 && res > vc_max_val))
return vc_max_val;
return res;
}
int64_t VirtualColumnBase::GetMinInt64(const core::MIIterator &mit) {
int64_t res = GetMinInt64Impl(mit);
DEBUG_ASSERT(res != common::NULL_VALUE_64);
if (Type().IsFloat()) {
if (*(double *)&res < *(double *)&vc_min_val && vc_min_val != common::MINUS_INF_64 &&
vc_min_val != common::NULL_VALUE_64)
return vc_min_val;
} else if ((vc_min_val != common::NULL_VALUE_64 && res < vc_min_val))
return vc_min_val;
return res;
}
获取数据为空行: