diff --git a/mysql-test/r/im_life_cycle.result b/mysql-test/r/im_life_cycle.result index 70aef9c40d5..e208ccb9f00 100644 --- a/mysql-test/r/im_life_cycle.result +++ b/mysql-test/r/im_life_cycle.result @@ -64,3 +64,7 @@ mysqld1 online mysqld2 offline SHOW INSTANCE STATUS; ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use +START INSTANCE mysqld1,mysqld2,mysqld3; +ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use +STOP INSTANCE mysqld1,mysqld2,mysqld3; +ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use diff --git a/mysql-test/t/im_life_cycle.imtest b/mysql-test/t/im_life_cycle.imtest index 2ea0c151d5a..246843a022b 100644 --- a/mysql-test/t/im_life_cycle.imtest +++ b/mysql-test/t/im_life_cycle.imtest @@ -149,3 +149,18 @@ SHOW INSTANCES; ########################################################################### --error 1149 SHOW INSTANCE STATUS; + +# +# Tests for bug fixes +# + +# +# Bug #12813 Instance Manager: START/STOP INSTANCE commands accept +# a list as argument. +# + +--error 1149 +START INSTANCE mysqld1,mysqld2,mysqld3; + +--error 1149 +STOP INSTANCE mysqld1,mysqld2,mysqld3; diff --git a/server-tools/instance-manager/parse.cc b/server-tools/instance-manager/parse.cc index 9d9064240d4..14b3db16b45 100644 --- a/server-tools/instance-manager/parse.cc +++ b/server-tools/instance-manager/parse.cc @@ -143,7 +143,7 @@ Command *parse_command(Instance_map *map, const char *text) instance_name_len= word_len; text+= word_len; /* it should be the end of command */ - get_word(&text, &word_len); + get_word(&text, &word_len, NONSPACE); if (word_len) goto syntax_error; @@ -156,7 +156,7 @@ Command *parse_command(Instance_map *map, const char *text) if (shift_token(&text, &word_len) != TOK_INSTANCES) goto syntax_error; - get_word(&text, &word_len); + get_word(&text, &word_len, NONSPACE); if (word_len) goto syntax_error; @@ -197,7 +197,7 @@ Command *parse_command(Instance_map *map, const char *text) } /* should be empty */ - get_word(&text, &word_len); + get_word(&text, &word_len, NONSPACE); if (word_len) goto syntax_error; @@ -213,7 +213,7 @@ Command *parse_command(Instance_map *map, const char *text) case TOK_SHOW: switch (shift_token(&text, &word_len)) { case TOK_INSTANCES: - get_word(&text, &word_len); + get_word(&text, &word_len, NONSPACE); if (word_len) goto syntax_error; command= new Show_instances(map); @@ -226,7 +226,7 @@ Command *parse_command(Instance_map *map, const char *text) goto syntax_error; text+= instance_name_len; /* check that this is the end of the command */ - get_word(&text, &word_len); + get_word(&text, &word_len, NONSPACE); if (word_len) goto syntax_error; if (tok2 == TOK_STATUS) @@ -250,7 +250,7 @@ Command *parse_command(Instance_map *map, const char *text) case TOK_LOG: switch (Token tok3= shift_token(&text, &word_len)) { case TOK_FILES: - get_word(&text, &word_len); + get_word(&text, &word_len, NONSPACE); /* check that this is the end of the command */ if (word_len) goto syntax_error; @@ -290,10 +290,14 @@ Command *parse_command(Instance_map *map, const char *text) get_word(&text, &word_len); if (!word_len) goto syntax_error; + text+= word_len; command= new Show_instance_log(map, instance_name, instance_name_len, log_type, log_size, text); - + get_word(&text, &word_len, NONSPACE); + /* check that this is the end of the command */ + if (word_len) + goto syntax_error; break; case '\0': command= new Show_instance_log(map, instance_name,