diff options
author | Eugene Kosov <claprix@yandex.ru> | 2020-01-10 22:50:19 +0700 |
---|---|---|
committer | Eugene Kosov <claprix@yandex.ru> | 2020-01-10 22:50:19 +0700 |
commit | 56529a7d7f329b9c799a57343c6dec48966f530b (patch) | |
tree | edef1b25b6484d88ded6478a218b048d169bcc46 | |
parent | 41cde4fe2219ea20ad5364c3b648bdebf2927270 (diff) | |
download | mariadb-git-56529a7d7f329b9c799a57343c6dec48966f530b.tar.gz |
MDEV-21454 Show actual mismatching values in mismatch error messages from row_import::match_table_columns()bb-10.2-MDEV-21454
Patch by Hartmut Holzgraefe
-rw-r--r-- | mysql-test/suite/innodb/r/innodb-wl5522-1.result | 2 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb-wl5522.result | 2 | ||||
-rw-r--r-- | mysql-test/suite/innodb_zip/r/wl5522_zip.result | 2 | ||||
-rw-r--r-- | storage/innobase/row/row0import.cc | 70 |
4 files changed, 49 insertions, 27 deletions
diff --git a/mysql-test/suite/innodb/r/innodb-wl5522-1.result b/mysql-test/suite/innodb/r/innodb-wl5522-1.result index b2a5f49a9ad..55557a8fb99 100644 --- a/mysql-test/suite/innodb/r/innodb-wl5522-1.result +++ b/mysql-test/suite/innodb/r/innodb-wl5522-1.result @@ -389,7 +389,7 @@ CREATE TABLE testdb_wl5522.t1 ( i bigint) ENGINE = Innodb; ALTER TABLE testdb_wl5522.t1 DISCARD TABLESPACE; restore: t1 .ibd and .cfg files ALTER TABLE testdb_wl5522.t1 IMPORT TABLESPACE; -ERROR HY000: Schema mismatch (Column i precise type mismatch.) +ERROR HY000: Schema mismatch (Column i precise type mismatch, it's 0X408 in the table and 0X403 in the tablespace meta file) unlink: t1.ibd unlink: t1.cfg DROP TABLE testdb_wl5522.t1; diff --git a/mysql-test/suite/innodb/r/innodb-wl5522.result b/mysql-test/suite/innodb/r/innodb-wl5522.result index 62f03292baa..b364b36a36f 100644 --- a/mysql-test/suite/innodb/r/innodb-wl5522.result +++ b/mysql-test/suite/innodb/r/innodb-wl5522.result @@ -426,7 +426,7 @@ SELECT * FROM t1; ERROR HY000: Tablespace has been discarded for table `t1` restore: t1 .ibd and .cfg files ALTER TABLE t1 IMPORT TABLESPACE; -ERROR HY000: Schema mismatch (Column c2 precise type mismatch.) +ERROR HY000: Schema mismatch (Column c2 precise type mismatch, it's 0X408 in the table and 0X403 in the tablespace meta file) unlink: t1.ibd unlink: t1.cfg DROP TABLE t1; diff --git a/mysql-test/suite/innodb_zip/r/wl5522_zip.result b/mysql-test/suite/innodb_zip/r/wl5522_zip.result index f57e2191d9f..a8e06835d85 100644 --- a/mysql-test/suite/innodb_zip/r/wl5522_zip.result +++ b/mysql-test/suite/innodb_zip/r/wl5522_zip.result @@ -410,7 +410,7 @@ SELECT * FROM t1; ERROR HY000: Tablespace has been discarded for table `t1` restore: t1 .ibd and .cfg files ALTER TABLE t1 IMPORT TABLESPACE; -ERROR HY000: Schema mismatch (Column c2 precise type mismatch.) +ERROR HY000: Schema mismatch (Column c2 precise type mismatch, it's 0X408 in the table and 0X403 in the tablespace meta file) unlink: t1.ibd unlink: t1.cfg DROP TABLE t1; diff --git a/storage/innobase/row/row0import.cc b/storage/innobase/row/row0import.cc index 930a8303316..e8933ea5419 100644 --- a/storage/innobase/row/row0import.cc +++ b/storage/innobase/row/row0import.cc @@ -1154,60 +1154,82 @@ row_import::match_table_columns( if (cfg_col->prtype != col->prtype) { ib_errf(thd, - IB_LOG_LEVEL_ERROR, - ER_TABLE_SCHEMA_MISMATCH, - "Column %s precise type mismatch.", - col_name); + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s precise type mismatch," + " it's 0X%X in the table and 0X%X" + " in the tablespace meta file", + col_name, col->prtype, cfg_col->prtype); err = DB_ERROR; } if (cfg_col->mtype != col->mtype) { ib_errf(thd, - IB_LOG_LEVEL_ERROR, - ER_TABLE_SCHEMA_MISMATCH, - "Column %s main type mismatch.", - col_name); + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s main type mismatch," + " it's 0X%X in the table and 0X%X" + " in the tablespace meta file", + col_name, col->mtype, cfg_col->mtype); err = DB_ERROR; } if (cfg_col->len != col->len) { ib_errf(thd, - IB_LOG_LEVEL_ERROR, - ER_TABLE_SCHEMA_MISMATCH, - "Column %s length mismatch.", - col_name); + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s length mismatch," + " it's %u in the table and %u" + " in the tablespace meta file", + col_name, col->len, cfg_col->len); err = DB_ERROR; } if (cfg_col->mbminlen != col->mbminlen || cfg_col->mbmaxlen != col->mbmaxlen) { ib_errf(thd, - IB_LOG_LEVEL_ERROR, - ER_TABLE_SCHEMA_MISMATCH, - "Column %s multi-byte len mismatch.", - col_name); + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s multi-byte len mismatch," + " it's %u-%u in the table and %u-%u" + " in the tablespace meta file", + col_name, col->mbminlen, col->mbmaxlen, + cfg_col->mbminlen, cfg_col->mbmaxlen); err = DB_ERROR; } if (cfg_col->ind != col->ind) { + ib_errf(thd, + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s position mismatch," + " it's %u in the table and %u" + " in the tablespace meta file", + col_name, col->ind, cfg_col->ind); err = DB_ERROR; } if (cfg_col->ord_part != col->ord_part) { ib_errf(thd, - IB_LOG_LEVEL_ERROR, - ER_TABLE_SCHEMA_MISMATCH, - "Column %s ordering mismatch.", - col_name); + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s ordering mismatch," + " it's %u in the table and %u" + " in the tablespace meta file", + col_name, col->ord_part, + cfg_col->ord_part); err = DB_ERROR; } if (cfg_col->max_prefix != col->max_prefix) { ib_errf(thd, - IB_LOG_LEVEL_ERROR, - ER_TABLE_SCHEMA_MISMATCH, - "Column %s max prefix mismatch.", - col_name); + IB_LOG_LEVEL_ERROR, + ER_TABLE_SCHEMA_MISMATCH, + "Column %s max prefix mismatch" + " it's %u in the table and %u" + " in the tablespace meta file", + col_name, col->max_prefix, + cfg_col->max_prefix); err = DB_ERROR; } } |