From 8a4ebb52325702b2e781e11f730e1df78bceaef9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 14 Feb 2006 03:09:17 +0300 Subject: [PATCH] fix Bug#12813 "Instance Manager: START/STOP INSTANCE commands accept a list as argument" mysql-test/r/im_life_cycle.result: update result file mysql-test/t/im_life_cycle.imtest: add a test for the bug server-tools/instance-manager/parse.cc: check for nonaplhanumeric symbols at the end of the commands --- mysql-test/r/im_life_cycle.result | 4 ++++ mysql-test/t/im_life_cycle.imtest | 15 +++++++++++++++ server-tools/instance-manager/parse.cc | 17 ++++++++++------- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/im_life_cycle.result b/mysql-test/r/im_life_cycle.result index 5df874ba452..36277f6aa28 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 20b4b0be17c..445ae7f72fa 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..4a8e85faf8f 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; @@ -293,7 +293,10 @@ Command *parse_command(Instance_map *map, const char *text) 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,