diff --git a/client/mysqltest.c b/client/mysqltest.c index cfd69e45ba7..b630de8be4e 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -1956,7 +1956,13 @@ static uint get_errcodes(match_err *to,struct st_query *q) ; for (; e->name; e++) { - if (!strncmp(start, e->name, (int) (p - start))) + /* + If we get a match, we need to check the length of the name we + matched against in case it was longer than what we are checking + (as in ER_WRONG_VALUE vs. ER_WRONG_VALUE_COUNT). + */ + if (!strncmp(start, e->name, (int) (p - start)) && + strlen(e->name) == (p - start)) { to[count].code.errnum= (uint) e->code; to[count].type= ERR_ERRNO; diff --git a/mysql-test/t/events.test b/mysql-test/t/events.test index f80297682b7..fbcd4924d56 100644 --- a/mysql-test/t/events.test +++ b/mysql-test/t/events.test @@ -320,9 +320,9 @@ drop event one_event; create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; drop event e_26; ---error 1504 +--error ER_WRONG_VALUE create event e_26 on schedule at NULL disabled do set @a = 5; ---error 1504 +--error ER_WRONG_VALUE create event e_26 on schedule at 'definitely not a datetime' disabled do set @a = 5; set names utf8;