diff --git a/extra/perror.c b/extra/perror.c index 531d30dae86..b26e516a101 100644 --- a/extra/perror.c +++ b/extra/perror.c @@ -261,7 +261,7 @@ int main(int argc,char *argv[]) found= 1; msg= 0; } - else + else #endif msg = strerror(code); @@ -281,20 +281,23 @@ int main(int argc,char *argv[]) else puts(msg); } - if (!(msg=get_ha_error_msg(code))) + + if (!found) { - if (!found) - { + /* Error message still not found, look in handler error codes */ + if (!(msg=get_ha_error_msg(code))) + { fprintf(stderr,"Illegal error code: %d\n",code); error=1; - } - } - else - { - if (verbose) - printf("MySQL error code %3d: %s\n",code,msg); - else - puts(msg); + } + else + { + found= 1; + if (verbose) + printf("MySQL error code %3d: %s\n",code,msg); + else + puts(msg); + } } } } diff --git a/mysql-test/r/perror.result b/mysql-test/r/perror.result index 6539955bba6..a26bdb0e068 100644 --- a/mysql-test/r/perror.result +++ b/mysql-test/r/perror.result @@ -1,3 +1,2 @@ -MySQL error code 150: Foreign key constraint is incorrectly formed -Is a named type file -Didn't find key on read or update +Illegal ndb error code: 1186 +Illegal error code: 1186 diff --git a/mysql-test/t/perror.test b/mysql-test/t/perror.test index 81847f85c96..e6c9546161b 100644 --- a/mysql-test/t/perror.test +++ b/mysql-test/t/perror.test @@ -6,6 +6,18 @@ disable_query_log; eval select LENGTH("$MY_PERROR") > 0 as "have_perror"; enable_query_log; ---exec $MY_PERROR 150 ---exec $MY_PERROR --silent 120 +--exec $MY_PERROR 150 > /dev/null +--exec $MY_PERROR --silent 120 > /dev/null +# +# Bug#16561 Unknown ERROR msg "ERROR 1186 (HY000): Binlog closed" by perror +# + +# As long there is no error code 1186 defined by NDB +# we should get a message "Illegal ndb error code: 1186" +--error 1 +--exec $MY_PERROR --ndb 1186 2>&1 + +# As there is an error code defined for 1186, expect error +--error 1 +--exec $MY_PERROR 1186 2>&1 diff --git a/ndb/src/kernel/error/ndbd_exit_codes.c b/ndb/src/kernel/error/ndbd_exit_codes.c index 07b276346a0..cb3272b38a9 100644 --- a/ndb/src/kernel/error/ndbd_exit_codes.c +++ b/ndb/src/kernel/error/ndbd_exit_codes.c @@ -247,7 +247,7 @@ int ndbd_exit_string(int err_no, char *str, unsigned int size) ndbd_exit_classification cl; ndbd_exit_status st; const char *msg = ndbd_exit_message(err_no, &cl); - if (msg[0] != '\0') + if (msg[0] != '\0' && cl != XUE) { const char *cl_msg = ndbd_exit_classification_message(cl, &st); const char *st_msg = ndbd_exit_status_message(st);