mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Merge.
This commit is contained in:
commit
0b3d778691
22 changed files with 504 additions and 271 deletions
|
@ -788,6 +788,10 @@ extern void add_compiled_collation(CHARSET_INFO *cs);
|
|||
extern ulong escape_string_for_mysql(CHARSET_INFO *charset_info, char *to,
|
||||
const char *from, ulong length);
|
||||
|
||||
extern void thd_increment_bytes_sent(ulong length);
|
||||
extern void thd_increment_bytes_received(ulong length);
|
||||
extern void thd_increment_net_big_packet_count(ulong length);
|
||||
|
||||
#ifdef __WIN__
|
||||
extern my_bool have_tcpip; /* Is set if tcpip is used */
|
||||
#endif
|
||||
|
|
|
@ -163,11 +163,11 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||
|
||||
if (select && select->quick)
|
||||
{
|
||||
statistic_increment(filesort_range_count, &LOCK_status);
|
||||
statistic_increment(thd->status_var.filesort_range_count, &LOCK_status);
|
||||
}
|
||||
else
|
||||
{
|
||||
statistic_increment(filesort_scan_count, &LOCK_status);
|
||||
statistic_increment(thd->status_var.filesort_scan_count, &LOCK_status);
|
||||
}
|
||||
#ifdef CAN_TRUST_RANGE
|
||||
if (select && select->quick && select->quick->records > 0L)
|
||||
|
@ -280,7 +280,8 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||
if (error)
|
||||
my_error(ER_FILSORT_ABORT,MYF(ME_ERROR+ME_WAITTANG));
|
||||
else
|
||||
statistic_add(filesort_rows, (ulong) records, &LOCK_status);
|
||||
statistic_add(thd->status_var.filesort_rows,
|
||||
(ulong) records, &LOCK_status);
|
||||
*examined_rows= param.examined_rows;
|
||||
#ifdef SKIP_DBUG_IN_FILESORT
|
||||
DBUG_POP(); /* Ok to DBUG */
|
||||
|
@ -874,7 +875,8 @@ int merge_buffers(SORTPARAM *param, IO_CACHE *from_file,
|
|||
THD::killed_state not_killable;
|
||||
DBUG_ENTER("merge_buffers");
|
||||
|
||||
statistic_increment(filesort_merge_passes, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.filesort_merge_passes,
|
||||
&LOCK_status);
|
||||
if (param->not_killable)
|
||||
{
|
||||
killed= ¬_killable;
|
||||
|
|
|
@ -855,7 +855,7 @@ int ha_berkeley::write_row(byte * record)
|
|||
int error;
|
||||
DBUG_ENTER("write_row");
|
||||
|
||||
statistic_increment(ha_write_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_write_count, &LOCK_status);
|
||||
if (table->timestamp_default_now)
|
||||
update_timestamp(record+table->timestamp_default_now-1);
|
||||
if (table->next_number_field && record == table->record[0])
|
||||
|
@ -1099,10 +1099,11 @@ int ha_berkeley::update_row(const byte * old_row, byte * new_row)
|
|||
DB_TXN *sub_trans;
|
||||
ulong thd_options = table->tmp_table == NO_TMP_TABLE ? table->in_use->options : 0;
|
||||
bool primary_key_changed;
|
||||
|
||||
DBUG_ENTER("update_row");
|
||||
LINT_INIT(error);
|
||||
|
||||
statistic_increment(ha_update_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_update_count,&LOCK_status);
|
||||
if (table->timestamp_on_update_now)
|
||||
update_timestamp(new_row+table->timestamp_on_update_now-1);
|
||||
|
||||
|
@ -1292,7 +1293,7 @@ int ha_berkeley::delete_row(const byte * record)
|
|||
key_map keys=table->keys_in_use;
|
||||
ulong thd_options = table->tmp_table == NO_TMP_TABLE ? table->in_use->options : 0;
|
||||
DBUG_ENTER("delete_row");
|
||||
statistic_increment(ha_delete_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_delete_count,&LOCK_status);
|
||||
|
||||
if ((error=pack_row(&row, record, 0)))
|
||||
DBUG_RETURN((error)); /* purecov: inspected */
|
||||
|
@ -1439,7 +1440,7 @@ int ha_berkeley::read_row(int error, char *buf, uint keynr, DBT *row,
|
|||
int ha_berkeley::index_read_idx(byte * buf, uint keynr, const byte * key,
|
||||
uint key_len, enum ha_rkey_function find_flag)
|
||||
{
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_key_count,&LOCK_status);
|
||||
DBUG_ENTER("index_read_idx");
|
||||
current_row.flags=DB_DBT_REALLOC;
|
||||
active_index=MAX_KEY;
|
||||
|
@ -1458,9 +1459,10 @@ int ha_berkeley::index_read(byte * buf, const byte * key,
|
|||
int error;
|
||||
KEY *key_info= &table->key_info[active_index];
|
||||
int do_prev= 0;
|
||||
|
||||
DBUG_ENTER("ha_berkeley::index_read");
|
||||
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_key_count,&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
if (find_flag == HA_READ_BEFORE_KEY)
|
||||
{
|
||||
|
@ -1529,7 +1531,8 @@ int ha_berkeley::index_read_last(byte * buf, const byte * key, uint key_len)
|
|||
KEY *key_info= &table->key_info[active_index];
|
||||
DBUG_ENTER("ha_berkeley::index_read");
|
||||
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_key_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
|
||||
/* read of partial key */
|
||||
|
@ -1553,7 +1556,8 @@ int ha_berkeley::index_next(byte * buf)
|
|||
{
|
||||
DBT row;
|
||||
DBUG_ENTER("index_next");
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_next_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_NEXT),
|
||||
(char*) buf, active_index, &row, &last_key, 1));
|
||||
|
@ -1564,7 +1568,8 @@ int ha_berkeley::index_next_same(byte * buf, const byte *key, uint keylen)
|
|||
DBT row;
|
||||
int error;
|
||||
DBUG_ENTER("index_next_same");
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_next_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
if (keylen == table->key_info[active_index].key_length)
|
||||
error=read_row(cursor->c_get(cursor, &last_key, &row, DB_NEXT_DUP),
|
||||
|
@ -1584,7 +1589,8 @@ int ha_berkeley::index_prev(byte * buf)
|
|||
{
|
||||
DBT row;
|
||||
DBUG_ENTER("index_prev");
|
||||
statistic_increment(ha_read_prev_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_prev_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_PREV),
|
||||
(char*) buf, active_index, &row, &last_key, 1));
|
||||
|
@ -1595,7 +1601,8 @@ int ha_berkeley::index_first(byte * buf)
|
|||
{
|
||||
DBT row;
|
||||
DBUG_ENTER("index_first");
|
||||
statistic_increment(ha_read_first_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_first_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_FIRST),
|
||||
(char*) buf, active_index, &row, &last_key, 1));
|
||||
|
@ -1605,7 +1612,8 @@ int ha_berkeley::index_last(byte * buf)
|
|||
{
|
||||
DBT row;
|
||||
DBUG_ENTER("index_last");
|
||||
statistic_increment(ha_read_last_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_last_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_LAST),
|
||||
(char*) buf, active_index, &row, &last_key, 0));
|
||||
|
@ -1627,7 +1635,8 @@ int ha_berkeley::rnd_next(byte *buf)
|
|||
{
|
||||
DBT row;
|
||||
DBUG_ENTER("rnd_next");
|
||||
statistic_increment(ha_read_rnd_next_count,&LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.ha_read_rnd_next_count,
|
||||
&LOCK_status);
|
||||
bzero((char*) &row,sizeof(row));
|
||||
DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_NEXT),
|
||||
(char*) buf, primary_key, &row, &last_key, 1));
|
||||
|
@ -1658,9 +1667,10 @@ DBT *ha_berkeley::get_pos(DBT *to, byte *pos)
|
|||
int ha_berkeley::rnd_pos(byte * buf, byte *pos)
|
||||
{
|
||||
DBT db_pos;
|
||||
statistic_increment(ha_read_rnd_count,&LOCK_status);
|
||||
|
||||
DBUG_ENTER("ha_berkeley::rnd_pos");
|
||||
|
||||
statistic_increment(table->in_use->status_var.ha_read_rnd_count,
|
||||
&LOCK_status);
|
||||
active_index= MAX_KEY;
|
||||
DBUG_RETURN(read_row(file->get(file, transaction,
|
||||
get_pos(&db_pos, pos),
|
||||
|
|
|
@ -86,7 +86,7 @@ void ha_heap::set_keys_for_scanning(void)
|
|||
|
||||
int ha_heap::write_row(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_write_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_write_count,&LOCK_status);
|
||||
if (table->timestamp_default_now)
|
||||
update_timestamp(buf+table->timestamp_default_now-1);
|
||||
if (table->next_number_field && buf == table->record[0])
|
||||
|
@ -96,7 +96,7 @@ int ha_heap::write_row(byte * buf)
|
|||
|
||||
int ha_heap::update_row(const byte * old_data, byte * new_data)
|
||||
{
|
||||
statistic_increment(ha_update_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_update_count,&LOCK_status);
|
||||
if (table->timestamp_on_update_now)
|
||||
update_timestamp(new_data+table->timestamp_on_update_now-1);
|
||||
return heap_update(file,old_data,new_data);
|
||||
|
@ -104,7 +104,7 @@ int ha_heap::update_row(const byte * old_data, byte * new_data)
|
|||
|
||||
int ha_heap::delete_row(const byte * buf)
|
||||
{
|
||||
statistic_increment(ha_delete_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_delete_count,&LOCK_status);
|
||||
return heap_delete(file,buf);
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ int ha_heap::index_read(byte * buf, const byte * key, uint key_len,
|
|||
enum ha_rkey_function find_flag)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_key_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count, &LOCK_status);
|
||||
int error = heap_rkey(file,buf,active_index, key, key_len, find_flag);
|
||||
table->status = error ? STATUS_NOT_FOUND : 0;
|
||||
return error;
|
||||
|
@ -121,7 +121,7 @@ int ha_heap::index_read(byte * buf, const byte * key, uint key_len,
|
|||
int ha_heap::index_read_last(byte *buf, const byte *key, uint key_len)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_key_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count, &LOCK_status);
|
||||
int error= heap_rkey(file, buf, active_index, key, key_len,
|
||||
HA_READ_PREFIX_LAST);
|
||||
table->status= error ? STATUS_NOT_FOUND : 0;
|
||||
|
@ -131,7 +131,7 @@ int ha_heap::index_read_last(byte *buf, const byte *key, uint key_len)
|
|||
int ha_heap::index_read_idx(byte * buf, uint index, const byte * key,
|
||||
uint key_len, enum ha_rkey_function find_flag)
|
||||
{
|
||||
statistic_increment(ha_read_key_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count, &LOCK_status);
|
||||
int error = heap_rkey(file, buf, index, key, key_len, find_flag);
|
||||
table->status = error ? STATUS_NOT_FOUND : 0;
|
||||
return error;
|
||||
|
@ -140,7 +140,7 @@ int ha_heap::index_read_idx(byte * buf, uint index, const byte * key,
|
|||
int ha_heap::index_next(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,&LOCK_status);
|
||||
int error=heap_rnext(file,buf);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -149,7 +149,7 @@ int ha_heap::index_next(byte * buf)
|
|||
int ha_heap::index_prev(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_prev_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_prev_count,&LOCK_status);
|
||||
int error=heap_rprev(file,buf);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -158,7 +158,8 @@ int ha_heap::index_prev(byte * buf)
|
|||
int ha_heap::index_first(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_first_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_first_count,
|
||||
&LOCK_status);
|
||||
int error=heap_rfirst(file, buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -167,7 +168,7 @@ int ha_heap::index_first(byte * buf)
|
|||
int ha_heap::index_last(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_last_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_last_count,&LOCK_status);
|
||||
int error=heap_rlast(file, buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -180,7 +181,8 @@ int ha_heap::rnd_init(bool scan)
|
|||
|
||||
int ha_heap::rnd_next(byte *buf)
|
||||
{
|
||||
statistic_increment(ha_read_rnd_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_next_count,
|
||||
&LOCK_status);
|
||||
int error=heap_scan(file, buf);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -190,7 +192,7 @@ int ha_heap::rnd_pos(byte * buf, byte *pos)
|
|||
{
|
||||
int error;
|
||||
HEAP_PTR position;
|
||||
statistic_increment(ha_read_rnd_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_count, &LOCK_status);
|
||||
memcpy_fixed((char*) &position,pos,sizeof(HEAP_PTR));
|
||||
error=heap_rrnd(file, buf, position);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
|
|
|
@ -2220,7 +2220,8 @@ ha_innobase::write_row(
|
|||
ut_error;
|
||||
}
|
||||
|
||||
statistic_increment(ha_write_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_write_count,
|
||||
&LOCK_status);
|
||||
|
||||
if (table->timestamp_default_now)
|
||||
update_timestamp(record + table->timestamp_default_now - 1);
|
||||
|
@ -2839,7 +2840,8 @@ ha_innobase::index_read(
|
|||
ut_ad(prebuilt->trx ==
|
||||
(trx_t*) current_thd->transaction.all.innobase_tid);
|
||||
|
||||
statistic_increment(ha_read_key_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,
|
||||
&LOCK_status);
|
||||
|
||||
if (last_query_id != user_thd->query_id) {
|
||||
prebuilt->sql_stat_start = TRUE;
|
||||
|
@ -2945,7 +2947,8 @@ ha_innobase::change_active_index(
|
|||
{
|
||||
row_prebuilt_t* prebuilt = (row_prebuilt_t*) innobase_prebuilt;
|
||||
KEY* key=0;
|
||||
statistic_increment(ha_read_key_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,
|
||||
&LOCK_status);
|
||||
DBUG_ENTER("change_active_index");
|
||||
|
||||
ut_ad(user_thd == current_thd);
|
||||
|
@ -3077,7 +3080,8 @@ ha_innobase::index_next(
|
|||
mysql_byte* buf) /* in/out: buffer for next row in MySQL
|
||||
format */
|
||||
{
|
||||
statistic_increment(ha_read_next_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,
|
||||
&LOCK_status);
|
||||
|
||||
return(general_fetch(buf, ROW_SEL_NEXT, 0));
|
||||
}
|
||||
|
@ -3094,7 +3098,8 @@ ha_innobase::index_next_same(
|
|||
const mysql_byte* key, /* in: key value */
|
||||
uint keylen) /* in: key value length */
|
||||
{
|
||||
statistic_increment(ha_read_next_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,
|
||||
&LOCK_status);
|
||||
|
||||
return(general_fetch(buf, ROW_SEL_NEXT, last_match_mode));
|
||||
}
|
||||
|
@ -3128,7 +3133,8 @@ ha_innobase::index_first(
|
|||
int error;
|
||||
|
||||
DBUG_ENTER("index_first");
|
||||
statistic_increment(ha_read_first_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_first_count,
|
||||
&LOCK_status);
|
||||
|
||||
error = index_read(buf, NULL, 0, HA_READ_AFTER_KEY);
|
||||
|
||||
|
@ -3154,7 +3160,8 @@ ha_innobase::index_last(
|
|||
int error;
|
||||
|
||||
DBUG_ENTER("index_first");
|
||||
statistic_increment(ha_read_last_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_last_count,
|
||||
&LOCK_status);
|
||||
|
||||
error = index_read(buf, NULL, 0, HA_READ_BEFORE_KEY);
|
||||
|
||||
|
@ -3219,7 +3226,8 @@ ha_innobase::rnd_next(
|
|||
int error;
|
||||
|
||||
DBUG_ENTER("rnd_next");
|
||||
statistic_increment(ha_read_rnd_next_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_next_count,
|
||||
&LOCK_status);
|
||||
|
||||
if (start_of_scan) {
|
||||
error = index_first(buf);
|
||||
|
@ -3255,7 +3263,8 @@ ha_innobase::rnd_pos(
|
|||
DBUG_ENTER("rnd_pos");
|
||||
DBUG_DUMP("key", (char*) pos, ref_length);
|
||||
|
||||
statistic_increment(ha_read_rnd_count, &LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_count,
|
||||
&LOCK_status);
|
||||
|
||||
ut_ad(prebuilt->trx ==
|
||||
(trx_t*) current_thd->transaction.all.innobase_tid);
|
||||
|
|
|
@ -249,7 +249,7 @@ int ha_myisam::close(void)
|
|||
|
||||
int ha_myisam::write_row(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_write_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_write_count,&LOCK_status);
|
||||
|
||||
/* If we have a timestamp column, update it to the current time */
|
||||
if (table->timestamp_default_now)
|
||||
|
@ -1070,7 +1070,7 @@ bool ha_myisam::is_crashed() const
|
|||
|
||||
int ha_myisam::update_row(const byte * old_data, byte * new_data)
|
||||
{
|
||||
statistic_increment(ha_update_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_update_count,&LOCK_status);
|
||||
if (table->timestamp_on_update_now)
|
||||
update_timestamp(new_data+table->timestamp_on_update_now-1);
|
||||
return mi_update(file,old_data,new_data);
|
||||
|
@ -1078,7 +1078,7 @@ int ha_myisam::update_row(const byte * old_data, byte * new_data)
|
|||
|
||||
int ha_myisam::delete_row(const byte * buf)
|
||||
{
|
||||
statistic_increment(ha_delete_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_delete_count,&LOCK_status);
|
||||
return mi_delete(file,buf);
|
||||
}
|
||||
|
||||
|
@ -1086,7 +1086,7 @@ int ha_myisam::index_read(byte * buf, const byte * key,
|
|||
uint key_len, enum ha_rkey_function find_flag)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,&LOCK_status);
|
||||
int error=mi_rkey(file,buf,active_index, key, key_len, find_flag);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1095,7 +1095,7 @@ int ha_myisam::index_read(byte * buf, const byte * key,
|
|||
int ha_myisam::index_read_idx(byte * buf, uint index, const byte * key,
|
||||
uint key_len, enum ha_rkey_function find_flag)
|
||||
{
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,&LOCK_status);
|
||||
int error=mi_rkey(file,buf,index, key, key_len, find_flag);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1104,7 +1104,7 @@ int ha_myisam::index_read_idx(byte * buf, uint index, const byte * key,
|
|||
int ha_myisam::index_read_last(byte * buf, const byte * key, uint key_len)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,&LOCK_status);
|
||||
int error=mi_rkey(file,buf,active_index, key, key_len, HA_READ_PREFIX_LAST);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1113,7 +1113,7 @@ int ha_myisam::index_read_last(byte * buf, const byte * key, uint key_len)
|
|||
int ha_myisam::index_next(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,&LOCK_status);
|
||||
int error=mi_rnext(file,buf,active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1122,7 +1122,7 @@ int ha_myisam::index_next(byte * buf)
|
|||
int ha_myisam::index_prev(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_prev_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_prev_count,&LOCK_status);
|
||||
int error=mi_rprev(file,buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1131,7 +1131,8 @@ int ha_myisam::index_prev(byte * buf)
|
|||
int ha_myisam::index_first(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_first_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_first_count,
|
||||
&LOCK_status);
|
||||
int error=mi_rfirst(file, buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1140,7 +1141,7 @@ int ha_myisam::index_first(byte * buf)
|
|||
int ha_myisam::index_last(byte * buf)
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_last_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_last_count,&LOCK_status);
|
||||
int error=mi_rlast(file, buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1151,7 +1152,7 @@ int ha_myisam::index_next_same(byte * buf,
|
|||
uint length __attribute__((unused)))
|
||||
{
|
||||
DBUG_ASSERT(inited==INDEX);
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,&LOCK_status);
|
||||
int error=mi_rnext_same(file,buf);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1167,7 +1168,8 @@ int ha_myisam::rnd_init(bool scan)
|
|||
|
||||
int ha_myisam::rnd_next(byte *buf)
|
||||
{
|
||||
statistic_increment(ha_read_rnd_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_next_count,
|
||||
&LOCK_status);
|
||||
int error=mi_scan(file, buf);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1180,7 +1182,7 @@ int ha_myisam::restart_rnd_next(byte *buf, byte *pos)
|
|||
|
||||
int ha_myisam::rnd_pos(byte * buf, byte *pos)
|
||||
{
|
||||
statistic_increment(ha_read_rnd_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_count,&LOCK_status);
|
||||
int error=mi_rrnd(file, buf, ha_get_ptr(pos,ref_length));
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -1588,7 +1590,8 @@ int ha_myisam::ft_read(byte * buf)
|
|||
if (!ft_handler)
|
||||
return -1;
|
||||
|
||||
thread_safe_increment(ha_read_next_count,&LOCK_status); // why ?
|
||||
thread_safe_increment(current_thd->status_var.ha_read_next_count,
|
||||
&LOCK_status); // why ?
|
||||
|
||||
error=ft_handler->please->read_next(ft_handler,(char*) buf);
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ int ha_myisammrg::close(void)
|
|||
|
||||
int ha_myisammrg::write_row(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_write_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_write_count,&LOCK_status);
|
||||
if (table->timestamp_default_now)
|
||||
update_timestamp(buf+table->timestamp_default_now-1);
|
||||
if (table->next_number_field && buf == table->record[0])
|
||||
|
@ -91,7 +91,7 @@ int ha_myisammrg::write_row(byte * buf)
|
|||
|
||||
int ha_myisammrg::update_row(const byte * old_data, byte * new_data)
|
||||
{
|
||||
statistic_increment(ha_update_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_update_count,&LOCK_status);
|
||||
if (table->timestamp_on_update_now)
|
||||
update_timestamp(new_data+table->timestamp_on_update_now);
|
||||
return myrg_update(file,old_data,new_data);
|
||||
|
@ -99,14 +99,14 @@ int ha_myisammrg::update_row(const byte * old_data, byte * new_data)
|
|||
|
||||
int ha_myisammrg::delete_row(const byte * buf)
|
||||
{
|
||||
statistic_increment(ha_delete_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_delete_count,&LOCK_status);
|
||||
return myrg_delete(file,buf);
|
||||
}
|
||||
|
||||
int ha_myisammrg::index_read(byte * buf, const byte * key,
|
||||
uint key_len, enum ha_rkey_function find_flag)
|
||||
{
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,&LOCK_status);
|
||||
int error=myrg_rkey(file,buf,active_index, key, key_len, find_flag);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -115,7 +115,7 @@ int ha_myisammrg::index_read(byte * buf, const byte * key,
|
|||
int ha_myisammrg::index_read_idx(byte * buf, uint index, const byte * key,
|
||||
uint key_len, enum ha_rkey_function find_flag)
|
||||
{
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,&LOCK_status);
|
||||
int error=myrg_rkey(file,buf,index, key, key_len, find_flag);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -123,7 +123,7 @@ int ha_myisammrg::index_read_idx(byte * buf, uint index, const byte * key,
|
|||
|
||||
int ha_myisammrg::index_read_last(byte * buf, const byte * key, uint key_len)
|
||||
{
|
||||
statistic_increment(ha_read_key_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_key_count,&LOCK_status);
|
||||
int error=myrg_rkey(file,buf,active_index, key, key_len,
|
||||
HA_READ_PREFIX_LAST);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
|
@ -132,7 +132,7 @@ int ha_myisammrg::index_read_last(byte * buf, const byte * key, uint key_len)
|
|||
|
||||
int ha_myisammrg::index_next(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,&LOCK_status);
|
||||
int error=myrg_rnext(file,buf,active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -140,7 +140,7 @@ int ha_myisammrg::index_next(byte * buf)
|
|||
|
||||
int ha_myisammrg::index_prev(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_read_prev_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_prev_count,&LOCK_status);
|
||||
int error=myrg_rprev(file,buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -148,7 +148,8 @@ int ha_myisammrg::index_prev(byte * buf)
|
|||
|
||||
int ha_myisammrg::index_first(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_read_first_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_first_count,
|
||||
&LOCK_status);
|
||||
int error=myrg_rfirst(file, buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -156,7 +157,7 @@ int ha_myisammrg::index_first(byte * buf)
|
|||
|
||||
int ha_myisammrg::index_last(byte * buf)
|
||||
{
|
||||
statistic_increment(ha_read_last_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_last_count,&LOCK_status);
|
||||
int error=myrg_rlast(file, buf, active_index);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -166,7 +167,7 @@ int ha_myisammrg::index_next_same(byte * buf,
|
|||
const byte *key __attribute__((unused)),
|
||||
uint length __attribute__((unused)))
|
||||
{
|
||||
statistic_increment(ha_read_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_next_count,&LOCK_status);
|
||||
int error=myrg_rnext_same(file,buf);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -179,7 +180,8 @@ int ha_myisammrg::rnd_init(bool scan)
|
|||
|
||||
int ha_myisammrg::rnd_next(byte *buf)
|
||||
{
|
||||
statistic_increment(ha_read_rnd_next_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_next_count,
|
||||
&LOCK_status);
|
||||
int error=myrg_rrnd(file, buf, HA_OFFSET_ERROR);
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
@ -187,7 +189,7 @@ int ha_myisammrg::rnd_next(byte *buf)
|
|||
|
||||
int ha_myisammrg::rnd_pos(byte * buf, byte *pos)
|
||||
{
|
||||
statistic_increment(ha_read_rnd_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_rnd_count,&LOCK_status);
|
||||
int error=myrg_rrnd(file, buf, ha_get_ptr(pos,ref_length));
|
||||
table->status=error ? STATUS_NOT_FOUND: 0;
|
||||
return error;
|
||||
|
|
|
@ -1963,7 +1963,7 @@ int ha_ndbcluster::index_first(byte *buf)
|
|||
int ha_ndbcluster::index_last(byte *buf)
|
||||
{
|
||||
DBUG_ENTER("index_last");
|
||||
statistic_increment(ha_read_last_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_last_count,&LOCK_status);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
|
|
@ -54,11 +54,7 @@
|
|||
|
||||
static int NEAR_F delete_file(const char *name,const char *ext,int extflag);
|
||||
|
||||
ulong ha_read_count, ha_write_count, ha_delete_count, ha_update_count,
|
||||
ha_read_key_count, ha_read_next_count, ha_read_prev_count,
|
||||
ha_read_first_count, ha_read_last_count,
|
||||
ha_commit_count, ha_rollback_count,
|
||||
ha_read_rnd_count, ha_read_rnd_next_count, ha_discover_count;
|
||||
ulong ha_read_count, ha_discover_count;
|
||||
|
||||
static SHOW_COMP_OPTION have_yes= SHOW_OPTION_YES;
|
||||
|
||||
|
@ -562,7 +558,7 @@ int ha_commit_trans(THD *thd, THD_TRANS* trans)
|
|||
thd->variables.tx_isolation=thd->session_tx_isolation;
|
||||
if (operation_done)
|
||||
{
|
||||
statistic_increment(ha_commit_count,&LOCK_status);
|
||||
statistic_increment(thd->status_var.ha_commit_count,&LOCK_status);
|
||||
thd->transaction.cleanup();
|
||||
}
|
||||
if (need_start_waiters)
|
||||
|
@ -651,7 +647,7 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans)
|
|||
}
|
||||
thd->variables.tx_isolation=thd->session_tx_isolation;
|
||||
if (operation_done)
|
||||
statistic_increment(ha_rollback_count,&LOCK_status);
|
||||
statistic_increment(thd->status_var.ha_rollback_count,&LOCK_status);
|
||||
}
|
||||
#endif /* USING_TRANSACTIONS */
|
||||
DBUG_RETURN(error);
|
||||
|
@ -724,7 +720,7 @@ int ha_rollback_to_savepoint(THD *thd, char *savepoint_name)
|
|||
operation_done=1;
|
||||
#endif
|
||||
if (operation_done)
|
||||
statistic_increment(ha_rollback_count,&LOCK_status);
|
||||
statistic_increment(thd->status_var.ha_rollback_count,&LOCK_status);
|
||||
}
|
||||
#endif /* USING_TRANSACTIONS */
|
||||
|
||||
|
@ -919,7 +915,7 @@ int handler::read_first_row(byte * buf, uint primary_key)
|
|||
register int error;
|
||||
DBUG_ENTER("handler::read_first_row");
|
||||
|
||||
statistic_increment(ha_read_first_count,&LOCK_status);
|
||||
statistic_increment(current_thd->status_var.ha_read_first_count,&LOCK_status);
|
||||
|
||||
/*
|
||||
If there is very few deleted rows in the table, find the first row by
|
||||
|
|
|
@ -2850,6 +2850,8 @@ String *Item_func_uuid::val_str(String *str)
|
|||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
char *s;
|
||||
THD *thd= current_thd;
|
||||
|
||||
pthread_mutex_lock(&LOCK_uuid_generator);
|
||||
if (! uuid_time) /* first UUID() call. initializing data */
|
||||
{
|
||||
|
@ -2864,7 +2866,7 @@ String *Item_func_uuid::val_str(String *str)
|
|||
with a clock_seq value (initialized random below), we use a separate
|
||||
randominit() here
|
||||
*/
|
||||
randominit(&uuid_rand, tmp + (ulong)current_thd, tmp + query_id);
|
||||
randominit(&uuid_rand, tmp + (ulong) thd, tmp + query_id);
|
||||
for (i=0; i < (int)sizeof(mac); i++)
|
||||
mac[i]=(uchar)(my_rnd(&uuid_rand)*255);
|
||||
}
|
||||
|
@ -2874,7 +2876,8 @@ String *Item_func_uuid::val_str(String *str)
|
|||
*--s=_dig_vec_lower[mac[i] & 15];
|
||||
*--s=_dig_vec_lower[mac[i] >> 4];
|
||||
}
|
||||
randominit(&uuid_rand, tmp + (ulong)start_time, tmp + bytes_sent);
|
||||
randominit(&uuid_rand, tmp + (ulong)start_time,
|
||||
tmp + thd->status_var.bytes_sent);
|
||||
set_clock_seq_str();
|
||||
}
|
||||
|
||||
|
|
|
@ -698,7 +698,8 @@ int mysqld_show_status(THD *thd);
|
|||
int mysqld_show_variables(THD *thd,const char *wild);
|
||||
int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
|
||||
enum enum_var_type value_type,
|
||||
pthread_mutex_t *mutex);
|
||||
pthread_mutex_t *mutex,
|
||||
struct system_status_var *status_var);
|
||||
int mysql_find_files(THD *thd,List<char> *files, const char *db,
|
||||
const char *path, const char *wild, bool dir);
|
||||
int mysqld_show_charsets(THD *thd,const char *wild);
|
||||
|
@ -707,6 +708,7 @@ int mysqld_show_storage_engines(THD *thd);
|
|||
int mysqld_show_privileges(THD *thd);
|
||||
int mysqld_show_column_types(THD *thd);
|
||||
int mysqld_help (THD *thd, const char *text);
|
||||
void calc_sum_of_all_status(STATUS_VAR *to);
|
||||
|
||||
/* sql_prepare.cc */
|
||||
int mysql_stmt_prepare(THD *thd, char *packet, uint packet_length,
|
||||
|
@ -926,36 +928,28 @@ extern double last_query_cost;
|
|||
extern double log_10[32];
|
||||
extern ulonglong log_10_int[20];
|
||||
extern ulonglong keybuff_size;
|
||||
extern ulong refresh_version,flush_version, thread_id,query_id,opened_tables;
|
||||
extern ulong created_tmp_tables, created_tmp_disk_tables, bytes_sent;
|
||||
extern ulong refresh_version,flush_version, thread_id,query_id;
|
||||
extern ulong binlog_cache_use, binlog_cache_disk_use;
|
||||
extern ulong aborted_threads,aborted_connects;
|
||||
extern ulong delayed_insert_timeout;
|
||||
extern ulong delayed_insert_limit, delayed_queue_size;
|
||||
extern ulong delayed_insert_threads, delayed_insert_writes;
|
||||
extern ulong delayed_rows_in_use,delayed_insert_errors;
|
||||
extern ulong filesort_rows, filesort_range_count, filesort_scan_count;
|
||||
extern ulong filesort_merge_passes;
|
||||
extern ulong select_range_check_count, select_range_count, select_scan_count;
|
||||
extern ulong select_full_range_join_count,select_full_join_count;
|
||||
extern ulong slave_open_temp_tables;
|
||||
extern ulong query_cache_size, query_cache_min_res_unit;
|
||||
extern ulong thd_startup_options, slow_launch_threads, slow_launch_time;
|
||||
extern ulong server_id, concurrency;
|
||||
extern ulong ha_read_count, ha_write_count, ha_delete_count, ha_update_count;
|
||||
extern ulong ha_read_key_count, ha_read_next_count, ha_read_prev_count;
|
||||
extern ulong ha_read_first_count, ha_read_last_count;
|
||||
extern ulong ha_read_rnd_count, ha_read_rnd_next_count, ha_discover_count;
|
||||
extern ulong ha_commit_count, ha_rollback_count,table_cache_size;
|
||||
extern ulong ha_read_count, ha_discover_count;
|
||||
extern ulong table_cache_size;
|
||||
extern ulong max_connections,max_connect_errors, connect_timeout;
|
||||
extern ulong slave_net_timeout;
|
||||
extern ulong max_user_connections;
|
||||
extern ulong long_query_count, what_to_log,flush_time;
|
||||
extern ulong what_to_log,flush_time;
|
||||
extern ulong query_buff_size, thread_stack,thread_stack_min;
|
||||
extern ulong binlog_cache_size, max_binlog_cache_size, open_files_limit;
|
||||
extern ulong max_binlog_size, max_relay_log_size;
|
||||
extern ulong rpl_recovery_rank, thread_cache_size;
|
||||
extern ulong com_stat[(uint) SQLCOM_END], com_other, back_log;
|
||||
extern ulong back_log;
|
||||
extern ulong specialflag, current_pid;
|
||||
extern ulong expire_logs_days, sync_binlog_period, sync_binlog_counter;
|
||||
extern my_bool relay_log_purge, opt_innodb_safe_binlog;
|
||||
|
@ -1005,6 +999,7 @@ extern SHOW_COMP_OPTION have_berkeley_db;
|
|||
extern SHOW_COMP_OPTION have_ndbcluster;
|
||||
extern struct system_variables global_system_variables;
|
||||
extern struct system_variables max_system_variables;
|
||||
extern struct system_status_var global_status_var;
|
||||
extern struct rand_struct sql_rand;
|
||||
extern KEY_CACHE *sql_key_cache;
|
||||
|
||||
|
|
294
sql/mysqld.cc
294
sql/mysqld.cc
|
@ -289,20 +289,13 @@ ulong open_files_limit, max_binlog_size, max_relay_log_size;
|
|||
ulong slave_net_timeout;
|
||||
ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0;
|
||||
ulong query_cache_size=0;
|
||||
ulong com_stat[(uint) SQLCOM_END], com_other;
|
||||
ulong bytes_sent, bytes_received, net_big_packet_count;
|
||||
ulong refresh_version, flush_version; /* Increments on each reload */
|
||||
ulong query_id, long_query_count;
|
||||
ulong query_id;
|
||||
ulong aborted_threads, killed_threads, aborted_connects;
|
||||
ulong delayed_insert_timeout, delayed_insert_limit, delayed_queue_size;
|
||||
ulong delayed_insert_threads, delayed_insert_writes, delayed_rows_in_use;
|
||||
ulong delayed_insert_errors,flush_time, thread_created;
|
||||
ulong filesort_rows, filesort_range_count, filesort_scan_count;
|
||||
ulong filesort_merge_passes;
|
||||
ulong select_range_check_count, select_range_count, select_scan_count;
|
||||
ulong select_full_range_join_count,select_full_join_count;
|
||||
ulong specialflag=0,opened_tables=0,created_tmp_tables=0,
|
||||
created_tmp_disk_tables=0;
|
||||
ulong specialflag=0;
|
||||
ulong binlog_cache_use= 0, binlog_cache_disk_use= 0;
|
||||
ulong max_connections,max_used_connections,
|
||||
max_connect_errors, max_user_connections = 0;
|
||||
|
@ -361,6 +354,7 @@ I_List<NAMED_LIST> key_caches;
|
|||
|
||||
struct system_variables global_system_variables;
|
||||
struct system_variables max_system_variables;
|
||||
struct system_status_var global_status_var;
|
||||
|
||||
MY_TMPDIR mysql_tmpdir_list;
|
||||
MY_BITMAP temp_pool;
|
||||
|
@ -518,6 +512,8 @@ static void close_connections(void)
|
|||
#ifdef EXTRA_DEBUG
|
||||
int count=0;
|
||||
#endif
|
||||
THD *thd= current_thd;
|
||||
|
||||
DBUG_ENTER("close_connections");
|
||||
|
||||
/* Clear thread cache */
|
||||
|
@ -5182,118 +5178,137 @@ struct show_var_st status_vars[]= {
|
|||
{"Aborted_connects", (char*) &aborted_connects, SHOW_LONG},
|
||||
{"Binlog_cache_disk_use", (char*) &binlog_cache_disk_use, SHOW_LONG},
|
||||
{"Binlog_cache_use", (char*) &binlog_cache_use, SHOW_LONG},
|
||||
{"Bytes_received", (char*) &bytes_received, SHOW_LONG},
|
||||
{"Bytes_sent", (char*) &bytes_sent, SHOW_LONG},
|
||||
{"Com_admin_commands", (char*) &com_other, SHOW_LONG},
|
||||
{"Com_alter_db", (char*) (com_stat+(uint) SQLCOM_ALTER_DB),SHOW_LONG},
|
||||
{"Com_alter_table", (char*) (com_stat+(uint) SQLCOM_ALTER_TABLE),SHOW_LONG},
|
||||
{"Com_analyze", (char*) (com_stat+(uint) SQLCOM_ANALYZE),SHOW_LONG},
|
||||
{"Com_backup_table", (char*) (com_stat+(uint) SQLCOM_BACKUP_TABLE),SHOW_LONG},
|
||||
{"Com_begin", (char*) (com_stat+(uint) SQLCOM_BEGIN),SHOW_LONG},
|
||||
{"Com_change_db", (char*) (com_stat+(uint) SQLCOM_CHANGE_DB),SHOW_LONG},
|
||||
{"Com_change_master", (char*) (com_stat+(uint) SQLCOM_CHANGE_MASTER),SHOW_LONG},
|
||||
{"Com_check", (char*) (com_stat+(uint) SQLCOM_CHECK),SHOW_LONG},
|
||||
{"Com_checksum", (char*) (com_stat+(uint) SQLCOM_CHECKSUM),SHOW_LONG},
|
||||
{"Com_commit", (char*) (com_stat+(uint) SQLCOM_COMMIT),SHOW_LONG},
|
||||
{"Com_create_db", (char*) (com_stat+(uint) SQLCOM_CREATE_DB),SHOW_LONG},
|
||||
{"Com_create_function", (char*) (com_stat+(uint) SQLCOM_CREATE_FUNCTION),SHOW_LONG},
|
||||
{"Com_create_index", (char*) (com_stat+(uint) SQLCOM_CREATE_INDEX),SHOW_LONG},
|
||||
{"Com_create_table", (char*) (com_stat+(uint) SQLCOM_CREATE_TABLE),SHOW_LONG},
|
||||
{"Com_dealloc_sql", (char*) (com_stat+(uint)
|
||||
SQLCOM_DEALLOCATE_PREPARE), SHOW_LONG},
|
||||
{"Com_delete", (char*) (com_stat+(uint) SQLCOM_DELETE),SHOW_LONG},
|
||||
{"Com_delete_multi", (char*) (com_stat+(uint) SQLCOM_DELETE_MULTI),SHOW_LONG},
|
||||
{"Com_do", (char*) (com_stat+(uint) SQLCOM_DO),SHOW_LONG},
|
||||
{"Com_drop_db", (char*) (com_stat+(uint) SQLCOM_DROP_DB),SHOW_LONG},
|
||||
{"Com_drop_function", (char*) (com_stat+(uint) SQLCOM_DROP_FUNCTION),SHOW_LONG},
|
||||
{"Com_drop_index", (char*) (com_stat+(uint) SQLCOM_DROP_INDEX),SHOW_LONG},
|
||||
{"Com_drop_table", (char*) (com_stat+(uint) SQLCOM_DROP_TABLE),SHOW_LONG},
|
||||
{"Com_drop_user", (char*) (com_stat+(uint) SQLCOM_DROP_USER),SHOW_LONG},
|
||||
{"Com_execute_sql", (char*) (com_stat+(uint) SQLCOM_EXECUTE),
|
||||
SHOW_LONG},
|
||||
{"Com_flush", (char*) (com_stat+(uint) SQLCOM_FLUSH),SHOW_LONG},
|
||||
{"Com_grant", (char*) (com_stat+(uint) SQLCOM_GRANT),SHOW_LONG},
|
||||
{"Com_ha_close", (char*) (com_stat+(uint) SQLCOM_HA_CLOSE),SHOW_LONG},
|
||||
{"Com_ha_open", (char*) (com_stat+(uint) SQLCOM_HA_OPEN),SHOW_LONG},
|
||||
{"Com_ha_read", (char*) (com_stat+(uint) SQLCOM_HA_READ),SHOW_LONG},
|
||||
{"Com_help", (char*) (com_stat+(uint) SQLCOM_HELP),SHOW_LONG},
|
||||
{"Com_insert", (char*) (com_stat+(uint) SQLCOM_INSERT),SHOW_LONG},
|
||||
{"Com_insert_select", (char*) (com_stat+(uint) SQLCOM_INSERT_SELECT),SHOW_LONG},
|
||||
{"Com_kill", (char*) (com_stat+(uint) SQLCOM_KILL),SHOW_LONG},
|
||||
{"Com_load", (char*) (com_stat+(uint) SQLCOM_LOAD),SHOW_LONG},
|
||||
{"Com_load_master_data", (char*) (com_stat+(uint) SQLCOM_LOAD_MASTER_DATA),SHOW_LONG},
|
||||
{"Com_load_master_table", (char*) (com_stat+(uint) SQLCOM_LOAD_MASTER_TABLE),SHOW_LONG},
|
||||
{"Com_lock_tables", (char*) (com_stat+(uint) SQLCOM_LOCK_TABLES),SHOW_LONG},
|
||||
{"Com_optimize", (char*) (com_stat+(uint) SQLCOM_OPTIMIZE),SHOW_LONG},
|
||||
{"Com_preload_keys", (char*) (com_stat+(uint) SQLCOM_PRELOAD_KEYS),SHOW_LONG},
|
||||
{"Com_prepare_sql", (char*) (com_stat+(uint) SQLCOM_PREPARE),
|
||||
SHOW_LONG},
|
||||
{"Com_purge", (char*) (com_stat+(uint) SQLCOM_PURGE),SHOW_LONG},
|
||||
{"Com_purge_before_date", (char*) (com_stat+(uint) SQLCOM_PURGE_BEFORE),SHOW_LONG},
|
||||
{"Com_rename_table", (char*) (com_stat+(uint) SQLCOM_RENAME_TABLE),SHOW_LONG},
|
||||
{"Com_repair", (char*) (com_stat+(uint) SQLCOM_REPAIR),SHOW_LONG},
|
||||
{"Com_replace", (char*) (com_stat+(uint) SQLCOM_REPLACE),SHOW_LONG},
|
||||
{"Com_replace_select", (char*) (com_stat+(uint) SQLCOM_REPLACE_SELECT),SHOW_LONG},
|
||||
{"Com_reset", (char*) (com_stat+(uint) SQLCOM_RESET),SHOW_LONG},
|
||||
{"Com_restore_table", (char*) (com_stat+(uint) SQLCOM_RESTORE_TABLE),SHOW_LONG},
|
||||
{"Com_revoke", (char*) (com_stat+(uint) SQLCOM_REVOKE),SHOW_LONG},
|
||||
{"Com_revoke_all", (char*) (com_stat+(uint) SQLCOM_REVOKE_ALL),SHOW_LONG},
|
||||
{"Com_rollback", (char*) (com_stat+(uint) SQLCOM_ROLLBACK),SHOW_LONG},
|
||||
{"Com_savepoint", (char*) (com_stat+(uint) SQLCOM_SAVEPOINT),SHOW_LONG},
|
||||
{"Com_select", (char*) (com_stat+(uint) SQLCOM_SELECT),SHOW_LONG},
|
||||
{"Com_set_option", (char*) (com_stat+(uint) SQLCOM_SET_OPTION),SHOW_LONG},
|
||||
{"Com_show_binlog_events", (char*) (com_stat+(uint) SQLCOM_SHOW_BINLOG_EVENTS),SHOW_LONG},
|
||||
{"Com_show_binlogs", (char*) (com_stat+(uint) SQLCOM_SHOW_BINLOGS),SHOW_LONG},
|
||||
{"Com_show_charsets", (char*) (com_stat+(uint) SQLCOM_SHOW_CHARSETS),SHOW_LONG},
|
||||
{"Com_show_collations", (char*) (com_stat+(uint) SQLCOM_SHOW_COLLATIONS),SHOW_LONG},
|
||||
{"Com_show_column_types", (char*) (com_stat+(uint) SQLCOM_SHOW_COLUMN_TYPES),SHOW_LONG},
|
||||
{"Com_show_create_db", (char*) (com_stat+(uint) SQLCOM_SHOW_CREATE_DB),SHOW_LONG},
|
||||
{"Com_show_create_table", (char*) (com_stat+(uint) SQLCOM_SHOW_CREATE),SHOW_LONG},
|
||||
{"Com_show_databases", (char*) (com_stat+(uint) SQLCOM_SHOW_DATABASES),SHOW_LONG},
|
||||
{"Com_show_errors", (char*) (com_stat+(uint) SQLCOM_SHOW_ERRORS),SHOW_LONG},
|
||||
{"Com_show_fields", (char*) (com_stat+(uint) SQLCOM_SHOW_FIELDS),SHOW_LONG},
|
||||
{"Com_show_grants", (char*) (com_stat+(uint) SQLCOM_SHOW_GRANTS),SHOW_LONG},
|
||||
{"Com_show_innodb_status", (char*) (com_stat+(uint) SQLCOM_SHOW_INNODB_STATUS),SHOW_LONG},
|
||||
{"Com_show_keys", (char*) (com_stat+(uint) SQLCOM_SHOW_KEYS),SHOW_LONG},
|
||||
{"Com_show_logs", (char*) (com_stat+(uint) SQLCOM_SHOW_LOGS),SHOW_LONG},
|
||||
{"Com_show_master_status", (char*) (com_stat+(uint) SQLCOM_SHOW_MASTER_STAT),SHOW_LONG},
|
||||
{"Com_show_new_master", (char*) (com_stat+(uint) SQLCOM_SHOW_NEW_MASTER),SHOW_LONG},
|
||||
{"Com_show_open_tables", (char*) (com_stat+(uint) SQLCOM_SHOW_OPEN_TABLES),SHOW_LONG},
|
||||
{"Com_show_privileges", (char*) (com_stat+(uint) SQLCOM_SHOW_PRIVILEGES),SHOW_LONG},
|
||||
{"Com_show_processlist", (char*) (com_stat+(uint) SQLCOM_SHOW_PROCESSLIST),SHOW_LONG},
|
||||
{"Com_show_slave_hosts", (char*) (com_stat+(uint) SQLCOM_SHOW_SLAVE_HOSTS),SHOW_LONG},
|
||||
{"Com_show_slave_status", (char*) (com_stat+(uint) SQLCOM_SHOW_SLAVE_STAT),SHOW_LONG},
|
||||
{"Com_show_status", (char*) (com_stat+(uint) SQLCOM_SHOW_STATUS),SHOW_LONG},
|
||||
{"Com_show_storage_engines", (char*) (com_stat+(uint) SQLCOM_SHOW_STORAGE_ENGINES),SHOW_LONG},
|
||||
{"Com_show_tables", (char*) (com_stat+(uint) SQLCOM_SHOW_TABLES),SHOW_LONG},
|
||||
{"Com_show_variables", (char*) (com_stat+(uint) SQLCOM_SHOW_VARIABLES),SHOW_LONG},
|
||||
{"Com_show_warnings", (char*) (com_stat+(uint) SQLCOM_SHOW_WARNS),SHOW_LONG},
|
||||
{"Com_slave_start", (char*) (com_stat+(uint) SQLCOM_SLAVE_START),SHOW_LONG},
|
||||
{"Com_slave_stop", (char*) (com_stat+(uint) SQLCOM_SLAVE_STOP),SHOW_LONG},
|
||||
{"Com_truncate", (char*) (com_stat+(uint) SQLCOM_TRUNCATE),SHOW_LONG},
|
||||
{"Com_unlock_tables", (char*) (com_stat+(uint) SQLCOM_UNLOCK_TABLES),SHOW_LONG},
|
||||
{"Com_update", (char*) (com_stat+(uint) SQLCOM_UPDATE),SHOW_LONG},
|
||||
{"Com_update_multi", (char*) (com_stat+(uint) SQLCOM_UPDATE_MULTI),SHOW_LONG},
|
||||
{"Bytes_received", (char*) offsetof(STATUS_VAR, bytes_received),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Bytes_sent", (char*) offsetof(STATUS_VAR, bytes_sent),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Com_admin_commands", (char*) offsetof(STATUS_VAR, com_other),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Com_alter_db", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_DB]), SHOW_LONG_STATUS},
|
||||
{"Com_alter_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_analyze", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ANALYZE]), SHOW_LONG_STATUS},
|
||||
{"Com_backup_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_BACKUP_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_begin", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_BEGIN]), SHOW_LONG_STATUS},
|
||||
{"Com_change_db", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CHANGE_DB]), SHOW_LONG_STATUS},
|
||||
{"Com_change_master", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CHANGE_MASTER]), SHOW_LONG_STATUS},
|
||||
{"Com_check", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CHECK]), SHOW_LONG_STATUS},
|
||||
{"Com_checksum", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CHECKSUM]), SHOW_LONG_STATUS},
|
||||
{"Com_commit", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_COMMIT]), SHOW_LONG_STATUS},
|
||||
{"Com_create_db", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_DB]), SHOW_LONG_STATUS},
|
||||
{"Com_create_function", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_FUNCTION]), SHOW_LONG_STATUS},
|
||||
{"Com_create_index", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_INDEX]), SHOW_LONG_STATUS},
|
||||
{"Com_create_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_CREATE_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_dealloc_sql", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DEALLOCATE_PREPARE]), SHOW_LONG_STATUS},
|
||||
{"Com_delete", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DELETE]), SHOW_LONG_STATUS},
|
||||
{"Com_delete_multi", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DELETE_MULTI]), SHOW_LONG_STATUS},
|
||||
{"Com_do", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DO]), SHOW_LONG_STATUS},
|
||||
{"Com_drop_db", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_DB]), SHOW_LONG_STATUS},
|
||||
{"Com_drop_function", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_FUNCTION]), SHOW_LONG_STATUS},
|
||||
{"Com_drop_index", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_INDEX]), SHOW_LONG_STATUS},
|
||||
{"Com_drop_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_drop_user", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_DROP_USER]), SHOW_LONG_STATUS},
|
||||
{"Com_execute_sql", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_EXECUTE]), SHOW_LONG_STATUS},
|
||||
{"Com_flush", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_FLUSH]), SHOW_LONG_STATUS},
|
||||
{"Com_grant", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_GRANT]), SHOW_LONG_STATUS},
|
||||
{"Com_ha_close", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_HA_CLOSE]), SHOW_LONG_STATUS},
|
||||
{"Com_ha_open", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_HA_OPEN]), SHOW_LONG_STATUS},
|
||||
{"Com_ha_read", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_HA_READ]), SHOW_LONG_STATUS},
|
||||
{"Com_help", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_HELP]), SHOW_LONG_STATUS},
|
||||
{"Com_insert", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_INSERT]), SHOW_LONG_STATUS},
|
||||
{"Com_insert_select", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_INSERT_SELECT]), SHOW_LONG_STATUS},
|
||||
{"Com_kill", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_KILL]), SHOW_LONG_STATUS},
|
||||
{"Com_load", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_LOAD]), SHOW_LONG_STATUS},
|
||||
{"Com_load_master_data", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_LOAD_MASTER_DATA]), SHOW_LONG_STATUS},
|
||||
{"Com_load_master_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_LOAD_MASTER_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_lock_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_LOCK_TABLES]), SHOW_LONG_STATUS},
|
||||
{"Com_optimize", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_OPTIMIZE]), SHOW_LONG_STATUS},
|
||||
{"Com_preload_keys", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_PRELOAD_KEYS]), SHOW_LONG_STATUS},
|
||||
{"Com_prepare_sql", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_PREPARE]), SHOW_LONG_STATUS},
|
||||
{"Com_purge", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_PURGE]), SHOW_LONG_STATUS},
|
||||
{"Com_purge_before_date", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_PURGE_BEFORE]), SHOW_LONG_STATUS},
|
||||
{"Com_rename_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_RENAME_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_repair", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_REPAIR]), SHOW_LONG_STATUS},
|
||||
{"Com_replace", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_REPLACE]), SHOW_LONG_STATUS},
|
||||
{"Com_replace_select", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_REPLACE_SELECT]), SHOW_LONG_STATUS},
|
||||
{"Com_reset", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_RESET]), SHOW_LONG_STATUS},
|
||||
{"Com_restore_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_RESTORE_TABLE]), SHOW_LONG_STATUS},
|
||||
{"Com_revoke", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_REVOKE]), SHOW_LONG_STATUS},
|
||||
{"Com_revoke_all", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_REVOKE_ALL]), SHOW_LONG_STATUS},
|
||||
{"Com_rollback", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ROLLBACK]), SHOW_LONG_STATUS},
|
||||
{"Com_savepoint", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SAVEPOINT]), SHOW_LONG_STATUS},
|
||||
{"Com_select", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SELECT]), SHOW_LONG_STATUS},
|
||||
{"Com_set_option", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SET_OPTION]), SHOW_LONG_STATUS},
|
||||
{"Com_show_binlogs", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_BINLOGS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_binlog_events", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_BINLOG_EVENTS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_charsets", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_CHARSETS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_collations", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_COLLATIONS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_column_types", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_COLUMN_TYPES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_create_table", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_CREATE]), SHOW_LONG_STATUS},
|
||||
{"Com_show_create_db", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_CREATE_DB]), SHOW_LONG_STATUS},
|
||||
{"Com_show_databases", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_DATABASES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_errors", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_ERRORS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_fields", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_FIELDS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_grants", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_GRANTS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_innodb_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_INNODB_STATUS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_keys", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_KEYS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_logs", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_LOGS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_master_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_MASTER_STAT]), SHOW_LONG_STATUS},
|
||||
{"Com_show_new_master", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_NEW_MASTER]), SHOW_LONG_STATUS},
|
||||
{"Com_show_open_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_OPEN_TABLES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_privileges", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_PRIVILEGES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_processlist", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_PROCESSLIST]), SHOW_LONG_STATUS},
|
||||
{"Com_show_slave_hosts", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_HOSTS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_slave_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_STAT]), SHOW_LONG_STATUS},
|
||||
{"Com_show_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_STATUS]), SHOW_LONG_STATUS},
|
||||
{"Com_show_storage_engines", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_STORAGE_ENGINES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_variables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_VARIABLES]), SHOW_LONG_STATUS},
|
||||
{"Com_show_warnings", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_WARNS]), SHOW_LONG_STATUS},
|
||||
{"Com_slave_start", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SLAVE_START]), SHOW_LONG_STATUS},
|
||||
{"Com_slave_stop", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SLAVE_STOP]), SHOW_LONG_STATUS},
|
||||
{"Com_truncate", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_TRUNCATE]), SHOW_LONG_STATUS},
|
||||
{"Com_unlock_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_UNLOCK_TABLES]), SHOW_LONG_STATUS},
|
||||
{"Com_update", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_UPDATE]), SHOW_LONG_STATUS},
|
||||
{"Com_update_multi", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_UPDATE_MULTI]), SHOW_LONG_STATUS},
|
||||
{"Connections", (char*) &thread_id, SHOW_LONG_CONST},
|
||||
{"Created_tmp_disk_tables", (char*) &created_tmp_disk_tables,SHOW_LONG},
|
||||
{"Created_tmp_disk_tables", (char*) offsetof(STATUS_VAR,
|
||||
created_tmp_disk_tables),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Created_tmp_files", (char*) &my_tmp_file_created, SHOW_LONG},
|
||||
{"Created_tmp_tables", (char*) &created_tmp_tables, SHOW_LONG},
|
||||
{"Created_tmp_tables", (char*) offsetof(STATUS_VAR,
|
||||
created_tmp_tables),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Delayed_errors", (char*) &delayed_insert_errors, SHOW_LONG},
|
||||
{"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_CONST},
|
||||
{"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG},
|
||||
{"Flush_commands", (char*) &refresh_version, SHOW_LONG_CONST},
|
||||
{"Handler_commit", (char*) &ha_commit_count, SHOW_LONG},
|
||||
{"Handler_delete", (char*) &ha_delete_count, SHOW_LONG},
|
||||
{"Handler_commit", (char*) offsetof(STATUS_VAR, ha_commit_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_delete", (char*) offsetof(STATUS_VAR, ha_delete_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_discover", (char*) &ha_discover_count, SHOW_LONG},
|
||||
{"Handler_read_first", (char*) &ha_read_first_count, SHOW_LONG},
|
||||
{"Handler_read_key", (char*) &ha_read_key_count, SHOW_LONG},
|
||||
{"Handler_read_next", (char*) &ha_read_next_count, SHOW_LONG},
|
||||
{"Handler_read_prev", (char*) &ha_read_prev_count, SHOW_LONG},
|
||||
{"Handler_read_rnd", (char*) &ha_read_rnd_count, SHOW_LONG},
|
||||
{"Handler_read_rnd_next", (char*) &ha_read_rnd_next_count, SHOW_LONG},
|
||||
{"Handler_rollback", (char*) &ha_rollback_count, SHOW_LONG},
|
||||
{"Handler_update", (char*) &ha_update_count, SHOW_LONG},
|
||||
{"Handler_write", (char*) &ha_write_count, SHOW_LONG},
|
||||
{"Handler_read_first", (char*) offsetof(STATUS_VAR,
|
||||
ha_read_first_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_read_key", (char*) offsetof(STATUS_VAR, ha_read_key_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_read_next", (char*) offsetof(STATUS_VAR,
|
||||
ha_read_next_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_read_prev", (char*) offsetof(STATUS_VAR,
|
||||
ha_read_prev_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_read_rnd", (char*) offsetof(STATUS_VAR, ha_read_rnd_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_read_rnd_next", (char*) offsetof(STATUS_VAR,
|
||||
ha_read_rnd_next_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_rollback", (char*) offsetof(STATUS_VAR, ha_rollback_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_update", (char*) offsetof(STATUS_VAR, ha_update_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Handler_write", (char*) offsetof(STATUS_VAR, ha_write_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Key_blocks_not_flushed", (char*) &dflt_key_cache_var.global_blocks_changed,
|
||||
SHOW_KEY_CACHE_LONG},
|
||||
{"Key_blocks_unused", (char*) &dflt_key_cache_var.blocks_unused,
|
||||
|
@ -5314,7 +5329,8 @@ struct show_var_st status_vars[]= {
|
|||
{"Open_files", (char*) &my_file_opened, SHOW_LONG_CONST},
|
||||
{"Open_streams", (char*) &my_stream_opened, SHOW_LONG_CONST},
|
||||
{"Open_tables", (char*) 0, SHOW_OPENTABLES},
|
||||
{"Opened_tables", (char*) &opened_tables, SHOW_LONG},
|
||||
{"Opened_tables", (char*) offsetof(STATUS_VAR, opened_tables),
|
||||
SHOW_LONG_STATUS},
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
{"Qcache_free_blocks", (char*) &query_cache.free_memory_blocks,
|
||||
SHOW_LONG_CONST},
|
||||
|
@ -5330,19 +5346,36 @@ struct show_var_st status_vars[]= {
|
|||
#endif /*HAVE_QUERY_CACHE*/
|
||||
{"Questions", (char*) 0, SHOW_QUESTION},
|
||||
{"Rpl_status", (char*) 0, SHOW_RPL_STATUS},
|
||||
{"Select_full_join", (char*) &select_full_join_count, SHOW_LONG},
|
||||
{"Select_full_range_join", (char*) &select_full_range_join_count, SHOW_LONG},
|
||||
{"Select_range", (char*) &select_range_count, SHOW_LONG},
|
||||
{"Select_range_check", (char*) &select_range_check_count, SHOW_LONG},
|
||||
{"Select_scan", (char*) &select_scan_count, SHOW_LONG},
|
||||
{"Select_full_join", (char*) offsetof(STATUS_VAR,
|
||||
select_full_join_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Select_full_range_join", (char*) offsetof(STATUS_VAR,
|
||||
select_full_range_join_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Select_range", (char*) offsetof(STATUS_VAR,
|
||||
select_range_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Select_range_check", (char*) offsetof(STATUS_VAR,
|
||||
select_range_check_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Select_scan", (char*) offsetof(STATUS_VAR, select_scan_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Slave_open_temp_tables", (char*) &slave_open_temp_tables, SHOW_LONG},
|
||||
{"Slave_running", (char*) 0, SHOW_SLAVE_RUNNING},
|
||||
{"Slow_launch_threads", (char*) &slow_launch_threads, SHOW_LONG},
|
||||
{"Slow_queries", (char*) &long_query_count, SHOW_LONG},
|
||||
{"Sort_merge_passes", (char*) &filesort_merge_passes, SHOW_LONG},
|
||||
{"Sort_range", (char*) &filesort_range_count, SHOW_LONG},
|
||||
{"Sort_rows", (char*) &filesort_rows, SHOW_LONG},
|
||||
{"Sort_scan", (char*) &filesort_scan_count, SHOW_LONG},
|
||||
{"Slow_queries", (char*) offsetof(STATUS_VAR, long_query_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Sort_merge_passes", (char*) offsetof(STATUS_VAR,
|
||||
filesort_merge_passes),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Sort_range", (char*) offsetof(STATUS_VAR,
|
||||
filesort_range_count),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Sort_rows", (char*) offsetof(STATUS_VAR, filesort_rows),
|
||||
SHOW_LONG_STATUS},
|
||||
{"Sort_scan", (char*) offsetof(STATUS_VAR,
|
||||
filesort_scan_count),
|
||||
SHOW_LONG_STATUS},
|
||||
#ifdef HAVE_OPENSSL
|
||||
{"Ssl_accept_renegotiates", (char*) 0, SHOW_SSL_CTX_SESS_ACCEPT_RENEGOTIATE},
|
||||
{"Ssl_accepts", (char*) 0, SHOW_SSL_CTX_SESS_ACCEPT},
|
||||
|
@ -5473,27 +5506,22 @@ static void mysql_init_variables(void)
|
|||
test_flags= select_errors= dropping_tables= ha_open_options=0;
|
||||
thread_count= thread_running= kill_cached_threads= wake_thread=0;
|
||||
slave_open_temp_tables= 0;
|
||||
com_other= 0;
|
||||
cached_thread_count= 0;
|
||||
bytes_sent= bytes_received= 0;
|
||||
opt_endinfo= using_udf_functions= 0;
|
||||
opt_using_transactions= using_update_log= 0;
|
||||
abort_loop= select_thread_in_use= signal_thread_in_use= 0;
|
||||
ready_to_exit= shutdown_in_progress= grant_option= 0;
|
||||
long_query_count= aborted_threads= aborted_connects= 0;
|
||||
aborted_threads= aborted_connects= 0;
|
||||
delayed_insert_threads= delayed_insert_writes= delayed_rows_in_use= 0;
|
||||
delayed_insert_errors= thread_created= 0;
|
||||
filesort_rows= filesort_range_count= filesort_scan_count= 0;
|
||||
filesort_merge_passes= select_range_check_count= select_range_count= 0;
|
||||
select_scan_count= select_full_range_join_count= select_full_join_count= 0;
|
||||
specialflag= opened_tables= created_tmp_tables= created_tmp_disk_tables= 0;
|
||||
specialflag= 0;
|
||||
binlog_cache_use= binlog_cache_disk_use= 0;
|
||||
max_used_connections= slow_launch_threads = 0;
|
||||
mysqld_user= mysqld_chroot= opt_init_file= opt_bin_logname = 0;
|
||||
errmesg= 0;
|
||||
mysqld_unix_port= opt_mysql_tmpdir= my_bind_addr_str= NullS;
|
||||
bzero((gptr) &mysql_tmpdir_list, sizeof(mysql_tmpdir_list));
|
||||
bzero((gptr) &com_stat, sizeof(com_stat));
|
||||
bzero((char *) &global_status_var, sizeof(global_status_var));
|
||||
|
||||
/* Character sets */
|
||||
system_charset_info= &my_charset_utf8_general_ci;
|
||||
|
|
|
@ -103,11 +103,10 @@ extern uint test_flags;
|
|||
extern ulong bytes_sent, bytes_received, net_big_packet_count;
|
||||
extern pthread_mutex_t LOCK_bytes_sent , LOCK_bytes_received;
|
||||
extern void query_cache_insert(NET *net, const char *packet, ulong length);
|
||||
#define update_statistics(A) A
|
||||
#else
|
||||
#undef statistic_add
|
||||
#undef statistic_increment
|
||||
#define statistic_add(A,B,C)
|
||||
#define statistic_increment(A,B)
|
||||
#define update_statistics(A)
|
||||
#define thd_increment_bytes_sent()
|
||||
#endif
|
||||
|
||||
#define TEST_BLOCKING 8
|
||||
|
@ -565,7 +564,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
|||
break;
|
||||
}
|
||||
pos+=length;
|
||||
statistic_add(bytes_sent,length,&LOCK_bytes_sent);
|
||||
update_statistics(thd_increment_bytes_sent(length));
|
||||
}
|
||||
#ifndef __WIN__
|
||||
end:
|
||||
|
@ -636,7 +635,7 @@ static my_bool my_net_skip_rest(NET *net, uint32 remain, thr_alarm_t *alarmed,
|
|||
DBUG_PRINT("enter",("bytes_to_skip: %u", (uint) remain));
|
||||
|
||||
/* The following is good for debugging */
|
||||
statistic_increment(net_big_packet_count,&LOCK_bytes_received);
|
||||
update_statistics(thd_increment_net_big_packet_count(1));
|
||||
|
||||
if (!thr_alarm_in_use(alarmed))
|
||||
{
|
||||
|
@ -652,7 +651,7 @@ static my_bool my_net_skip_rest(NET *net, uint32 remain, thr_alarm_t *alarmed,
|
|||
uint length= min(remain, net->max_packet);
|
||||
if (net_safe_read(net, (char*) net->buff, length, alarmed))
|
||||
DBUG_RETURN(1);
|
||||
statistic_add(bytes_received, length, &LOCK_bytes_received);
|
||||
update_statistics(thd_increment_bytes_received(length));
|
||||
remain -= (uint32) length;
|
||||
}
|
||||
if (old != MAX_PACKET_LENGTH)
|
||||
|
@ -777,7 +776,7 @@ my_real_read(NET *net, ulong *complen)
|
|||
}
|
||||
remain -= (uint32) length;
|
||||
pos+= (ulong) length;
|
||||
statistic_add(bytes_received,(ulong) length,&LOCK_bytes_received);
|
||||
update_statistics(thd_increment_bytes_received(length));
|
||||
}
|
||||
if (i == 0)
|
||||
{ /* First parts is packet length */
|
||||
|
|
|
@ -298,6 +298,7 @@ void THD::init(void)
|
|||
bzero((char*) warn_count, sizeof(warn_count));
|
||||
total_warn_count= 0;
|
||||
update_charset();
|
||||
bzero((char *) &status_var, sizeof(status_var));
|
||||
}
|
||||
|
||||
|
||||
|
@ -388,6 +389,7 @@ THD::~THD()
|
|||
/* Ensure that no one is using THD */
|
||||
pthread_mutex_lock(&LOCK_delete);
|
||||
pthread_mutex_unlock(&LOCK_delete);
|
||||
add_to_status(&global_status_var, &status_var);
|
||||
|
||||
/* Close connection */
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
|
@ -430,6 +432,27 @@ THD::~THD()
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Add to one status variable another status variable
|
||||
|
||||
NOTES
|
||||
This function assumes that all variables are long/ulong.
|
||||
If this assumption will change, then we have to explictely add
|
||||
the other variables after the while loop
|
||||
*/
|
||||
|
||||
void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var)
|
||||
{
|
||||
ulong *end= (ulong*) ((byte*) to_var + offsetof(STATUS_VAR,
|
||||
last_system_status_var) +
|
||||
sizeof(ulong));
|
||||
ulong *to= (ulong*) to_var, *from= (ulong*) from_var;
|
||||
|
||||
while (to != end)
|
||||
*(to++)+= *(from++);
|
||||
}
|
||||
|
||||
|
||||
void THD::awake(THD::killed_state state_to_set)
|
||||
{
|
||||
THD_CHECK_SENTRY(this);
|
||||
|
@ -1628,3 +1651,27 @@ void TMP_TABLE_PARAM::init()
|
|||
group_parts= group_length= group_null_parts= 0;
|
||||
quick_group= 1;
|
||||
}
|
||||
|
||||
|
||||
void thd_increment_bytes_sent(ulong length)
|
||||
{
|
||||
current_thd->status_var.bytes_sent+= length;
|
||||
}
|
||||
|
||||
|
||||
void thd_increment_bytes_received(ulong length)
|
||||
{
|
||||
current_thd->status_var.bytes_received+= length;
|
||||
}
|
||||
|
||||
|
||||
void thd_increment_net_big_packet_count(ulong length)
|
||||
{
|
||||
current_thd->status_var.net_big_packet_count+= length;
|
||||
}
|
||||
|
||||
|
||||
void THD::set_status_var_init()
|
||||
{
|
||||
bzero((char*) &status_var, sizeof(status_var));
|
||||
}
|
||||
|
|
|
@ -442,6 +442,61 @@ struct system_variables
|
|||
DATE_TIME_FORMAT *time_format;
|
||||
};
|
||||
|
||||
|
||||
/* per thread status variables */
|
||||
|
||||
typedef struct system_status_var
|
||||
{
|
||||
ulong bytes_received;
|
||||
ulong bytes_sent;
|
||||
ulong com_other;
|
||||
ulong com_stat[(uint) SQLCOM_END];
|
||||
ulong created_tmp_disk_tables;
|
||||
ulong created_tmp_tables;
|
||||
ulong ha_commit_count;
|
||||
ulong ha_delete_count;
|
||||
ulong ha_read_first_count;
|
||||
ulong ha_read_last_count;
|
||||
ulong ha_read_key_count;
|
||||
ulong ha_read_next_count;
|
||||
ulong ha_read_prev_count;
|
||||
ulong ha_read_rnd_count;
|
||||
ulong ha_read_rnd_next_count;
|
||||
ulong ha_rollback_count;
|
||||
ulong ha_update_count;
|
||||
ulong ha_write_count;
|
||||
|
||||
/* KEY_CACHE parts. These are copies of the original */
|
||||
ulong key_blocks_changed;
|
||||
ulong key_blocks_used;
|
||||
ulong key_cache_r_requests;
|
||||
ulong key_cache_read;
|
||||
ulong key_cache_w_requests;
|
||||
ulong key_cache_write;
|
||||
/* END OF KEY_CACHE parts */
|
||||
|
||||
ulong net_big_packet_count;
|
||||
ulong opened_tables;
|
||||
ulong select_full_join_count;
|
||||
ulong select_full_range_join_count;
|
||||
ulong select_range_count;
|
||||
ulong select_range_check_count;
|
||||
ulong select_scan_count;
|
||||
ulong long_query_count;
|
||||
ulong filesort_merge_passes;
|
||||
ulong filesort_range_count;
|
||||
ulong filesort_rows;
|
||||
ulong filesort_scan_count;
|
||||
} STATUS_VAR;
|
||||
|
||||
/*
|
||||
This is used for 'show status'. It must be updated to the last ulong
|
||||
variable in system_status_var
|
||||
*/
|
||||
|
||||
#define last_system_status_var filesort_scan_count
|
||||
|
||||
|
||||
void free_tmp_table(THD *thd, TABLE *entry);
|
||||
|
||||
|
||||
|
@ -683,6 +738,7 @@ public:
|
|||
struct sockaddr_in remote; // client socket address
|
||||
struct rand_struct rand; // used for authentication
|
||||
struct system_variables variables; // Changeable local variables
|
||||
struct system_status_var status_var; // Per thread statistic vars
|
||||
pthread_mutex_t LOCK_delete; // Locked before thd is deleted
|
||||
/*
|
||||
Note that (A) if we set query = NULL, we must at the same time set
|
||||
|
@ -1072,6 +1128,7 @@ public:
|
|||
}
|
||||
inline CHARSET_INFO *charset() { return variables.character_set_client; }
|
||||
void update_charset();
|
||||
void set_status_var_init();
|
||||
};
|
||||
|
||||
/* Flags for the THD::system_thread (bitmap) variable */
|
||||
|
@ -1555,3 +1612,7 @@ public:
|
|||
bool send_eof();
|
||||
void cleanup();
|
||||
};
|
||||
|
||||
/* Functions in sql_class.cc */
|
||||
|
||||
void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var);
|
||||
|
|
|
@ -1343,7 +1343,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
case COM_INIT_DB:
|
||||
{
|
||||
LEX_STRING tmp;
|
||||
statistic_increment(com_stat[SQLCOM_CHANGE_DB],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_CHANGE_DB],
|
||||
&LOCK_status);
|
||||
thd->convert_string(&tmp, system_charset_info,
|
||||
packet, strlen(packet), thd->charset());
|
||||
if (!mysql_change_db(thd, tmp.str))
|
||||
|
@ -1364,7 +1365,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
uint db_len= *(uchar*) packet;
|
||||
uint tbl_len= *(uchar*) (packet + db_len + 1);
|
||||
|
||||
statistic_increment(com_other, &LOCK_status);
|
||||
statistic_increment(thd->status_var.com_other, &LOCK_status);
|
||||
thd->slow_command= TRUE;
|
||||
db= thd->alloc(db_len + tbl_len + 2);
|
||||
tbl_name= strmake(db, packet + 1, db_len)+1;
|
||||
|
@ -1378,7 +1379,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
thd->change_user();
|
||||
thd->clear_error(); // if errors from rollback
|
||||
|
||||
statistic_increment(com_other, &LOCK_status);
|
||||
statistic_increment(thd->status_var.com_other, &LOCK_status);
|
||||
char *user= (char*) packet;
|
||||
char *passwd= strend(user)+1;
|
||||
/*
|
||||
|
@ -1545,7 +1546,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
TABLE_LIST table_list;
|
||||
LEX_STRING conv_name;
|
||||
|
||||
statistic_increment(com_stat[SQLCOM_SHOW_FIELDS],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_SHOW_FIELDS],
|
||||
&LOCK_status);
|
||||
bzero((char*) &table_list,sizeof(table_list));
|
||||
if (!(table_list.db=thd->db))
|
||||
{
|
||||
|
@ -1598,7 +1600,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
{
|
||||
char *db=thd->strdup(packet), *alias;
|
||||
|
||||
statistic_increment(com_stat[SQLCOM_CREATE_DB],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_CREATE_DB],
|
||||
&LOCK_status);
|
||||
// null test to handle EOM
|
||||
if (!db || !(alias= thd->strdup(db)) || check_db_name(db))
|
||||
{
|
||||
|
@ -1613,7 +1616,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
}
|
||||
case COM_DROP_DB: // QQ: To be removed
|
||||
{
|
||||
statistic_increment(com_stat[SQLCOM_DROP_DB],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_DROP_DB],
|
||||
&LOCK_status);
|
||||
char *db=thd->strdup(packet), *alias;
|
||||
/* null test to handle EOM */
|
||||
if (!db || !(alias= thd->strdup(db)) || check_db_name(db))
|
||||
|
@ -1635,7 +1639,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
#ifndef EMBEDDED_LIBRARY
|
||||
case COM_BINLOG_DUMP:
|
||||
{
|
||||
statistic_increment(com_other,&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_other,&LOCK_status);
|
||||
thd->slow_command = TRUE;
|
||||
if (check_global_access(thd, REPL_SLAVE_ACL))
|
||||
break;
|
||||
|
@ -1661,7 +1665,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
#endif
|
||||
case COM_REFRESH:
|
||||
{
|
||||
statistic_increment(com_stat[SQLCOM_FLUSH],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_FLUSH],
|
||||
&LOCK_status);
|
||||
ulong options= (ulong) (uchar) packet[0];
|
||||
if (check_global_access(thd,RELOAD_ACL))
|
||||
break;
|
||||
|
@ -1675,7 +1680,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
#ifndef EMBEDDED_LIBRARY
|
||||
case COM_SHUTDOWN:
|
||||
{
|
||||
statistic_increment(com_other,&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_other, &LOCK_status);
|
||||
if (check_global_access(thd,SHUTDOWN_ACL))
|
||||
break; /* purecov: inspected */
|
||||
/*
|
||||
|
@ -1714,7 +1719,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
case COM_STATISTICS:
|
||||
{
|
||||
mysql_log.write(thd,command,NullS);
|
||||
statistic_increment(com_stat[SQLCOM_SHOW_STATUS],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_SHOW_STATUS],
|
||||
&LOCK_status);
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
char buff[200];
|
||||
#else
|
||||
|
@ -1724,8 +1730,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
sprintf((char*) buff,
|
||||
"Uptime: %ld Threads: %d Questions: %lu Slow queries: %ld Opens: %ld Flush tables: %ld Open tables: %u Queries per second avg: %.3f",
|
||||
uptime,
|
||||
(int) thread_count,thd->query_id,long_query_count,
|
||||
opened_tables,refresh_version, cached_tables(),
|
||||
(int) thread_count,thd->query_id,thd->status_var.long_query_count,
|
||||
thd->status_var.opened_tables,refresh_version, cached_tables(),
|
||||
uptime ? (float)thd->query_id/(float)uptime : 0);
|
||||
#ifdef SAFEMALLOC
|
||||
if (sf_malloc_cur_memory) // Using SAFEMALLOC
|
||||
|
@ -1740,11 +1746,12 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
break;
|
||||
}
|
||||
case COM_PING:
|
||||
statistic_increment(com_other,&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_other, &LOCK_status);
|
||||
send_ok(thd); // Tell client we are alive
|
||||
break;
|
||||
case COM_PROCESS_INFO:
|
||||
statistic_increment(com_stat[SQLCOM_SHOW_PROCESSLIST],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_SHOW_PROCESSLIST],
|
||||
&LOCK_status);
|
||||
if (!thd->priv_user[0] && check_global_access(thd,PROCESS_ACL))
|
||||
break;
|
||||
mysql_log.write(thd,command,NullS);
|
||||
|
@ -1754,14 +1761,15 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
break;
|
||||
case COM_PROCESS_KILL:
|
||||
{
|
||||
statistic_increment(com_stat[SQLCOM_KILL],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_KILL], &LOCK_status);
|
||||
ulong id=(ulong) uint4korr(packet);
|
||||
kill_one_thread(thd,id,false);
|
||||
break;
|
||||
}
|
||||
case COM_SET_OPTION:
|
||||
{
|
||||
statistic_increment(com_stat[SQLCOM_SET_OPTION], &LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[SQLCOM_SET_OPTION],
|
||||
&LOCK_status);
|
||||
enum_mysql_set_option command= (enum_mysql_set_option) uint2korr(packet);
|
||||
switch (command) {
|
||||
case MYSQL_OPTION_MULTI_STATEMENTS_ON:
|
||||
|
@ -1779,7 +1787,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
break;
|
||||
}
|
||||
case COM_DEBUG:
|
||||
statistic_increment(com_other,&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_other, &LOCK_status);
|
||||
if (check_global_access(thd, SUPER_ACL))
|
||||
break; /* purecov: inspected */
|
||||
mysql_print_status(thd);
|
||||
|
@ -1818,7 +1826,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
|
||||
(specialflag & SPECIAL_LOG_QUERIES_NOT_USING_INDEXES)))
|
||||
{
|
||||
long_query_count++;
|
||||
thd->status_var.long_query_count++;
|
||||
mysql_slow_log.write(thd, thd->query, thd->query_length, start_of_query);
|
||||
}
|
||||
}
|
||||
|
@ -1995,7 +2003,8 @@ mysql_execute_command(THD *thd)
|
|||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
statistic_increment(com_stat[lex->sql_command],&LOCK_status);
|
||||
statistic_increment(thd->status_var.com_stat[lex->sql_command],
|
||||
&LOCK_status);
|
||||
switch (lex->sql_command) {
|
||||
case SQLCOM_SELECT:
|
||||
{
|
||||
|
@ -2976,13 +2985,23 @@ unsent_create_error:
|
|||
res= mysqld_show_column_types(thd);
|
||||
break;
|
||||
case SQLCOM_SHOW_STATUS:
|
||||
res= mysqld_show(thd,(lex->wild ? lex->wild->ptr() : NullS),status_vars,
|
||||
OPT_GLOBAL, &LOCK_status);
|
||||
STATUS_VAR tmp;
|
||||
if (lex->option_type == OPT_GLOBAL)
|
||||
{
|
||||
pthread_mutex_lock(&LOCK_status);
|
||||
calc_sum_of_all_status(&tmp);
|
||||
}
|
||||
res= mysqld_show(thd, (lex->wild ? lex->wild->ptr() : NullS),
|
||||
status_vars, OPT_GLOBAL, &LOCK_status,
|
||||
(lex->option_type == OPT_GLOBAL ?
|
||||
&tmp: &thd->status_var));
|
||||
if (lex->option_type == OPT_GLOBAL)
|
||||
pthread_mutex_unlock(&LOCK_status);
|
||||
break;
|
||||
case SQLCOM_SHOW_VARIABLES:
|
||||
res= mysqld_show(thd, (lex->wild ? lex->wild->ptr() : NullS),
|
||||
init_vars, lex->option_type,
|
||||
&LOCK_global_system_variables);
|
||||
&LOCK_global_system_variables, 0);
|
||||
break;
|
||||
case SQLCOM_SHOW_LOGS:
|
||||
#ifdef DONT_ALLOW_SHOW_COMMANDS
|
||||
|
@ -5663,6 +5682,13 @@ static void refresh_status(void)
|
|||
(char*) &dflt_key_cache_var));
|
||||
*(ulong*) value= 0;
|
||||
}
|
||||
else if (ptr->type == SHOW_LONG_STATUS)
|
||||
{
|
||||
THD *thd= current_thd;
|
||||
/* We must update the global status before cleaning up the thread */
|
||||
add_to_status(&global_status_var, &thd->status_var);
|
||||
bzero((char*) &thd->status_var, sizeof(thd->status_var));
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&LOCK_status);
|
||||
}
|
||||
|
|
|
@ -5145,6 +5145,7 @@ static void
|
|||
make_join_readinfo(JOIN *join, uint options)
|
||||
{
|
||||
uint i;
|
||||
|
||||
bool statistics= test(!(join->select_options & SELECT_DESCRIBE));
|
||||
DBUG_ENTER("make_join_readinfo");
|
||||
|
||||
|
@ -5243,7 +5244,8 @@ make_join_readinfo(JOIN *join, uint options)
|
|||
join->thd->server_status|=SERVER_QUERY_NO_GOOD_INDEX_USED;
|
||||
tab->read_first_record= join_init_quick_read_record;
|
||||
if (statistics)
|
||||
statistic_increment(select_range_check_count, &LOCK_status);
|
||||
statistic_increment(join->thd->status_var.select_range_check_count,
|
||||
&LOCK_status);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -5253,13 +5255,15 @@ make_join_readinfo(JOIN *join, uint options)
|
|||
if (tab->select && tab->select->quick)
|
||||
{
|
||||
if (statistics)
|
||||
statistic_increment(select_range_count, &LOCK_status);
|
||||
statistic_increment(join->thd->status_var.select_range_count,
|
||||
&LOCK_status);
|
||||
}
|
||||
else
|
||||
{
|
||||
join->thd->server_status|=SERVER_QUERY_NO_INDEX_USED;
|
||||
if (statistics)
|
||||
statistic_increment(select_scan_count, &LOCK_status);
|
||||
statistic_increment(join->thd->status_var.select_scan_count,
|
||||
&LOCK_status);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -5267,13 +5271,15 @@ make_join_readinfo(JOIN *join, uint options)
|
|||
if (tab->select && tab->select->quick)
|
||||
{
|
||||
if (statistics)
|
||||
statistic_increment(select_full_range_join_count, &LOCK_status);
|
||||
statistic_increment(join->thd->status_var.select_full_range_join_count,
|
||||
&LOCK_status);
|
||||
}
|
||||
else
|
||||
{
|
||||
join->thd->server_status|=SERVER_QUERY_NO_INDEX_USED;
|
||||
if (statistics)
|
||||
statistic_increment(select_full_join_count, &LOCK_status);
|
||||
statistic_increment(join->thd->status_var.select_full_join_count,
|
||||
&LOCK_status);
|
||||
}
|
||||
}
|
||||
if (!table->no_keyread)
|
||||
|
@ -6654,7 +6660,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
|
|||
(int) distinct, (int) save_sum_fields,
|
||||
(ulong) rows_limit,test(group)));
|
||||
|
||||
statistic_increment(created_tmp_tables, &LOCK_status);
|
||||
statistic_increment(thd->status_var.created_tmp_tables, &LOCK_status);
|
||||
|
||||
if (use_temp_pool)
|
||||
temp_pool_slot = bitmap_set_next(&temp_pool);
|
||||
|
@ -7240,7 +7246,8 @@ static bool create_myisam_tmp_table(TABLE *table,TMP_TABLE_PARAM *param,
|
|||
table->db_stat=0;
|
||||
goto err;
|
||||
}
|
||||
statistic_increment(created_tmp_disk_tables, &LOCK_status);
|
||||
statistic_increment(table->in_use->status_var.created_tmp_disk_tables,
|
||||
&LOCK_status);
|
||||
table->db_record_offset=1;
|
||||
DBUG_RETURN(0);
|
||||
err:
|
||||
|
|
|
@ -1874,7 +1874,8 @@ err:
|
|||
|
||||
int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
|
||||
enum enum_var_type value_type,
|
||||
pthread_mutex_t *mutex)
|
||||
pthread_mutex_t *mutex,
|
||||
struct system_status_var *status_var)
|
||||
{
|
||||
char buff[1024];
|
||||
List<Item> field_list;
|
||||
|
@ -1912,6 +1913,10 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
|
|||
|
||||
pos= end= buff;
|
||||
switch (show_type) {
|
||||
case SHOW_LONG_STATUS:
|
||||
case SHOW_LONG_CONST_STATUS:
|
||||
value= ((char *) status_var + (uint) value);
|
||||
/* fall through */
|
||||
case SHOW_LONG:
|
||||
case SHOW_LONG_CONST:
|
||||
end= int10_to_str(*(long*) value, buff, 10);
|
||||
|
@ -2181,6 +2186,31 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
|
|||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
||||
/* collect status for all running threads */
|
||||
|
||||
void calc_sum_of_all_status(STATUS_VAR *to)
|
||||
{
|
||||
DBUG_ENTER("calc_sum_of_all_status");
|
||||
|
||||
/* Ensure that thread id not killed during loop */
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count)); // For unlink from list
|
||||
|
||||
I_List_iterator<THD> it(threads);
|
||||
THD *tmp;
|
||||
|
||||
/* Get global values as base */
|
||||
*to= global_status_var;
|
||||
|
||||
/* Add to this status from existing threads */
|
||||
while ((tmp= it++))
|
||||
add_to_status(to, &tmp->status_var);
|
||||
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
template class List_iterator_fast<char>;
|
||||
template class List<char>;
|
||||
|
|
|
@ -468,16 +468,20 @@ read_first: %10lu\n\
|
|||
write: %10lu\n\
|
||||
delete %10lu\n\
|
||||
update: %10lu\n",
|
||||
ha_read_key_count, ha_read_next_count,
|
||||
ha_read_rnd_count, ha_read_first_count,
|
||||
ha_write_count, ha_delete_count, ha_update_count);
|
||||
thd->status_var.ha_read_key_count,
|
||||
thd->status_var.ha_read_next_count,
|
||||
thd->status_var.ha_read_rnd_count,
|
||||
thd->status_var.ha_read_first_count,
|
||||
thd->status_var.ha_write_count,
|
||||
thd->status_var.ha_delete_count,
|
||||
thd->status_var.ha_update_count);
|
||||
pthread_mutex_unlock(&LOCK_status);
|
||||
printf("\nTable status:\n\
|
||||
Opened tables: %10lu\n\
|
||||
Open tables: %10lu\n\
|
||||
Open files: %10lu\n\
|
||||
Open streams: %10lu\n",
|
||||
opened_tables,
|
||||
thd->status_var.opened_tables,
|
||||
(ulong) cached_tables(),
|
||||
(ulong) my_file_opened,
|
||||
(ulong) my_stream_opened);
|
||||
|
|
|
@ -5937,8 +5937,12 @@ show_param:
|
|||
{ Lex->sql_command = SQLCOM_SHOW_WARNS;}
|
||||
| ERRORS opt_limit_clause_init
|
||||
{ Lex->sql_command = SQLCOM_SHOW_ERRORS;}
|
||||
| STATUS_SYM wild
|
||||
{ Lex->sql_command= SQLCOM_SHOW_STATUS; }
|
||||
| opt_var_type STATUS_SYM wild
|
||||
{
|
||||
THD *thd= YYTHD;
|
||||
thd->lex->sql_command= SQLCOM_SHOW_STATUS;
|
||||
thd->lex->option_type= (enum_var_type) $1;
|
||||
}
|
||||
| INNOBASE_SYM STATUS_SYM
|
||||
{ Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS; WARN_DEPRECATED("SHOW INNODB STATUS", "SHOW ENGINE INNODB STATUS"); }
|
||||
| opt_full PROCESSLIST_SYM
|
||||
|
|
|
@ -176,7 +176,8 @@ enum SHOW_TYPE
|
|||
SHOW_SSL_GET_CIPHER_LIST,
|
||||
#endif /* HAVE_OPENSSL */
|
||||
SHOW_RPL_STATUS, SHOW_SLAVE_RUNNING,
|
||||
SHOW_KEY_CACHE_LONG, SHOW_KEY_CACHE_CONST_LONG
|
||||
SHOW_KEY_CACHE_LONG, SHOW_KEY_CACHE_CONST_LONG,
|
||||
SHOW_LONG_STATUS, SHOW_LONG_CONST_STATUS
|
||||
};
|
||||
|
||||
enum SHOW_COMP_OPTION { SHOW_OPTION_YES, SHOW_OPTION_NO, SHOW_OPTION_DISABLED};
|
||||
|
|
|
@ -733,7 +733,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
|
|||
outparam->db_low_byte_first=outparam->file->low_byte_first();
|
||||
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,old_root);
|
||||
opened_tables++;
|
||||
current_thd->status_var.opened_tables++;
|
||||
#ifndef DBUG_OFF
|
||||
if (use_hash)
|
||||
(void) hash_check(&outparam->name_hash);
|
||||
|
|
Loading…
Reference in a new issue