[CP] fix set wrong column flag for value desc
This commit is contained in:
		| @ -954,6 +954,7 @@ int ObInsertResolver::mock_values_column_ref(const ObColumnRefRawExpr *column_re | |||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   ObInsertStmt *stmt = get_insert_stmt(); |   ObInsertStmt *stmt = get_insert_stmt(); | ||||||
|   ObColumnRefRawExpr *value_desc = NULL; |   ObColumnRefRawExpr *value_desc = NULL; | ||||||
|  |   ObColumnRefRawExpr *base_column_ref = const_cast<ObColumnRefRawExpr*>(column_ref); | ||||||
|   if (OB_ISNULL(column_ref) || OB_ISNULL(stmt) || OB_ISNULL(params_.expr_factory_)) { |   if (OB_ISNULL(column_ref) || OB_ISNULL(stmt) || OB_ISNULL(params_.expr_factory_)) { | ||||||
|     ret = OB_INVALID_ARGUMENT; |     ret = OB_INVALID_ARGUMENT; | ||||||
|     LOG_WARN("invalid argument", K(column_ref), K(stmt), KP_(params_.expr_factory)); |     LOG_WARN("invalid argument", K(column_ref), K(stmt), KP_(params_.expr_factory)); | ||||||
| @ -976,9 +977,23 @@ int ObInsertResolver::mock_values_column_ref(const ObColumnRefRawExpr *column_re | |||||||
|       ret = OB_ERR_UNEXPECTED; |       ret = OB_ERR_UNEXPECTED; | ||||||
|       LOG_WARN(("value desc is null")); |       LOG_WARN(("value desc is null")); | ||||||
|     } else { |     } else { | ||||||
|  |       if (OB_FAIL(ObTransformUtils::get_base_column(stmt, base_column_ref))) { | ||||||
|  |         // may be invalid updatable view, will be handled later. | ||||||
|  |         ret = OB_SUCCESS; | ||||||
|  |         base_column_ref = const_cast<ObColumnRefRawExpr*>(column_ref); | ||||||
|  |         LOG_WARN("failed to get base column", K(ret)); | ||||||
|  |       } | ||||||
|       value_desc->set_result_type(column_ref->get_result_type()); |       value_desc->set_result_type(column_ref->get_result_type()); | ||||||
|       value_desc->set_result_flag(column_ref->get_result_flag()); |       value_desc->set_result_flag(column_ref->get_result_flag()); | ||||||
|       value_desc->set_column_flags(column_ref->get_column_flags()); |       value_desc->set_column_flags(column_ref->get_column_flags()); | ||||||
|  |       if (base_column_ref != column_ref) { | ||||||
|  |         if (base_column_ref->is_table_part_key_column()) { | ||||||
|  |           value_desc->set_table_part_key_column(); | ||||||
|  |         } | ||||||
|  |         if (base_column_ref->is_table_part_key_org_column()) { | ||||||
|  |           value_desc->set_table_part_key_org_column(); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|       value_desc->set_dependant_expr(const_cast<ObRawExpr *>(column_ref->get_dependant_expr())); |       value_desc->set_dependant_expr(const_cast<ObRawExpr *>(column_ref->get_dependant_expr())); | ||||||
|       value_desc->set_ref_id(stmt->get_insert_table_info().table_id_, column_ref->get_column_id()); |       value_desc->set_ref_id(stmt->get_insert_table_info().table_id_, column_ref->get_column_id()); | ||||||
|       value_desc->set_column_attr(ObString::make_string(OB_VALUES), column_ref->get_column_name()); |       value_desc->set_column_attr(ObString::make_string(OB_VALUES), column_ref->get_column_name()); | ||||||
|  | |||||||
| @ -2631,6 +2631,8 @@ public: | |||||||
|   inline bool has_table_alias_name() const { return column_flags_ & TABLE_ALIAS_NAME_FLAG; } |   inline bool has_table_alias_name() const { return column_flags_ & TABLE_ALIAS_NAME_FLAG; } | ||||||
|   void set_column_flags(uint64_t column_flags) { column_flags_ = column_flags; } |   void set_column_flags(uint64_t column_flags) { column_flags_ = column_flags; } | ||||||
|   void set_table_alias_name() { column_flags_ |= TABLE_ALIAS_NAME_FLAG; } |   void set_table_alias_name() { column_flags_ |= TABLE_ALIAS_NAME_FLAG; } | ||||||
|  |   void set_table_part_key_column() { column_flags_ |= TABLE_PART_KEY_COLUMN_FLAG; } | ||||||
|  |   void set_table_part_key_org_column() { column_flags_ |= TABLE_PART_KEY_COLUMN_ORG_FLAG; } | ||||||
|   inline uint64_t get_column_flags() const { return column_flags_; } |   inline uint64_t get_column_flags() const { return column_flags_; } | ||||||
|   inline const ObRawExpr *get_dependant_expr() const { return dependant_expr_; } |   inline const ObRawExpr *get_dependant_expr() const { return dependant_expr_; } | ||||||
|   inline ObRawExpr *&get_dependant_expr() { return dependant_expr_; } |   inline ObRawExpr *&get_dependant_expr() { return dependant_expr_; } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev