fix bug pdml update partition_key would change the new_row pk by insert before_row trigger
This commit is contained in:
		 yishenglanlingzui
					yishenglanlingzui
				
			
				
					committed by
					
						 ob-robot
						ob-robot
					
				
			
			
				
	
			
			
			 ob-robot
						ob-robot
					
				
			
						parent
						
							1da0980936
						
					
				
				
					commit
					7261fc9df1
				
			| @ -71,6 +71,8 @@ int ObDmlCgService::generate_insert_ctdef(ObLogDelUpd &op, | |||||||
|   LOG_TRACE("begin to generate insert ctdef", K(index_dml_info)); |   LOG_TRACE("begin to generate insert ctdef", K(index_dml_info)); | ||||||
|   ObArray<ObRawExpr*> old_row; |   ObArray<ObRawExpr*> old_row; | ||||||
|   ObArray<ObRawExpr*> new_row; |   ObArray<ObRawExpr*> new_row; | ||||||
|  |   uint64_t dml_event = op.is_pdml_update_split() ? | ||||||
|  |        ObTriggerEvents::get_update_event() : ObTriggerEvents::get_insert_event(); | ||||||
|   if (OB_ISNULL(op.get_stmt())) { |   if (OB_ISNULL(op.get_stmt())) { | ||||||
|     ret = OB_ERR_UNEXPECTED; |     ret = OB_ERR_UNEXPECTED; | ||||||
|     LOG_WARN("get unexpected null", K(ret)); |     LOG_WARN("get unexpected null", K(ret)); | ||||||
| @ -78,7 +80,7 @@ int ObDmlCgService::generate_insert_ctdef(ObLogDelUpd &op, | |||||||
|     LOG_WARN("convert insert new row exprs failed", K(ret)); |     LOG_WARN("convert insert new row exprs failed", K(ret)); | ||||||
|   } else if (OB_FAIL(generate_dml_base_ctdef(op, index_dml_info, |   } else if (OB_FAIL(generate_dml_base_ctdef(op, index_dml_info, | ||||||
|                                              ins_ctdef, |                                              ins_ctdef, | ||||||
|                                              ObTriggerEvents::get_insert_event(), |                                              dml_event, | ||||||
|                                              old_row, |                                              old_row, | ||||||
|                                              new_row))) { |                                              new_row))) { | ||||||
|     LOG_WARN("generate dml base ctdef failed", K(ret), K(index_dml_info)); |     LOG_WARN("generate dml base ctdef failed", K(ret), K(index_dml_info)); | ||||||
| @ -276,12 +278,14 @@ int ObDmlCgService::generate_delete_ctdef(ObLogDelUpd &op, | |||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   ObSEArray<ObRawExpr*, 64> old_row; |   ObSEArray<ObRawExpr*, 64> old_row; | ||||||
|   ObSEArray<ObRawExpr*, 64> new_row; |   ObSEArray<ObRawExpr*, 64> new_row; | ||||||
|  |   uint64_t dml_event = op.is_pdml_update_split() ? | ||||||
|  |       ObTriggerEvents::get_update_event() : ObTriggerEvents::get_delete_event(); | ||||||
|   if (OB_FAIL(old_row.assign(index_dml_info.column_old_values_exprs_))) { |   if (OB_FAIL(old_row.assign(index_dml_info.column_old_values_exprs_))) { | ||||||
|     LOG_WARN("fail to assign delete old row", K(ret)); |     LOG_WARN("fail to assign delete old row", K(ret)); | ||||||
|   } else if (OB_FAIL(generate_dml_base_ctdef(op, |   } else if (OB_FAIL(generate_dml_base_ctdef(op, | ||||||
|                                              index_dml_info, |                                              index_dml_info, | ||||||
|                                              del_ctdef, |                                              del_ctdef, | ||||||
|                                              ObTriggerEvents::get_delete_event(), |                                              dml_event, | ||||||
|                                              old_row, |                                              old_row, | ||||||
|                                              new_row))) { |                                              new_row))) { | ||||||
|     LOG_WARN("generate dml base ctdef failed", K(ret), K(index_dml_info)); |     LOG_WARN("generate dml base ctdef failed", K(ret), K(index_dml_info)); | ||||||
|  | |||||||
| @ -307,6 +307,7 @@ ObLogDelUpd::ObLogDelUpd(ObDelUpdLogPlan &plan) | |||||||
|     need_barrier_(false), |     need_barrier_(false), | ||||||
|     is_first_dml_op_(false), |     is_first_dml_op_(false), | ||||||
|     table_location_uncertain_(false), |     table_location_uncertain_(false), | ||||||
|  |     is_pdml_update_split_(false), | ||||||
|     pdml_partition_id_expr_(NULL), |     pdml_partition_id_expr_(NULL), | ||||||
|     pdml_is_returning_(false), |     pdml_is_returning_(false), | ||||||
|     err_log_define_(), |     err_log_define_(), | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user