[CP] adjust merge into partition prune constraint

This commit is contained in:
chimyue
2023-07-13 14:42:17 +00:00
committed by ob-robot
parent 59a7f93a3f
commit a61043f93b
9 changed files with 150 additions and 96 deletions

View File

@ -10909,6 +10909,7 @@ int ObLogPlan::check_need_multi_partition_dml(const ObDMLStmt &stmt,
int ret = OB_SUCCESS;
is_multi_part_dml = false;
is_result_local = false;
ObShardingInfo *source_sharding = NULL;
if (OB_UNLIKELY(index_dml_infos.empty())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("index dml info is empty", K(ret));
@ -10927,7 +10928,8 @@ int ObLogPlan::check_need_multi_partition_dml(const ObDMLStmt &stmt,
} else if (OB_FAIL(check_location_need_multi_partition_dml(top,
index_dml_infos.at(0)->loc_table_id_,
is_multi_part_dml,
is_result_local))) {
is_result_local,
source_sharding))) {
LOG_WARN("failed to check whether location need multi-partition dml", K(ret));
} else { /*do nothing*/ }
return ret;
@ -11005,10 +11007,11 @@ int ObLogPlan::check_stmt_need_multi_partition_dml(const ObDMLStmt &stmt,
int ObLogPlan::check_location_need_multi_partition_dml(ObLogicalOperator &top,
uint64_t table_id,
bool &is_multi_part_dml,
bool &is_result_local)
bool &is_result_local,
ObShardingInfo *&source_sharding)
{
int ret = OB_SUCCESS;
ObShardingInfo *source_sharding = NULL;
source_sharding = NULL;
ObTablePartitionInfo *source_table_part = NULL;
ObTableLocationType source_loc_type = OB_TBL_LOCATION_UNINITIALIZED;
is_multi_part_dml = false;