Hi!
Patch is good to push.
I noticed something that would be good to document related to this. We
are using an enumeration value to index an array. This puts a
restriction on the order of the enumeration values which would be good
to document. Also, we should hard-code the values of the enumeration
constants. Something like this (patch against mysql-6.0-rpl):
=== modified file 'sql/log.cc'
--- sql/log.cc 2008-06-10 22:27:52 +0000
+++ sql/log.cc 2008-06-12 14:13:15 +0000
@@ -98,6 +98,10 @@
}
+/*
+ Note that the indices of these elements must correspond to the
+ enumeration values of enum_warn_level.
+*/
sql_print_message_func sql_print_message_handlers[3] =
{
sql_print_information,
=== modified file 'sql/sql_error.h'
--- sql/sql_error.h 2007-06-07 08:53:23 +0000
+++ sql/sql_error.h 2008-06-12 15:03:45 +0000
@@ -16,8 +16,15 @@
class MYSQL_ERROR: public Sql_alloc
{
public:
+ /*
+ Enumeration value describing the severity of the error.
+
+ Note that these enumeration values must correspond to the indices
+ of the sql_print_message_handlers array.
+ */
enum enum_warning_level
- { WARN_LEVEL_NOTE, WARN_LEVEL_WARN, WARN_LEVEL_ERROR, WARN_LEVEL_END};
+ { WARN_LEVEL_NOTE= 0, WARN_LEVEL_WARN= 1, WARN_LEVEL_ERROR= 2,
+ WARN_LEVEL_END};
uint code;
enum_warning_level level;
Andrei Elkin wrote:
> #At file:///home/andrei/MySQL/BZR/FIXES/bug36968-rpl_temporary_errors_warn/
>
> 2612 Andrei Elkin 2008-06-05
> Bug #36968 rpl_temporary_errors.test produces warning in pushbuild
>
> The failure was due to incorrect type of the error reporting function was
> invoked
> at time the slave sql was about to leave.
>
> Fixed with correcting that to use the type of logging corrsponding to the
> error's level.
> modified:
> mysql-test/mysql-test-run.pl*
> sql/slave.cc
> support-files/build-tags
>
> per-file comments:
> mysql-test/mysql-test-run.pl
> permission to execute
> sql/slave.cc
> Error logging method corresponds to the level of the warning.
> support-files/build-tags
> tags start working.
> === modified file 'mysql-test/mysql-test-run.pl' (properties changed: -x to +x)
> === modified file 'sql/slave.cc'
> --- a/sql/slave.cc 2008-03-31 08:57:18 +0000
> +++ b/sql/slave.cc 2008-06-05 17:28:21 +0000
> @@ -2757,7 +2757,8 @@
> {
> if (err->code == ER_CANT_OPEN_LIBRARY)
> udf_error = true;
> - sql_print_warning("Slave: %s Error_code: %d",err->msg, err->code);
> + (sql_print_message_handlers[err->level])("Slave: %s Error_code: %d",
> + err->msg, err->code);
> }
> if (udf_error)
> sql_print_error("Error loading user-defined library, slave SQL "
>
> === modified file 'support-files/build-tags'
> --- a/support-files/build-tags 2002-01-20 02:16:52 +0000
> +++ b/support-files/build-tags 2008-06-05 17:28:21 +0000
> @@ -2,7 +2,7 @@
>
> rm -f TAGS
> filter='\.cc$\|\.c$\|\.h$\|\.yy$'
> -files=`bk -r sfiles -gU | grep $filter `
> +files=`bzr ls | grep $filter `
> for f in $files ;
> do
> etags -o TAGS --append $f
>
>
--
Sven Sandberg, Software Engineer
MySQL AB, www.mysql.com