fix osg hashmap conflict bug

This commit is contained in:
Larry955
2023-07-25 17:18:27 +00:00
committed by ob-robot
parent a6851e8ce2
commit f5db9df748

View File

@ -145,15 +145,19 @@ int ObOptimizerStatsGatheringOp::inner_open()
} else { } else {
arena_.set_tenant_id(tenant_id_); arena_.set_tenant_id(tenant_id_);
piece_msg_.set_tenant_id(tenant_id_); piece_msg_.set_tenant_id(tenant_id_);
if (OB_FAIL(table_stats_map_.create(DEFAULT_HASH_MAP_BUCKETS_COUNT, // map size = max(part num + subpart num, 100)
int64_t map_size = tab_schema->get_all_part_num() + (MY_SPEC.is_two_level_part() ?
tab_schema->get_partition_num() : 0);
map_size = map_size < DEFAULT_HASH_MAP_BUCKETS_COUNT ? DEFAULT_HASH_MAP_BUCKETS_COUNT : map_size;
if (OB_FAIL(table_stats_map_.create(map_size,
"TabStatBucket", "TabStatBucket",
"TabStatNode"))) { "TabStatNode"))) {
LOG_WARN("fail to create table stats map", K(ret)); LOG_WARN("fail to create table stats map", K(ret));
} else if (OB_FAIL(osg_col_stats_map_.create(DEFAULT_HASH_MAP_BUCKETS_COUNT, } else if (OB_FAIL(osg_col_stats_map_.create(map_size,
"ColStatBucket", "ColStatBucket",
"ColStatNode"))) { "ColStatNode"))) {
LOG_WARN("fail to create column stats map", K(ret)); LOG_WARN("fail to create column stats map", K(ret));
} else if (OB_FAIL(part_map_.create(DEFAULT_HASH_MAP_BUCKETS_COUNT, } else if (OB_FAIL(part_map_.create(map_size,
"PartMapBucket", "PartMapBucket",
"PartMapNode"))) { "PartMapNode"))) {
LOG_WARN("fail to create part map", K(ret)); LOG_WARN("fail to create part map", K(ret));
@ -161,6 +165,8 @@ int ObOptimizerStatsGatheringOp::inner_open()
OB_FAIL(pl::ObDbmsStats::get_table_partition_map(*tab_schema, part_map_))) { OB_FAIL(pl::ObDbmsStats::get_table_partition_map(*tab_schema, part_map_))) {
LOG_WARN("fail to init part map", K(ret)); LOG_WARN("fail to init part map", K(ret));
} }
LOG_TRACE("succeed to open optmizer_stats_gathering op",
K(ret), K(map_size), K(MY_SPEC.column_ids_.count()), K(MY_SPEC.table_id_));
} }
return ret; return ret;
} }