remove get_method array from query range extraction

This commit is contained in:
obdev
2023-04-23 08:05:50 +00:00
committed by ob-robot
parent 2485b4b1be
commit dce925b7f0
12 changed files with 401 additions and 858 deletions

View File

@ -2316,33 +2316,14 @@ int ObSQLUtils::extract_pre_query_range(const ObQueryRange &pre_query_range,
ObIAllocator &allocator,
ObExecContext &exec_ctx,
ObQueryRangeArray &key_ranges,
ObGetMethodArray get_method,
const ObDataTypeCastParams &dtc_params)
{
int ret = OB_SUCCESS;
if (OB_LIKELY(!pre_query_range.need_deep_copy())) {
//对于大多数查询来说,query条件是非常规范和工整的,这种条件我们不需要拷贝进行graph的变化,可以直接提取
if (OB_FAIL(pre_query_range.get_tablet_ranges(allocator,
exec_ctx,
key_ranges,
get_method,
dtc_params))) {
LOG_WARN("fail to get tablet ranges", K(ret));
}
} else {
ObQueryRange final_query_range(allocator);
if (OB_FAIL(final_query_range.deep_copy(pre_query_range, true))) {
// MUST deep copy to make it thread safe
LOG_WARN("fail to create final query range", K(ret), K(pre_query_range));
} else if (OB_FAIL(final_query_range.final_extract_query_range(exec_ctx, dtc_params))) {
LOG_WARN("fail to final extract query range", K(ret), K(final_query_range));
} else if (OB_FAIL(final_query_range.get_tablet_ranges(key_ranges,
get_method,
dtc_params))) {
LOG_WARN("fail to get tablet ranges from query range", K(ret), K(final_query_range));
} else {
// do nothing
}
bool dummy_all_single_value_ranges = false;
if (OB_FAIL(pre_query_range.get_tablet_ranges(allocator, exec_ctx, key_ranges,
dummy_all_single_value_ranges,
dtc_params))) {
LOG_WARN("failed to get tablet ranges", K(ret));
}
return ret;
}
@ -2352,17 +2333,17 @@ int ObSQLUtils::extract_geo_query_range(const ObQueryRange &pre_query_range,
ObExecContext &exec_ctx,
ObQueryRangeArray &key_ranges,
ObMbrFilterArray &mbr_filters,
ObGetMethodArray get_method,
const ObDataTypeCastParams &dtc_params)
{
int ret = OB_SUCCESS;
bool dummy_all_single_value_ranges = false;
if (OB_LIKELY(!pre_query_range.need_deep_copy())) {
//对于大多数查询来说,query条件是非常规范和工整的,这种条件我们不需要拷贝进行graph的变化,可以直接提取
if (OB_FAIL(pre_query_range.get_tablet_ranges(allocator,
exec_ctx,
key_ranges,
get_method,
dtc_params))) {
if (OB_FAIL(pre_query_range.direct_get_tablet_ranges(allocator,
exec_ctx,
key_ranges,
dummy_all_single_value_ranges,
dtc_params))) {
LOG_WARN("fail to get tablet ranges", K(ret));
} else {
const MbrFilterArray &pre_filters = pre_query_range.get_mbr_filter();
@ -2380,7 +2361,7 @@ int ObSQLUtils::extract_geo_query_range(const ObQueryRange &pre_query_range,
} else if (OB_FAIL(final_query_range.final_extract_query_range(exec_ctx, dtc_params))) {
LOG_WARN("fail to final extract query range", K(ret), K(final_query_range));
} else if (OB_FAIL(final_query_range.get_tablet_ranges(key_ranges,
get_method,
dummy_all_single_value_ranges,
dtc_params))) {
LOG_WARN("fail to get tablet ranges from query range", K(ret), K(final_query_range));
} else {