1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00
This commit is contained in:
Brave Galera Crew
2019-01-23 15:30:00 +04:00
committed by Sergey Vojtovich
parent 382115b992
commit 36a2a185fe
791 changed files with 28035 additions and 8865 deletions

View File

@@ -52,37 +52,9 @@
#define COLUMN_WSREP_STATUS_CLUSTER_STATE_SEQNO 5
/* Cluster membership changes */
#define COLUMN_WSREP_STATUS_CLUSTER_CONF_ID 6
/* Gap between global and local states ? */
#define COLUMN_WSREP_STATUS_GAP 7
/* Application protocol version */
#define COLUMN_WSREP_STATUS_PROTO_VERSION 8
#define COLUMN_WSREP_STATUS_PROTO_VERSION 7
static const char* get_member_status(wsrep_member_status_t status)
{
switch (status)
{
case WSREP_MEMBER_UNDEFINED: return "Undefined";
case WSREP_MEMBER_JOINER: return "Joiner";
case WSREP_MEMBER_DONOR: return "Donor";
case WSREP_MEMBER_JOINED: return "Joined";
case WSREP_MEMBER_SYNCED: return "Synced";
case WSREP_MEMBER_ERROR: return "Error";
default: break;
}
return "UNKNOWN";
}
static const char* get_cluster_status(wsrep_view_status_t status)
{
switch (status)
{
case WSREP_VIEW_PRIMARY: return "Primary";
case WSREP_VIEW_NON_PRIMARY: return "Non-primary";
case WSREP_VIEW_DISCONNECTED: return "Disconnected";
default: break;
}
return "UNKNOWN";
}
static ST_FIELD_INFO wsrep_memb_fields[]=
{
@@ -107,7 +79,6 @@ static ST_FIELD_INFO wsrep_status_fields[]=
0, 0, 0, 0},
{"CLUSTER_CONF_ID", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG,
0, 0, 0, 0},
{"GAP", 10, MYSQL_TYPE_STRING, 0, 0, 0, 0},
{"PROTOCOL_VERSION", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG,
0, 0, 0, 0},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0}
@@ -122,25 +93,26 @@ static int wsrep_memb_fill_table(THD *thd, TABLE_LIST *tables, COND *cond)
wsrep_config_state->lock();
Dynamic_array<wsrep_member_info_t> *memb_arr=
wsrep_config_state->get_member_info();
const wsrep::view& view(wsrep_config_state->get_view_info());
const std::vector<wsrep::view::member>& members(view.members());
TABLE *table= tables->table;
for (unsigned int i= 0; i < memb_arr->elements(); i ++)
for (unsigned int i= 0; i < members.size(); i++)
{
wsrep_member_info_t memb= memb_arr->at(i);
table->field[COLUMN_WSREP_MEMB_INDEX]->store(i, 0);
char uuid[40];
wsrep_uuid_print(&memb.id, uuid, sizeof(uuid));
table->field[COLUMN_WSREP_MEMB_UUID]->store(uuid, sizeof(uuid),
std::ostringstream os;
os << members[i].id();
table->field[COLUMN_WSREP_MEMB_UUID]->store(os.str().c_str(),
os.str().length(),
system_charset_info);
table->field[COLUMN_WSREP_MEMB_NAME]->store(memb.name, strlen(memb.name),
table->field[COLUMN_WSREP_MEMB_NAME]->store(members[i].name().c_str(),
members[i].name().length(),
system_charset_info);
table->field[COLUMN_WSREP_MEMB_ADDRESS]->store(memb.incoming,
strlen(memb.incoming),
table->field[COLUMN_WSREP_MEMB_ADDRESS]->store(members[i].incoming().c_str(),
members[i].incoming().length(),
system_charset_info);
if (schema_table_store_record(thd, table))
@@ -177,35 +149,34 @@ static int wsrep_status_fill_table(THD *thd, TABLE_LIST *tables, COND *cond)
wsrep_config_state->lock();
wsrep_view_info_t view= wsrep_config_state->get_view_info();
wsrep_member_status_t status= wsrep_config_state->get_status();
const wsrep::view& view= wsrep_config_state->get_view_info();
enum wsrep::server_state::state status= wsrep_config_state->get_status();
TABLE *table= tables->table;
table->field[COLUMN_WSREP_STATUS_NODE_INDEX]
->store(view.my_idx, 0);
->store(view.own_index(), 0);
table->field[COLUMN_WSREP_STATUS_NODE_STATUS]
->store(get_member_status(status), strlen(get_member_status(status)),
->store(to_c_string(status),
strlen(to_c_string(status)),
system_charset_info);
table->field[COLUMN_WSREP_STATUS_CLUSTER_STATUS]
->store(get_cluster_status(view.status),
strlen(get_cluster_status(view.status)),
->store(to_c_string(view.status()),
strlen(to_c_string(view.status())),
system_charset_info);
table->field[COLUMN_WSREP_STATUS_CLUSTER_SIZE]->store(view.memb_num, 0);
table->field[COLUMN_WSREP_STATUS_CLUSTER_SIZE]->store(view.members().size(), 0);
char uuid[40];
wsrep_uuid_print(&view.state_id.uuid, uuid, sizeof(uuid));
std::ostringstream os;
os << view.state_id().id();
table->field[COLUMN_WSREP_STATUS_CLUSTER_STATE_UUID]
->store(uuid, sizeof(uuid), system_charset_info);
->store(os.str().c_str(), os.str().length(), system_charset_info);
table->field[COLUMN_WSREP_STATUS_CLUSTER_STATE_SEQNO]
->store(view.state_id.seqno, 0);
table->field[COLUMN_WSREP_STATUS_CLUSTER_CONF_ID]->store(view.view, 0);
const char *gap= (view.state_gap == true) ? "YES" : "NO";
table->field[COLUMN_WSREP_STATUS_GAP]->store(gap, strlen(gap),
system_charset_info);
table->field[COLUMN_WSREP_STATUS_PROTO_VERSION]->store(view.proto_ver, 0);
->store(view.state_id().seqno().get(), 0);
table->field[COLUMN_WSREP_STATUS_CLUSTER_CONF_ID]
->store(view.view_seqno().get(), 0);
table->field[COLUMN_WSREP_STATUS_PROTO_VERSION]
->store(view.protocol_version(), 0);
if (schema_table_store_record(thd, table))
rc= 1;