diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-12-18 09:15:41 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-12-18 09:15:41 +0200 |
commit | 45531949ae115f2ba7b9450cc2386653483211ba (patch) | |
tree | 22809f3919c711d5030d2d0e55be969a7bc67e84 /sql/field.cc | |
parent | 36b7f8f4b0e46e06cfcc29c221430a5b998e3b3f (diff) | |
parent | ed13a0d221256028299df4167280e97860ba2edc (diff) | |
download | mariadb-git-45531949ae115f2ba7b9450cc2386653483211ba.tar.gz |
Merge 10.2 into 10.3
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/sql/field.cc b/sql/field.cc index 5a8192f6e62..fbaf3c6ea91 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2082,7 +2082,7 @@ bool Field_int::get_date(MYSQL_TIME *ltime,ulonglong fuzzydate) longlong nr= val_int(); bool neg= !(flags & UNSIGNED_FLAG) && nr < 0; return int_to_datetime_with_warn(neg, neg ? -nr : nr, ltime, fuzzydate, - field_name.str); + table->s, field_name.str); } @@ -3421,7 +3421,8 @@ bool Field_new_decimal::get_date(MYSQL_TIME *ltime, ulonglong fuzzydate) { my_decimal value; return decimal_to_datetime_with_warn(val_decimal(&value), - ltime, fuzzydate, field_name.str); + ltime, fuzzydate, table->s, + field_name.str); } @@ -4875,7 +4876,8 @@ bool Field_real::get_date(MYSQL_TIME *ltime,ulonglong fuzzydate) { ASSERT_COLUMN_MARKED_FOR_READ; double nr= val_real(); - return double_to_datetime_with_warn(nr, ltime, fuzzydate, field_name.str); + return double_to_datetime_with_warn(nr, ltime, fuzzydate, + table->s, field_name.str); } @@ -6394,7 +6396,7 @@ bool Field_year::get_date(MYSQL_TIME *ltime,ulonglong fuzzydate) if (tmp || field_length != 4) tmp+= 1900; return int_to_datetime_with_warn(false, tmp * 10000, - ltime, fuzzydate, field_name.str); + ltime, fuzzydate, table->s, field_name.str); } @@ -8942,10 +8944,18 @@ int Field_geom::store(const char *from, size_t length, CHARSET_INFO *cs) geom_type != Field::GEOM_GEOMETRYCOLLECTION && (uint32) geom_type != wkb_type) { + const char *db= table->s->db.str; + const char *tab_name= table->s->error_table_name(); + + if (!db) + db= ""; + if (!tab_name) + tab_name= ""; + my_error(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, MYF(0), Geometry::ci_collection[geom_type]->m_name.str, Geometry::ci_collection[wkb_type]->m_name.str, - field_name.str, + db, tab_name, field_name.str, (ulong) table->in_use->get_stmt_da()-> current_row_for_warning()); goto err_exit; @@ -11228,7 +11238,8 @@ void Field::set_datetime_warning(Sql_condition::enum_warning_level level, { THD *thd= get_thd(); if (thd->really_abort_on_warning() && level >= Sql_condition::WARN_LEVEL_WARN) - make_truncated_value_warning(thd, level, str, ts_type, field_name.str); + make_truncated_value_warning(thd, level, str, ts_type, + table->s, field_name.str); else set_warning(level, code, cuted_increment); } @@ -11238,10 +11249,18 @@ void Field::set_warning_truncated_wrong_value(const char *type_arg, const char *value) { THD *thd= get_thd(); + const char *db_name= table->s->db.str; + const char *table_name= table->s->error_table_name(); + + if (!db_name) + db_name= ""; + if (!table_name) + table_name= ""; + push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN, ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, ER_THD(thd, ER_TRUNCATED_WRONG_VALUE_FOR_FIELD), - type_arg, value, field_name.str, + type_arg, value, db_name, table_name, field_name.str, static_cast<ulong>(thd->get_stmt_da()-> current_row_for_warning())); } |