mirror of
https://github.com/MariaDB/server.git
synced 2025-10-22 19:52:58 +03:00
Merge dev3-76.dev.cn.tlan:/home/lisj/mysql/mysql-5.0/mysql-5.0-bug19047
into dev3-76.dev.cn.tlan:/home/lisj/mysql/mysql-5.1/mysql-5.1-bug19047 storage/ndb/src/mgmclient/CommandInterpreter.cpp: Auto merged storage/ndb/src/mgmclient/main.cpp: Auto merged storage/ndb/src/mgmclient/ndb_mgmclient.hpp: Auto merged
This commit is contained in:
@@ -48,11 +48,11 @@ public:
|
|||||||
*
|
*
|
||||||
* @return true until quit/bye/exit has been typed
|
* @return true until quit/bye/exit has been typed
|
||||||
*/
|
*/
|
||||||
int execute(const char *_line, int _try_reconnect=-1, int *error= 0);
|
int execute(const char *_line, int _try_reconnect=-1, bool interactive=1, int *error= 0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void printError();
|
void printError();
|
||||||
int execute_impl(const char *_line);
|
int execute_impl(const char *_line, bool interactive=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Analyse the command line, after the first token.
|
* Analyse the command line, after the first token.
|
||||||
@@ -92,7 +92,7 @@ private:
|
|||||||
*/
|
*/
|
||||||
void executeHelp(char* parameters);
|
void executeHelp(char* parameters);
|
||||||
void executeShow(char* parameters);
|
void executeShow(char* parameters);
|
||||||
void executeConnect(char* parameters);
|
void executeConnect(char* parameters, bool interactive);
|
||||||
void executePurge(char* parameters);
|
void executePurge(char* parameters);
|
||||||
int executeShutdown(char* parameters);
|
int executeShutdown(char* parameters);
|
||||||
void executeRun(char* parameters);
|
void executeRun(char* parameters);
|
||||||
@@ -130,7 +130,7 @@ public:
|
|||||||
void executeCpc(char * parameters);
|
void executeCpc(char * parameters);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool connect();
|
bool connect(bool interactive);
|
||||||
bool disconnect();
|
bool disconnect();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -186,9 +186,9 @@ Ndb_mgmclient::~Ndb_mgmclient()
|
|||||||
{
|
{
|
||||||
delete m_cmd;
|
delete m_cmd;
|
||||||
}
|
}
|
||||||
int Ndb_mgmclient::execute(const char *_line, int _try_reconnect, int *error)
|
int Ndb_mgmclient::execute(const char *_line, int _try_reconnect, bool interactive, int *error)
|
||||||
{
|
{
|
||||||
return m_cmd->execute(_line,_try_reconnect,error);
|
return m_cmd->execute(_line,_try_reconnect,interactive, error);
|
||||||
}
|
}
|
||||||
int
|
int
|
||||||
Ndb_mgmclient::disconnect()
|
Ndb_mgmclient::disconnect()
|
||||||
@@ -230,7 +230,7 @@ extern "C" {
|
|||||||
#include <util/InputStream.hpp>
|
#include <util/InputStream.hpp>
|
||||||
#include <util/OutputStream.hpp>
|
#include <util/OutputStream.hpp>
|
||||||
|
|
||||||
int Ndb_mgmclient::execute(int argc, char** argv, int _try_reconnect, int *error)
|
int Ndb_mgmclient::execute(int argc, char** argv, int _try_reconnect, bool interactive, int *error)
|
||||||
{
|
{
|
||||||
if (argc <= 0)
|
if (argc <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -239,7 +239,7 @@ int Ndb_mgmclient::execute(int argc, char** argv, int _try_reconnect, int *error
|
|||||||
{
|
{
|
||||||
_line.appfmt(" %s", argv[i]);
|
_line.appfmt(" %s", argv[i]);
|
||||||
}
|
}
|
||||||
return m_cmd->execute(_line.c_str(),_try_reconnect, error);
|
return m_cmd->execute(_line.c_str(),_try_reconnect, interactive, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@@ -345,7 +345,7 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose)
|
|||||||
{
|
{
|
||||||
m_constr= _host;
|
m_constr= _host;
|
||||||
m_connected= false;
|
m_connected= false;
|
||||||
m_event_thread= 0;
|
m_event_thread= NULL;
|
||||||
try_reconnect = 0;
|
try_reconnect = 0;
|
||||||
m_print_mutex= NdbMutex_Create();
|
m_print_mutex= NdbMutex_Create();
|
||||||
}
|
}
|
||||||
@@ -435,7 +435,7 @@ event_thread_run(void* p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CommandInterpreter::connect()
|
CommandInterpreter::connect(bool interactive)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("CommandInterpreter::connect");
|
DBUG_ENTER("CommandInterpreter::connect");
|
||||||
|
|
||||||
@@ -447,11 +447,13 @@ CommandInterpreter::connect()
|
|||||||
ndbout_c("Cannot create handle to management server.");
|
ndbout_c("Cannot create handle to management server.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
if (interactive) {
|
||||||
m_mgmsrv2 = ndb_mgm_create_handle();
|
m_mgmsrv2 = ndb_mgm_create_handle();
|
||||||
if(m_mgmsrv2 == NULL) {
|
if(m_mgmsrv2 == NULL) {
|
||||||
ndbout_c("Cannot create 2:nd handle to management server.");
|
ndbout_c("Cannot create 2:nd handle to management server.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ndb_mgm_set_connectstring(m_mgmsrv, m_constr))
|
if (ndb_mgm_set_connectstring(m_mgmsrv, m_constr))
|
||||||
{
|
{
|
||||||
@@ -464,6 +466,7 @@ CommandInterpreter::connect()
|
|||||||
|
|
||||||
const char *host= ndb_mgm_get_connected_host(m_mgmsrv);
|
const char *host= ndb_mgm_get_connected_host(m_mgmsrv);
|
||||||
unsigned port= ndb_mgm_get_connected_port(m_mgmsrv);
|
unsigned port= ndb_mgm_get_connected_port(m_mgmsrv);
|
||||||
|
if (interactive) {
|
||||||
BaseString constr;
|
BaseString constr;
|
||||||
constr.assfmt("%s:%d",host,port);
|
constr.assfmt("%s:%d",host,port);
|
||||||
if(!ndb_mgm_set_connectstring(m_mgmsrv2, constr.c_str()) &&
|
if(!ndb_mgm_set_connectstring(m_mgmsrv2, constr.c_str()) &&
|
||||||
@@ -471,7 +474,7 @@ CommandInterpreter::connect()
|
|||||||
{
|
{
|
||||||
DBUG_PRINT("info",("2:ndb connected to Management Server ok at: %s:%d",
|
DBUG_PRINT("info",("2:ndb connected to Management Server ok at: %s:%d",
|
||||||
host, port));
|
host, port));
|
||||||
assert(m_event_thread == 0);
|
assert(m_event_thread == NULL);
|
||||||
assert(do_event_thread == 0);
|
assert(do_event_thread == 0);
|
||||||
do_event_thread= 0;
|
do_event_thread= 0;
|
||||||
struct event_thread_param p;
|
struct event_thread_param p;
|
||||||
@@ -482,7 +485,7 @@ CommandInterpreter::connect()
|
|||||||
32768,
|
32768,
|
||||||
"CommandInterpreted_event_thread",
|
"CommandInterpreted_event_thread",
|
||||||
NDB_THREAD_PRIO_LOW);
|
NDB_THREAD_PRIO_LOW);
|
||||||
if (m_event_thread != 0)
|
if (m_event_thread)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info",("Thread created ok, waiting for started..."));
|
DBUG_PRINT("info",("Thread created ok, waiting for started..."));
|
||||||
int iter= 1000; // try for 30 seconds
|
int iter= 1000; // try for 30 seconds
|
||||||
@@ -490,7 +493,7 @@ CommandInterpreter::connect()
|
|||||||
iter-- > 0)
|
iter-- > 0)
|
||||||
NdbSleep_MilliSleep(30);
|
NdbSleep_MilliSleep(30);
|
||||||
}
|
}
|
||||||
if (m_event_thread == 0 ||
|
if (m_event_thread == NULL ||
|
||||||
do_event_thread == 0 ||
|
do_event_thread == 0 ||
|
||||||
do_event_thread == -1)
|
do_event_thread == -1)
|
||||||
{
|
{
|
||||||
@@ -521,6 +524,7 @@ CommandInterpreter::connect()
|
|||||||
ndb_mgm_get_latest_error(m_mgmsrv2),
|
ndb_mgm_get_latest_error(m_mgmsrv2),
|
||||||
ndb_mgm_get_latest_error_msg(m_mgmsrv2));
|
ndb_mgm_get_latest_error_msg(m_mgmsrv2));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
m_connected= true;
|
m_connected= true;
|
||||||
DBUG_PRINT("info",("Connected to Management Server at: %s:%d", host, port));
|
DBUG_PRINT("info",("Connected to Management Server at: %s:%d", host, port));
|
||||||
if (m_verbose)
|
if (m_verbose)
|
||||||
@@ -542,7 +546,7 @@ CommandInterpreter::disconnect()
|
|||||||
do_event_thread= 0;
|
do_event_thread= 0;
|
||||||
NdbThread_WaitFor(m_event_thread, &res);
|
NdbThread_WaitFor(m_event_thread, &res);
|
||||||
NdbThread_Destroy(&m_event_thread);
|
NdbThread_Destroy(&m_event_thread);
|
||||||
m_event_thread= 0;
|
m_event_thread= NULL;
|
||||||
ndb_mgm_destroy_handle(&m_mgmsrv2);
|
ndb_mgm_destroy_handle(&m_mgmsrv2);
|
||||||
}
|
}
|
||||||
if (m_connected)
|
if (m_connected)
|
||||||
@@ -558,11 +562,11 @@ CommandInterpreter::disconnect()
|
|||||||
|
|
||||||
int
|
int
|
||||||
CommandInterpreter::execute(const char *_line, int _try_reconnect,
|
CommandInterpreter::execute(const char *_line, int _try_reconnect,
|
||||||
int *error)
|
bool interactive, int *error)
|
||||||
{
|
{
|
||||||
if (_try_reconnect >= 0)
|
if (_try_reconnect >= 0)
|
||||||
try_reconnect=_try_reconnect;
|
try_reconnect=_try_reconnect;
|
||||||
int result= execute_impl(_line);
|
int result= execute_impl(_line, interactive);
|
||||||
if (error)
|
if (error)
|
||||||
*error= m_error;
|
*error= m_error;
|
||||||
|
|
||||||
@@ -577,7 +581,7 @@ invalid_command(const char *cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
CommandInterpreter::execute_impl(const char *_line)
|
CommandInterpreter::execute_impl(const char *_line, bool interactive)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("CommandInterpreter::execute_impl");
|
DBUG_ENTER("CommandInterpreter::execute_impl");
|
||||||
DBUG_PRINT("enter",("line=\"%s\"",_line));
|
DBUG_PRINT("enter",("line=\"%s\"",_line));
|
||||||
@@ -626,7 +630,7 @@ CommandInterpreter::execute_impl(const char *_line)
|
|||||||
DBUG_RETURN(true);
|
DBUG_RETURN(true);
|
||||||
}
|
}
|
||||||
else if (strcasecmp(firstToken, "CONNECT") == 0) {
|
else if (strcasecmp(firstToken, "CONNECT") == 0) {
|
||||||
executeConnect(allAfterFirstToken);
|
executeConnect(allAfterFirstToken, interactive);
|
||||||
DBUG_RETURN(true);
|
DBUG_RETURN(true);
|
||||||
}
|
}
|
||||||
else if (strcasecmp(firstToken, "SLEEP") == 0) {
|
else if (strcasecmp(firstToken, "SLEEP") == 0) {
|
||||||
@@ -641,7 +645,7 @@ CommandInterpreter::execute_impl(const char *_line)
|
|||||||
DBUG_RETURN(false);
|
DBUG_RETURN(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!connect())
|
if (!connect(interactive))
|
||||||
DBUG_RETURN(true);
|
DBUG_RETURN(true);
|
||||||
|
|
||||||
if (strcasecmp(firstToken, "SHOW") == 0) {
|
if (strcasecmp(firstToken, "SHOW") == 0) {
|
||||||
@@ -1238,13 +1242,13 @@ CommandInterpreter::executeShow(char* parameters)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CommandInterpreter::executeConnect(char* parameters)
|
CommandInterpreter::executeConnect(char* parameters, bool interactive)
|
||||||
{
|
{
|
||||||
disconnect();
|
disconnect();
|
||||||
if (!emptyString(parameters)) {
|
if (!emptyString(parameters)) {
|
||||||
m_constr= BaseString(parameters).trim().c_str();
|
m_constr= BaseString(parameters).trim().c_str();
|
||||||
}
|
}
|
||||||
connect();
|
connect(interactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
//*****************************************************************************
|
//*****************************************************************************
|
||||||
|
@@ -121,7 +121,7 @@ read_and_execute(int _try_reconnect)
|
|||||||
line_read= strdup(linebuffer);
|
line_read= strdup(linebuffer);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return com->execute(line_read,_try_reconnect);
|
return com->execute(line_read, _try_reconnect, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv){
|
int main(int argc, char** argv){
|
||||||
@@ -163,7 +163,7 @@ int main(int argc, char** argv){
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
com->execute(opt_execute_str,_try_reconnect, &ret);
|
com->execute(opt_execute_str,_try_reconnect, 0, &ret);
|
||||||
}
|
}
|
||||||
delete com;
|
delete com;
|
||||||
|
|
||||||
|
@@ -23,8 +23,8 @@ class Ndb_mgmclient
|
|||||||
public:
|
public:
|
||||||
Ndb_mgmclient(const char*,int verbose=0);
|
Ndb_mgmclient(const char*,int verbose=0);
|
||||||
~Ndb_mgmclient();
|
~Ndb_mgmclient();
|
||||||
int execute(const char *_line, int _try_reconnect=-1, int *error= 0);
|
int execute(const char *_line, int _try_reconnect=-1, bool interactive=1, int *error= 0);
|
||||||
int execute(int argc, char** argv, int _try_reconnect=-1, int *error= 0);
|
int execute(int argc, char** argv, int _try_reconnect=-1, bool interactive=1, int *error= 0);
|
||||||
int disconnect();
|
int disconnect();
|
||||||
private:
|
private:
|
||||||
CommandInterpreter *m_cmd;
|
CommandInterpreter *m_cmd;
|
||||||
|
Reference in New Issue
Block a user