17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
#include <drizzled/gettext.h>
22
22
#include <drizzled/error.h>
23
23
#include <drizzled/query_id.h>
24
#include <drizzled/sql_state.h>
24
#include <drizzled/error/sql_state.h>
25
25
#include <drizzled/session.h>
26
#include "drizzled/internal/m_string.h"
26
#include <drizzled/internal/m_string.h>
27
27
#include <algorithm>
28
28
#include <boost/program_options.hpp>
29
29
#include <drizzled/module/option_map.h>
30
#include "drizzled/util/tokenize.h"
30
#include <drizzled/util/tokenize.h>
31
31
#include "errmsg.h"
32
32
#include "mysql_protocol.h"
33
33
#include "mysql_password.h"
34
34
#include "options.h"
35
#include "table_function.h"
37
#include "drizzled/identifier.h"
36
#include <drizzled/identifier.h>
38
#include <libdrizzle/constants.h>
39
40
#define PROTOCOL_VERSION 10
432
int2store(buff,sql_errno);
440
int2store(buff, static_cast<uint16_t>(sql_errno));
435
443
/* The first # is to make the client backward compatible */
437
pos= (unsigned char*) strcpy((char*) buff+3, drizzle_errno_to_sqlstate(sql_errno));
438
pos+= strlen(drizzle_errno_to_sqlstate(sql_errno));
445
pos= (unsigned char*) strcpy((char*) buff+3, error::convert_to_sqlstate(sql_errno));
446
pos+= strlen(error::convert_to_sqlstate(sql_errno));
440
448
char *tmp= strncpy((char*)pos, err, DRIZZLE_ERRMSG_SIZE-1);
441
449
tmp+= strlen((char*)pos);
1004
1024
context("port",
1005
1025
po::value<port_constraint>(&port)->default_value(3306),
1006
N_("Port number to use for connection or 0 for default to with MySQL "
1026
_("Port number to use for connection or 0 for default to with MySQL "
1008
1028
context("connect-timeout",
1009
1029
po::value<timeout_constraint>(&connect_timeout)->default_value(10),
1010
N_("Connect Timeout."));
1030
_("Connect Timeout."));
1011
1031
context("read-timeout",
1012
1032
po::value<timeout_constraint>(&read_timeout)->default_value(30),
1013
N_("Read Timeout."));
1033
_("Read Timeout."));
1014
1034
context("write-timeout",
1015
1035
po::value<timeout_constraint>(&write_timeout)->default_value(60),
1016
N_("Write Timeout."));
1036
_("Write Timeout."));
1017
1037
context("retry-count",
1018
1038
po::value<retry_constraint>(&retry_count)->default_value(10),
1019
N_("Retry Count."));
1020
1040
context("buffer-length",
1021
1041
po::value<buffer_constraint>(&buffer_length)->default_value(16384),
1022
N_("Buffer length."));
1042
_("Buffer length."));
1023
1043
context("bind-address",
1024
1044
po::value<string>()->default_value(""),
1025
N_("Address to bind to."));
1045
_("Address to bind to."));
1026
1046
context("max-connections",
1027
1047
po::value<uint32_t>(&ListenMySQLProtocol::mysql_counters->max_connections)->default_value(1000),
1028
N_("Maximum simultaneous connections."));
1048
_("Maximum simultaneous connections."));
1029
1049
context("admin-ip-addresses",
1030
1050
po::value<vector<string> >()->composing()->notifier(&ClientMySQLProtocol::mysql_compose_ip_addresses),
1031
N_("A restrictive IP address list for incoming admin connections."));
1034
static int mysql_protocol_connection_count_func(drizzle_show_var *var, char *buff)
1036
var->type= SHOW_LONGLONG;
1038
*((uint64_t *)buff)= ListenMySQLProtocol::mysql_counters->connectionCount;
1042
static int mysql_protocol_connected_count_func(drizzle_show_var *var, char *buff)
1044
var->type= SHOW_LONGLONG;
1046
*((uint64_t *)buff)= ListenMySQLProtocol::mysql_counters->connected;
1050
static int mysql_protocol_failed_count_func(drizzle_show_var *var, char *buff)
1052
var->type= SHOW_LONGLONG;
1054
*((uint64_t *)buff)= ListenMySQLProtocol::mysql_counters->failedConnections;
1058
static st_show_var_func_container mysql_protocol_connection_count=
1059
{ &mysql_protocol_connection_count_func };
1061
static st_show_var_func_container mysql_protocol_connected_count=
1062
{ &mysql_protocol_connected_count_func };
1064
static st_show_var_func_container mysql_protocol_failed_count=
1065
{ &mysql_protocol_failed_count_func };
1067
static drizzle_show_var mysql_protocol_status_variables[]= {
1069
(char*) &mysql_protocol_connection_count, SHOW_FUNC},
1071
(char*) &mysql_protocol_connected_count, SHOW_FUNC},
1072
{"Failed_connections",
1073
(char*) &mysql_protocol_failed_count, SHOW_FUNC},
1074
{NULL, NULL, SHOW_LONGLONG}
1077
MysqlProtocolStatus::Generator::Generator(drizzled::Field **fields) :
1078
plugin::TableFunction::Generator(fields)
1080
status_var_ptr= mysql_protocol_status_variables;
1083
bool MysqlProtocolStatus::Generator::populate()
1085
MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, int64_t);
1086
char * const buff= (char *) &buff_data;
1087
drizzle_show_var tmp;
1089
if (status_var_ptr->name)
1091
std::ostringstream oss;
1092
string return_value;
1096
push(status_var_ptr->name);
1098
if (status_var_ptr->type == SHOW_FUNC)
1100
((drizzle_show_var_func)((st_show_var_func_container *)status_var_ptr->value)->func)(&tmp, buff);
1106
value= status_var_ptr->value;
1107
type= status_var_ptr->type;
1113
oss << *(uint64_t*) value;
1114
return_value= oss.str();
1119
if (return_value.length())
1051
_("A restrictive IP address list for incoming admin connections."));
1131
1054
} /* namespace drizzle_plugin */