summaryrefslogtreecommitdiff
path: root/sql/my_decimal.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/my_decimal.cc')
-rw-r--r--sql/my_decimal.cc23
1 files changed, 13 insertions, 10 deletions
diff --git a/sql/my_decimal.cc b/sql/my_decimal.cc
index d4f1ae19bc6..5ec3fe7ff28 100644
--- a/sql/my_decimal.cc
+++ b/sql/my_decimal.cc
@@ -41,26 +41,29 @@
int decimal_operation_results(int result, const char *value, const char *type)
{
+ /* Avoid calling current_thd on default path */
+ if (likely(result == E_DEC_OK))
+ return(result);
+
+ THD *thd= current_thd;
switch (result) {
- case E_DEC_OK:
- break;
case E_DEC_TRUNCATED:
- push_warning_printf(current_thd, Sql_condition::WARN_LEVEL_WARN,
- ER_DATA_TRUNCATED, ER(ER_DATA_TRUNCATED),
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_DATA_TRUNCATED, ER_THD(thd, ER_DATA_TRUNCATED),
value, type);
break;
case E_DEC_OVERFLOW:
- push_warning_printf(current_thd, Sql_condition::WARN_LEVEL_WARN,
- ER_DATA_OVERFLOW, ER(ER_DATA_OVERFLOW),
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_DATA_OVERFLOW, ER_THD(thd, ER_DATA_OVERFLOW),
value, type);
break;
case E_DEC_DIV_ZERO:
- push_warning_printf(current_thd, Sql_condition::WARN_LEVEL_WARN,
- ER_DIVISION_BY_ZERO, ER(ER_DIVISION_BY_ZERO));
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_DIVISION_BY_ZERO, ER_THD(thd, ER_DIVISION_BY_ZERO));
break;
case E_DEC_BAD_NUM:
- push_warning_printf(current_thd, Sql_condition::WARN_LEVEL_WARN,
- ER_BAD_DATA, ER(ER_BAD_DATA),
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_BAD_DATA, ER_THD(thd, ER_BAD_DATA),
value, type);
break;
case E_DEC_OOM: