[CP] fix set wrong column flag for value desc
This commit is contained in:
parent
8e71e218e6
commit
bb56b615fd
@ -954,6 +954,7 @@ int ObInsertResolver::mock_values_column_ref(const ObColumnRefRawExpr *column_re
|
||||
int ret = OB_SUCCESS;
|
||||
ObInsertStmt *stmt = get_insert_stmt();
|
||||
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_)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
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;
|
||||
LOG_WARN(("value desc is null"));
|
||||
} 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_flag(column_ref->get_result_flag());
|
||||
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_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());
|
||||
|
@ -2631,6 +2631,8 @@ public:
|
||||
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_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 const ObRawExpr *get_dependant_expr() const { return dependant_expr_; }
|
||||
inline ObRawExpr *&get_dependant_expr() { return dependant_expr_; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user