fix get query range node for table location bug

This commit is contained in:
obdev
2024-02-09 02:39:45 +00:00
committed by ob-robot
parent a3cfebe92e
commit 68e54dd377

View File

@ -2432,11 +2432,7 @@ int ObTableLocation::get_location_calc_node(const ObPartitionLevel part_level,
if (OB_FAIL(analyze_filter(partition_columns, partition_expr, column_id, filter_exprs.at(idx),
always_true, calc_node, cnt_func_expr, dtc_params, exec_ctx))) {
LOG_WARN("Failed to analyze filter", K(ret));
} else {
if (!always_true && NULL != calc_node) {
func_always_true = false;
}
if (!cnt_func_expr) {
} else if (!cnt_func_expr) {
if (OB_FAIL(normal_filters.push_back(filter_exprs.at(idx)))) {
LOG_WARN("Failed to add filter", K(ret));
}
@ -2446,14 +2442,15 @@ int ObTableLocation::get_location_calc_node(const ObPartitionLevel part_level,
LOG_WARN("Failed to add and node", K(ret));
} else {
is_func_range_get = true;
}
func_always_true &= always_true || NULL == calc_node;
}
}
if (OB_SUCC(ret)) {
bool column_always_true = false;
bool column_always_true = true;
ObPartLocCalcNode *column_node = NULL;
if (normal_filters.count() > 0) {
column_always_true = false;
if (OB_FAIL(get_query_range_node(part_level, partition_columns, filter_exprs, column_always_true,
column_node, dtc_params, exec_ctx, is_in_range_optimization_enabled))) {
LOG_WARN("Failed to get query range node", K(ret));