# # Testing of user status (the userstat variable). # Note that this test requires a fresh restart to not have problems with the # old status values -- source include/have_innodb.inc -- source include/have_log_bin.inc --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings select variable_value from information_schema.global_status where variable_name="handler_read_key" into @global_read_key; show columns from information_schema.client_statistics; show columns from information_schema.user_statistics; show columns from information_schema.index_statistics; show columns from information_schema.table_statistics; # Disable logging to get right number of writes into the tables. set @save_general_log=@@global.general_log; set @@global.general_log=0; set @@global.userstat=1; flush status; create table t1 (a int, primary key (a), b int default 0) engine=innodb; insert into t1 (a) values (1),(2),(3),(4); update t1 set b=1; update t1 set b=5 where a=2; delete from t1 where a=3; /* Empty query */ select * from t1 where a=999; drop table t1; # test SSL connections --connect (ssl_con,localhost,root,,,,,SSL) SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher'; --connection default # # Test the commit and rollback are counted # create table t1 (a int, primary key (a), b int default 0) engine=innodb; begin; insert into t1 values(1,1); commit; begin; insert into t1 values(2,2); commit; begin; insert into t1 values(3,3); rollback; drop table t1; select sleep(1); show status like "rows%"; show status like "ha%"; select variable_value - @global_read_key as "handler_read_key" from information_schema.global_status where variable_name="handler_read_key"; --disconnect ssl_con # Ensure that the following commands doesn't change statistics set @@global.userstat=0; # # Check that we got right statistics # select * from information_schema.index_statistics; select * from information_schema.table_statistics; show table_statistics; show index_statistics; --query_vertical select TOTAL_CONNECTIONS, TOTAL_SSL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, UPDATE_COMMANDS, COMMIT_TRANSACTIONS, ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, ACCESS_DENIED, EMPTY_QUERIES from information_schema.client_statistics; --query_vertical select TOTAL_CONNECTIONS, TOTAL_SSL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, UPDATE_COMMANDS, COMMIT_TRANSACTIONS, ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, ACCESS_DENIED, EMPTY_QUERIES from information_schema.user_statistics; # different values in --ps-protocol select OTHER_COMMANDS IN (7,8) from information_schema.client_statistics; select OTHER_COMMANDS IN (7,8) from information_schema.user_statistics; flush table_statistics; flush index_statistics; select * from information_schema.index_statistics; select * from information_schema.table_statistics; show status like "%generic%"; # # Test that some variables are not 0 # select connected_time <> 0, busy_time <> 0, bytes_received <> 0, bytes_sent <> 0, binlog_bytes_written <> 0 from information_schema.user_statistics; select connected_time <> 0, busy_time <> 0, bytes_received <> 0, bytes_sent <> 0, binlog_bytes_written <> 0 from information_schema.client_statistics; # # Test of in transaction # create table t1 (a int) engine=innodb; select @@in_transaction; begin; select @@in_transaction; insert into t1 values (1); select @@in_transaction; commit; select @@in_transaction; set @@autocommit=0; select @@in_transaction; insert into t1 values (2); select @@in_transaction; set @@autocommit=1; select @@in_transaction; drop table t1; # Cleanup set @@global.general_log=@save_general_log;