diff --git a/client/mysql.cc b/client/mysql.cc index edbfd53..84a491e 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -186,6 +186,7 @@ static MEM_ROOT hash_mem_root; static uint prompt_counter; static char delimiter[16]= DEFAULT_DELIMITER; static uint delimiter_length= 1; +static int interval = 0; unsigned short terminal_width= 80; #ifdef HAVE_SMEM @@ -216,6 +217,7 @@ static int com_quit(String *str,char*), com_rehash(String *str, char*), com_tee(String *str, char*), com_notee(String *str, char*), com_charset(String *str,char*), com_prompt(String *str, char*), com_delimiter(String *str, char*), + com_interval(String *str, char*), com_warnings(String *str, char*), com_nowarnings(String *str, char*); #ifdef USE_POPEN @@ -263,6 +265,7 @@ static COMMANDS commands[] = { "Reconnect to the server. Optional arguments are db and host." }, { "delimiter", 'd', com_delimiter, 1, "Set statement delimiter." }, + { "interval", 'i', com_interval, 1, "Set multi queries execute sleep interval."}, #ifdef USE_POPEN { "edit", 'e', com_edit, 0, "Edit command with $EDITOR."}, #endif @@ -2179,6 +2182,13 @@ static bool add_line(String &buffer,char *line,char *in_string, { if (com_go(&buffer, 0) > 0) // < 0 is not fatal DBUG_RETURN(1); + + if ( interval > 0 ){ + if(verbose){ + put_info("sleepping before execute next query", INFO_INFO); + } + sleep(interval); + } } buffer.length(0); } @@ -4135,6 +4145,41 @@ com_delimiter(String *buffer __attribute__((unused)), char *line) /* ARGSUSED */ static int +com_interval(String *buffer __attribute__((unused)), char *line) +{ + char buff[256], *tmp; + + strmake(buff, line, sizeof(buff) - 1); + tmp= get_arg(buff, 0); + + if (!tmp || !*tmp) + { + interval = 0; + put_info("Use default interval '0s'.", + INFO_INFO); + return 0; + } + else + { + for (uint i=0;i<(uint) strlen(tmp)-1;i++){ + if(!(tmp[i] > '0' and tmp[i] < '9')){ + put_info("Interval value must be digit.", INFO_ERROR); + return 0; + } + } + + if (interval > 86400 ){ + put_info("interval too long time, maybe 86400 is long enough", INFO_ERROR); + return 0; + } + } + interval = atoi(tmp); + return 0; +} + + + /* ARGSUSED */ +static int com_use(String *buffer __attribute__((unused)), char *line) { char *tmp, buff[FN_REFLEN + 1];