From de41f4e7bb0582101e4e1c8343962fa31bbe549e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 26 Jul 2006 14:09:20 +0200 Subject: [PATCH 1/2] Bug#16561 Unknown ERROR msg "ERROR 1186 (HY000): Binlog closed" by perror - Since error 1186 is not found among NDB error codes, the message retuned should indicate that. extra/perror.c: Move the !found out one level mysql-test/t/perror.test: Add test case for bug#16561 ndb/src/kernel/error/ndbd_exit_codes.c: Check not only for zero size string but also classification "unknown error" when looking for an error mesage for an error code --- extra/perror.c | 27 ++++++++++++++------------ mysql-test/t/perror.test | 11 +++++++++++ ndb/src/kernel/error/ndbd_exit_codes.c | 2 +- 3 files changed, 27 insertions(+), 13 deletions(-) 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/t/perror.test b/mysql-test/t/perror.test index 81847f85c96..63f2301f18e 100644 --- a/mysql-test/t/perror.test +++ b/mysql-test/t/perror.test @@ -9,3 +9,14 @@ enable_query_log; --exec $MY_PERROR 150 --exec $MY_PERROR --silent 120 +# +# 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 + +# As there is an error code defined for 1186, expect error +--exec $MY_PERROR 1186 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); From 595fdd6ba09b1ac06af3a3435258d35e23605dbf Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 26 Jul 2006 14:21:40 +0200 Subject: [PATCH 2/2] Update test result for perror mysql-test/r/perror.result: Add error result for 1186 Remove the result for the others mysql-test/t/perror.test: As it's only just interesting to see that perror doesn't crash(and as result varies across platforms), send result to /dev/null --- mysql-test/r/perror.result | 5 ++--- mysql-test/t/perror.test | 9 +++++---- 2 files changed, 7 insertions(+), 7 deletions(-) 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 63f2301f18e..e6c9546161b 100644 --- a/mysql-test/t/perror.test +++ b/mysql-test/t/perror.test @@ -6,8 +6,8 @@ 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 @@ -16,7 +16,8 @@ enable_query_log; # 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 +--exec $MY_PERROR --ndb 1186 2>&1 # As there is an error code defined for 1186, expect error ---exec $MY_PERROR 1186 +--error 1 +--exec $MY_PERROR 1186 2>&1