BUG#16207679: MISSING ERROR WHEN RESIGNAL TO MYSQL_ERROR=5

Analysis:
--------

As part of the fix for Bug#11757464, the 'out of memory' error
condition was not pushed to the diagnostic area as it requires
memory allocation. However in cases of SIGNAL/RESIGNAL 'out of
memory' error, the server may not be out of memory. Hence it
would be good to report the error in such cases.

Fix:
---

Push only non fatal 'out of memory' errors to the diagnostic area.
Since SIGNAL/RESIGNAL of 'out of memory' error may not be fatal,
the error is reported.
This commit is contained in:
Nisha Gopalakrishnan 2013-02-01 09:49:27 +05:30
parent 4743ba00bb
commit 8fd9e920eb

View file

@ -1137,10 +1137,12 @@ MYSQL_ERROR* THD::raise_condition(uint sql_errno,
query_cache_abort(&query_cache_tls); query_cache_abort(&query_cache_tls);
/* /*
Avoid pushing a condition for out of memory errors as this will require Avoid pushing a condition for fatal out of memory errors as this will
memory allocation and therefore might fail. require memory allocation and therefore might fail. Non fatal out of
memory errors can occur if raised by SIGNAL/RESIGNAL statement.
*/ */
if (sql_errno != EE_OUTOFMEMORY && sql_errno != ER_OUTOFMEMORY) if (!(is_fatal_error && (sql_errno == EE_OUTOFMEMORY ||
sql_errno == ER_OUTOFMEMORY)))
{ {
cond= warning_info->push_warning(this, sql_errno, sqlstate, level, msg); cond= warning_info->push_warning(this, sql_errno, sqlstate, level, msg);
} }