mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-34033 Exchange partition with virtual columns fails
MDEV-28127 did is_equal() which compared vcol expressions literally. But another table vcol expression is not equal because of different table name. We implement another comparison method is_identical() which respects different table name in vcol comparison. If any field item points to table_A and compared field item points to table_B, such items are treated as equal in (table_A, table_B) comparison. This is done by cloning table_B expression and renaming any table_B entries to table_A in it.
This commit is contained in:
@ -7874,8 +7874,12 @@ bool mysql_compare_tables(TABLE *table, Alter_info *alter_info,
|
||||
{
|
||||
if (!tmp_new_field->field->vcol_info)
|
||||
DBUG_RETURN(false);
|
||||
if (!field->vcol_info->is_equal(tmp_new_field->field->vcol_info))
|
||||
bool err;
|
||||
if (!field->vcol_info->is_equivalent(thd, table->s, create_info->table->s,
|
||||
tmp_new_field->field->vcol_info, err))
|
||||
DBUG_RETURN(false);
|
||||
if (err)
|
||||
DBUG_RETURN(true);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user