fix some master opt stats bug

This commit is contained in:
wangt1xiuyi
2023-11-06 03:39:51 +00:00
committed by ob-robot
parent 7846915626
commit 6bcea4de73
6 changed files with 25 additions and 7 deletions

View File

@ -230,6 +230,7 @@ int ObDbmsStatsUtils::check_is_sys_table(share::schema::ObSchemaGetterGuard &sch
if (!is_sys_table(table_id) ||
ObSysTableChecker::is_sys_table_index_tid(table_id) ||
is_sys_lob_table(table_id) ||
table_id == share::OB_ALL_CORE_TABLE_TID ||//circular dependency,
table_id == share::OB_ALL_TABLE_STAT_TID ||
table_id == share::OB_ALL_COLUMN_STAT_TID ||
table_id == share::OB_ALL_HISTOGRAM_STAT_TID ||

View File

@ -54,8 +54,7 @@ bool ObColumnStatParam::is_valid_opt_col_type(const ObObjType type)
type_class == ColumnTypeClass::ObEnumSetTC ||
type_class == ColumnTypeClass::ObIntervalTC ||
type_class == ColumnTypeClass::ObDecimalIntTC ||
(lib::is_mysql_mode() && (type == ObTinyTextType ||
type == ObTextType))) {
(lib::is_mysql_mode() && type_class == ColumnTypeClass::ObTextTC)) {
ret = true;
}
return ret;

View File

@ -113,7 +113,8 @@ enum ColumnGatherFlag
NO_NEED_STAT = 0,
VALID_OPT_COL = 1,
NEED_BASIC_STAT = 1 << 1,
NEED_AVG_LEN = 1 << 2
NEED_AVG_LEN = 1 << 2,
NO_NEED_HISTOGRAM = 1 << 3
};
enum ObGranularityType
@ -374,9 +375,11 @@ struct ObColumnStatParam {
inline void set_valid_opt_col() { gather_flag_ |= ColumnGatherFlag::VALID_OPT_COL; }
inline void set_need_basic_stat() { gather_flag_ |= ColumnGatherFlag::NEED_BASIC_STAT; }
inline void set_need_avg_len() { gather_flag_ |= ColumnGatherFlag::NEED_AVG_LEN; }
inline void set_no_need_histogram() { gather_flag_ |= ColumnGatherFlag::NO_NEED_HISTOGRAM; }
inline bool is_valid_opt_col() const { return gather_flag_ & ColumnGatherFlag::VALID_OPT_COL; }
inline bool need_basic_stat() const { return gather_flag_ & ColumnGatherFlag::NEED_BASIC_STAT; }
inline bool need_avg_len() const { return gather_flag_ & ColumnGatherFlag::NEED_AVG_LEN; }
inline bool is_no_need_histogram() const { return gather_flag_ & ColumnGatherFlag::NO_NEED_HISTOGRAM; }
ObString column_name_;
uint64_t column_id_;

View File

@ -207,10 +207,10 @@ int ObStatLlcBitmap::decode(ObObj &obj)
ObString llc_bitmap_buf;
if (OB_ISNULL(col_stat_) ||
OB_ISNULL(col_stat_->get_llc_bitmap()) ||
OB_UNLIKELY(!obj.is_varchar())) {
OB_UNLIKELY(!obj.is_varchar() && !obj.is_varbinary())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("get unexpected null", K(ret), K(col_stat_), K(obj));
} else if (OB_FAIL(obj.get_varchar(llc_bitmap_buf))) {
} else if (OB_FAIL(obj.get_string(llc_bitmap_buf))) {
LOG_WARN("failed to get varchar", K(ret));
} else if (OB_UNLIKELY(llc_bitmap_buf.length() > col_stat_->get_llc_bitmap_size())) {
ret = OB_ERR_UNEXPECTED;
@ -227,6 +227,7 @@ bool ObStatTopKHist::is_needed() const
{
return NULL != col_param_ &&
col_param_->need_basic_stat() &&
!col_param_->is_no_need_histogram() &&
col_param_->bucket_num_ > 1;
}