1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

BUG#22086 : Extra Slave Col: Char(5) on slave and Char(10) on master cause mysqld crash

This patch adds functionality to row-based replication to ensure the
slave's column sizes are >= to that of the master.

It also includes some refactoring for the code from WL#3228.
This commit is contained in:
cbell/Chuck@mysql_cab_desk.
2007-08-10 12:48:01 -04:00
parent ac1767df09
commit e8ea4b84c0
13 changed files with 1697 additions and 269 deletions

View File

@ -156,6 +156,25 @@ table_def::compatible_with(RELAY_LOG_INFO const *rli_arg, TABLE *table)
rli->report(ERROR_LEVEL, ER_BINLOG_ROW_WRONG_TABLE_DEF,
ER(ER_BINLOG_ROW_WRONG_TABLE_DEF), buf);
}
/*
Check the slave's field size against that of the master.
*/
if (!error &&
!table->field[col]->compatible_field_size(field_metadata(col)))
{
error= 1;
char buf[256];
my_snprintf(buf, sizeof(buf), "Column %d size mismatch - "
"master has size %d, %s.%s on slave has size %d."
" Master's column size should be <= the slave's "
"column size.", col,
table->field[col]->pack_length_from_metadata(
m_field_metadata[col]),
tsh->db.str, tsh->table_name.str,
table->field[col]->row_pack_length());
rli->report(ERROR_LEVEL, ER_BINLOG_ROW_WRONG_TABLE_DEF,
ER(ER_BINLOG_ROW_WRONG_TABLE_DEF), buf);
}
}
return error;