summaryrefslogtreecommitdiff
path: root/sql/rpl_utility.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-12-16 13:02:21 +0100
committerSergei Golubchik <sergii@pisem.net>2013-12-16 13:02:21 +0100
commitd28d3ba40dc8ebef87199a2567ec96e9c5d744e2 (patch)
treec6b9ab1d8193fa2a26c5e376d43e536abd3a47ce /sql/rpl_utility.cc
parentff485d2dc4d5adaf5eef0ccd03ce62adf3bd30b3 (diff)
parent6bf10fac445d73fb796d4863612c87bff5f28b66 (diff)
downloadmariadb-git-d28d3ba40dc8ebef87199a2567ec96e9c5d744e2.tar.gz
10.0-base merge
Diffstat (limited to 'sql/rpl_utility.cc')
-rw-r--r--sql/rpl_utility.cc23
1 files changed, 15 insertions, 8 deletions
diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc
index 1f67dd6ee8f..e8bc042e565 100644
--- a/sql/rpl_utility.cc
+++ b/sql/rpl_utility.cc
@@ -1,6 +1,5 @@
-/*
- Copyright (c) 2006, 2010, Oracle and/or its affiliates.
- Copyright (c) 2011, 2013, Monty Program Ab.
+/* Copyright (c) 2006, 2013, Oracle and/or its affiliates.
+ Copyright (c) 2011, 2013, Monty Program Ab
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -946,6 +945,7 @@ TABLE *table_def::create_conversion_table(THD *thd, Relay_log_info *rli, TABLE *
DBUG_ENTER("table_def::create_conversion_table");
List<Create_field> field_list;
+ TABLE *conv_table= NULL;
/*
At slave, columns may differ. So we should create
MY_MIN(columns@master, columns@slave) columns in the
@@ -987,10 +987,15 @@ TABLE *table_def::create_conversion_table(THD *thd, Relay_log_info *rli, TABLE *
break;
case MYSQL_TYPE_DECIMAL:
- precision= field_metadata(col);
- decimals= static_cast<Field_num*>(target_table->field[col])->dec;
- max_length= field_metadata(col);
- break;
+ sql_print_error("In RBR mode, Slave received incompatible DECIMAL field "
+ "(old-style decimal field) from Master while creating "
+ "conversion table. Please consider changing datatype on "
+ "Master to new style decimal by executing ALTER command for"
+ " column Name: %s.%s.%s.",
+ target_table->s->db.str,
+ target_table->s->table_name.str,
+ target_table->field[col]->field_name);
+ goto err;
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
@@ -1018,7 +1023,9 @@ TABLE *table_def::create_conversion_table(THD *thd, Relay_log_info *rli, TABLE *
field_def->interval= interval;
}
- TABLE *conv_table= create_virtual_tmp_table(thd, field_list);
+ conv_table= create_virtual_tmp_table(thd, field_list);
+
+err:
if (conv_table == NULL)
rli->report(ERROR_LEVEL, ER_SLAVE_CANT_CREATE_CONVERSION,
ER(ER_SLAVE_CANT_CREATE_CONVERSION),