Fix a ctas default value bug in mysql mode
This commit is contained in:
@ -5191,7 +5191,11 @@ int ObAlterTableResolver::resolve_drop_column(const ParseNode &node, ObReducedVi
|
||||
const ObString &column_name = alter_column_schema.get_origin_column_name();
|
||||
ObColumnSchemaHashWrapper col_key(column_name);
|
||||
if (OB_FAIL(reduced_visible_col_set.set_refactored(col_key))) {
|
||||
SQL_RESV_LOG(WARN, "set foreign key name to hash set failed", K(ret), K(column_name));
|
||||
if (OB_HASH_EXIST == ret) {
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_USER_ERROR(OB_NOT_SUPPORTED, "drop the same column twice");
|
||||
}
|
||||
SQL_RESV_LOG(WARN, "set col_key to hash set failed", K(ret), K(column_name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1868,6 +1868,25 @@ int ObCreateTableResolver::resolve_table_elements_from_select(const ParseNode &p
|
||||
column.set_data_precision(MIN(OB_MAX_DECIMAL_PRECISION, data_precision));
|
||||
|
||||
}
|
||||
if (OB_SUCC(ret) && is_mysql_mode() && expr->is_column_ref_expr()) {
|
||||
const ObColumnRefRawExpr *column_expr = static_cast<const ObColumnRefRawExpr*>(expr);
|
||||
const ObTableSchema *table_schema = NULL;
|
||||
const ObColumnSchemaV2 *column_schema = NULL;
|
||||
if (column_expr->get_database_name().empty()) {
|
||||
// do nothing if column_expr is not a real column
|
||||
} else if (OB_FAIL(schema_checker_->get_table_schema(
|
||||
session_info_->get_effective_tenant_id(), column_expr->get_database_name(),
|
||||
column_expr->get_table_name(), false /* not index table */, table_schema))) {
|
||||
LOG_WARN("fail to get table schema", K(ret), KPC(column_expr));
|
||||
} else if (OB_FAIL(schema_checker_->get_column_schema(
|
||||
session_info_->get_effective_tenant_id(), table_schema->get_table_id(),
|
||||
column_expr->get_column_name(), column_schema, false, false))) {
|
||||
LOG_WARN("get_column_schema failed", K(ret), KPC(column_expr));
|
||||
} else {
|
||||
column.set_orig_default_value(column_schema->get_orig_default_value());
|
||||
column.set_cur_default_value(column_schema->get_cur_default_value());
|
||||
}
|
||||
}
|
||||
OZ (adjust_string_column_length_within_max(column, lib::is_oracle_mode()));
|
||||
LOG_DEBUG("column expr debug", K(*expr));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user