From: Christopher Powers Date: March 19 2011 2:30am Subject: bzr push into mysql-trunk branch (chris.powers:3259 to 3268) WL#4896 List-Archive: http://lists.mysql.com/commits/133377 Message-Id: <20110319023018.13FE81DB0335@xeno.mysql.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0307462653865360727==" --===============0307462653865360727== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3268 Christopher Powers 2011-03-18 WL#4896 "Performance Schema Net IO" - Regression test update modified: mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result 3267 cpowers 2011-03-18 WL#4896 "Performance Schema Net IO" - Regression test update modified: mysql-test/suite/perfschema/r/pfs_upgrade_lc1.result 3266 Christopher Powers 2011-03-18 WL#4896 "Performance Schema Net IO" - Regression test updates modified: mysql-test/suite/perfschema/r/start_server_nothing.result storage/perfschema/table_socket_instances.cc 3265 Christopher Powers 2011-03-18 WL#4896 "Performance Schema Net IO" - PSI update modified: include/mysql/psi/psi_abi_v1.h.pp include/mysql/psi/psi_abi_v2.h.pp 3264 cpowers 2011-03-18 [merge] merge modified: include/mysql/psi/psi_abi_v1.h.pp 3263 cpowers 2011-03-18 WL#4896 "Performance Schema Net IO" - Added "STATE" column to SOCKET_INSTANCES modified: include/mysql/psi/psi.h scripts/mysql_system_tables.sql storage/perfschema/table_socket_instances.cc storage/perfschema/table_socket_instances.h 3262 cpowers 2011-03-18 WL#4896 "Performance Schema Net IO" Tables SOCKET_SUMMARY_BY_EVENT_NAME and SOCKET_SUMMARY_BY_INSTANCE: Column groups assigned to individual socket operations have been removed. Stats for all socket operations are consolidated into into socket read, write and misc column groups. modified: scripts/mysql_system_tables.sql storage/perfschema/pfs.cc storage/perfschema/table_helper.h storage/perfschema/table_socket_summary_by_event_name.cc storage/perfschema/table_socket_summary_by_instance.cc 3261 cpowers 2011-03-18 WL#4896 "Performance Schema Net IO" - Added mysql_socket_set_address() API - Call mysql_socket_set_address() from network_init() for server socket - Added mysql_socket_set_thread_owner() API - Call mysql_socket_set_thread_owner() from do_handle_one_connection() - Removed unused mysql_socket APIs modified: include/mysql/psi/mysql_socket.h include/mysql/psi/psi.h sql/mysqld.cc sql/sql_connect.cc storage/perfschema/pfs.cc storage/perfschema/pfs_global.cc storage/perfschema/pfs_global.h storage/perfschema/pfs_instr.h storage/perfschema/table_socket_instances.cc 3260 cpowers 2011-03-18 WL#4896 "Performance Schema Net IO" - Fix valgrind warnings associated with SOCKET_INSTANCES.THREAD_ID modified: storage/perfschema/table_socket_instances.cc storage/perfschema/table_socket_instances.h 3259 Marc Alff 2011-03-16 WL#4896 PERFORMANCE SCHEMA NET IO Added instrumentation for IDLE events. added: include/mysql/psi/mysql_idle.h modified: include/mysql/psi/mysql_socket.h include/mysql/psi/psi.h include/mysql/psi/psi_abi_v1.h.pp include/mysql/psi/psi_abi_v2.h.pp mysql-test/suite/perfschema/include/start_server_common.inc mysql-test/suite/perfschema/r/dml_setup_timers.result mysql-test/suite/perfschema/r/information_schema.result mysql-test/suite/perfschema/r/ortho_iter.result mysql-test/suite/perfschema/r/query_cache.result mysql-test/suite/perfschema/r/start_server_no_cond_class.result mysql-test/suite/perfschema/r/start_server_no_cond_inst.result mysql-test/suite/perfschema/r/start_server_no_file_class.result mysql-test/suite/perfschema/r/start_server_no_file_inst.result mysql-test/suite/perfschema/r/start_server_no_mutex_class.result mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result mysql-test/suite/perfschema/r/start_server_no_setup_actors.result mysql-test/suite/perfschema/r/start_server_no_setup_objects.result mysql-test/suite/perfschema/r/start_server_no_socket_class.result mysql-test/suite/perfschema/r/start_server_no_socket_inst.result mysql-test/suite/perfschema/r/start_server_no_table_hdl.result mysql-test/suite/perfschema/r/start_server_no_table_inst.result mysql-test/suite/perfschema/r/start_server_no_thread_class.result mysql-test/suite/perfschema/r/start_server_no_thread_inst.result mysql-test/suite/perfschema/r/start_server_nothing.result mysql-test/suite/perfschema/r/start_server_off.result mysql-test/suite/perfschema/r/start_server_on.result mysql-test/suite/perfschema/t/dml_setup_timers.test mysql-test/suite/perfschema/t/ortho_iter.test sql/sql_parse.cc storage/perfschema/pfs.cc storage/perfschema/pfs_column_types.h storage/perfschema/pfs_events_waits.h storage/perfschema/pfs_instr.cc storage/perfschema/pfs_instr.h storage/perfschema/pfs_instr_class.cc storage/perfschema/pfs_instr_class.h storage/perfschema/pfs_timer.cc storage/perfschema/pfs_timer.h storage/perfschema/pfs_visitor.cc storage/perfschema/table_events_waits.cc storage/perfschema/table_ews_by_thread_by_event_name.cc storage/perfschema/table_ews_global_by_event_name.cc storage/perfschema/table_ews_global_by_event_name.h storage/perfschema/table_helper.h storage/perfschema/table_setup_instruments.cc storage/perfschema/table_setup_instruments.h storage/perfschema/table_setup_timers.cc === modified file 'include/mysql/psi/mysql_socket.h' --- a/include/mysql/psi/mysql_socket.h 2011-03-16 15:36:35 +0000 +++ b/include/mysql/psi/mysql_socket.h 2011-03-18 22:24:30 +0000 @@ -103,6 +103,40 @@ mysql_socket_set_state(MYSQL_SOCKET sock } /** + @def mysql_socket_set_address + Set socket descriptor and address. + @param socket nstrumented socket + @param fd socket descriptor + @param addr unformatted socket address + @param adr_len length of socket addres +*/ +static inline void +mysql_socket_set_address(MYSQL_SOCKET socket, + const struct sockaddr *addr, + socklen_t addr_len) +{ +#ifdef HAVE_PSI_INTERFACE + if (likely(PSI_server != NULL && socket.m_psi != NULL)) + PSI_server->set_socket_info(socket.m_psi, NULL, addr, addr_len); +#endif +} + +/** + @def mysql_socket_set_address + Set socket descriptor and address. + @param socket instrumented socket + @param thread instrumented owning thread +*/ +static inline void +mysql_socket_set_thread_owner(MYSQL_SOCKET socket) +{ +#ifdef HAVE_PSI_INTERFACE + if (likely(PSI_server != NULL && socket.m_psi != NULL)) + PSI_server->set_socket_thread_owner(socket.m_psi); +#endif +} + +/** @def mysql_socket_getfd MYSQL_SOCKET helper. Get socket descriptor. @param mysql_socket Instrumented socket @@ -341,17 +375,6 @@ inline_mysql_end_socket_wait(struct PSI_ inline_mysql_socket_shutdown(FD, H) #endif -/** Not supported by P_S */ -#if 0 - #ifdef HAVE_PSI_INTERFACE - #define mysql_socket_accept4(K, FD, A, LP, FL) \ - inline_mysql_socket_accept4(K, __FILE__, __LINE__, FD, A, LP, FL) - #else - #define mysql_socket_accept4(FD, A, LP, FL) \ - inline_mysql_socket_accept4(FD, A, LP, FL) - #endif -#endif - /** Not supported by Winsock */ #ifdef __WIN__ @@ -412,10 +435,11 @@ inline_mysql_socket_socket #ifdef HAVE_PSI_INTERFACE mysql_socket.m_psi = PSI_server ? - PSI_server->init_socket(key, &mysql_socket.fd) : NULL; + PSI_server->init_socket(key, + (const my_socket*)&mysql_socket.fd) : NULL; if (likely(PSI_server != NULL && mysql_socket.m_psi != NULL - && mysql_socket.fd != -1)) + && mysql_socket.fd != INVALID_SOCKET)) PSI_server->set_socket_info(mysql_socket.m_psi, &mysql_socket.fd, NULL, 0); #endif return mysql_socket; @@ -447,8 +471,9 @@ inline_mysql_socket_bind result= bind(mysql_socket.fd, addr, len); #ifdef HAVE_PSI_INTERFACE - if (likely(PSI_server != NULL && result == 0)) - PSI_server->set_socket_address(mysql_socket.m_psi, addr, len); + if (likely(PSI_server != NULL && mysql_socket.m_psi != NULL + && result == 0)) + PSI_server->set_socket_info(mysql_socket.m_psi, NULL, addr, len); if (likely(locker != NULL)) PSI_server->end_socket_wait(locker, (size_t)0); @@ -801,6 +826,7 @@ inline_mysql_socket_accept MYSQL_SOCKET socket_listen, struct sockaddr *addr, socklen_t *addr_len) { MYSQL_SOCKET socket_accept = MYSQL_INVALID_SOCKET; + socklen_t addr_length= (addr_len != NULL) ? *addr_len : 0; socket_accept.fd= accept(socket_listen.fd, addr, addr_len); @@ -810,9 +836,9 @@ inline_mysql_socket_accept PSI_server->init_socket(key, (const my_socket*)&socket_accept.fd) : NULL; if (likely(PSI_server != NULL && socket_accept.m_psi != NULL - && socket_accept.fd != -1)) + && socket_accept.fd != INVALID_SOCKET)) PSI_server->set_socket_info(socket_accept.m_psi, &socket_accept.fd, - addr, addr_len); + addr, addr_length); #endif return socket_accept; } @@ -881,53 +907,6 @@ inline_mysql_socket_shutdown return result; } -/** Not supported by P_S */ - -#if 0 - -/** mysql_socket_accept4 */ - - static inline MYSQL_SOCKET - inline_mysql_socket_accept4 - ( - #ifdef HAVE_PSI_INTERFACE - PSI_socket_key key, const char *src_file, uint src_line, - #endif - MYSQL_SOCKET socket_listen, const struct sockaddr *addr, socklen_t *addr_len, int flags) - { - MYSQL_SOCKET socket_accept = {0, NULL}; - #ifdef HAVE_PSI_INTERFACE - struct PSI_socket_locker *locker= NULL; - PSI_socket_locker_state state; - - socket_accept.m_psi = PSI_server ? PSI_server->init_socket(key, NULL)// &socket_accept.fd) // TBD: check this - : NULL; - if (likely(PSI_server != NULL && socket_accept.m_psi != NULL)) - { - locker= PSI_server->get_thread_socket_locker(socket_accept.m_psi, - PSI_SOCKET_CONNECT); - if (likely(locker !=NULL)) - PSI_server->start_socket_wait(locker, (size_t)0, src_file, src_line); - } - #endif - - socket_accept.fd= accept4(socket_listen.fd, addr, addr_len, flags); - - #ifdef HAVE_PSI_INTERFACE - /** Set socket address info */ - if (likely(PSI_server != NULL && socket_accept.m_psi != NULL - && socket_accept.fd != -1)) - PSI_server->set_socket_info(socket_accept.m_psi, &socket_accept.fd, addr, - addr_len); - if (likely(locker != NULL)) - PSI_server->end_socket_wait(locker, (size_t)0); - #endif - return socket_accept; - } - -#endif // unsupported - - /** Not supported by Winsock */ #ifndef __WIN__ @@ -1058,10 +1037,11 @@ inline_mysql_socket_socketpair mysql_socket[1].fd = fds[1]; #ifdef HAVE_PSI_INTERFACE - if (likely(mysql_socket[0].m_psi != NULL && mysql_socket[1].m_psi != NULL)) + if (likely(PSI_server != NULL && mysql_socket[0].m_psi != NULL + && mysql_socket[1].m_psi != NULL)) { - PSI_server->set_socket_descriptor(mysql_socket[0].m_psi, fds[0]); - PSI_server->set_socket_descriptor(mysql_socket[1].m_psi, fds[1]); + PSI_server->set_socket_info(mysql_socket[0].m_psi, &fds[0], NULL, 0); + PSI_server->set_socket_info(mysql_socket[1].m_psi, &fds[1], NULL, 0); } #endif return result; === modified file 'include/mysql/psi/psi.h' --- a/include/mysql/psi/psi.h 2011-03-16 15:36:35 +0000 +++ b/include/mysql/psi/psi.h 2011-03-19 01:36:46 +0000 @@ -275,9 +275,9 @@ enum PSI_table_lock_operation enum PSI_socket_state { /** Idle, waiting for the next command. */ - PSI_SOCKET_STATE_IDLE= 0, + PSI_SOCKET_STATE_IDLE= 1, /** Active, executing a command. */ - PSI_SOCKET_STATE_ACTIVE= 1 + PSI_SOCKET_STATE_ACTIVE= 2 }; /** Operation performed on an instrumented socket. */ @@ -1349,42 +1349,23 @@ typedef void (*set_socket_state_v1_t)(st enum PSI_socket_state state); /** - Set the socket descriptor for an instrumented socket. - @param socket the instrumented socket - @param fd socket descriptor - */ -typedef void (*set_socket_descriptor_v1_t)(struct PSI_socket *socket, - uint fd); - -/** - Set the socket address for an instrumented socket. - @param socket the instrumented socket - @param addr socket address information - */ -typedef void (*set_socket_address_v1_t)(struct PSI_socket *socket, - const struct sockaddr * addr, - socklen_t addr_len); - -/** Set the socket info for an instrumented socket. - @param socket the instrumented socket - @param fd the socket descriptor - @param addr the socket ip address - @param addr_len length of socket ip address - @param thread_id associated thread id + @param socket the instrumented socket + @param fd the socket descriptor + @param addr the socket ip address + @param addr_len length of socket ip address + @param thread_id associated thread id */ typedef void (*set_socket_info_v1_t)(struct PSI_socket *socket, - my_socket *fd, + const my_socket *fd, const struct sockaddr *addr, - socklen_t *addr_len); + socklen_t addr_len); /** - Set the id of the thread owning the socket. + Bind a socket to the thread that owns it. @param socket instrumented socket - @param thread instrumented thread */ -typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket, - struct PSI_thread *thread); +typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket); /** Performance Schema Interface, version 1. @@ -1531,10 +1512,6 @@ struct PSI_v1 end_socket_wait_v1_t end_socket_wait; /** @sa set_socket_state_v1_t. */ set_socket_state_v1_t set_socket_state; - /** @sa set_socket_descriptor_v1_t. */ - set_socket_descriptor_v1_t set_socket_descriptor; - /** @sa set_socket_address_v1_t. */ - set_socket_address_v1_t set_socket_address; /** @sa set_socket_info_v1_t. */ set_socket_info_v1_t set_socket_info; /** @sa set_socket_thread_owner_v1_t. */ === modified file 'include/mysql/psi/psi_abi_v1.h.pp' --- a/include/mysql/psi/psi_abi_v1.h.pp 2011-03-16 15:36:35 +0000 +++ b/include/mysql/psi/psi_abi_v1.h.pp 2011-03-19 01:46:46 +0000 @@ -70,8 +70,8 @@ enum PSI_table_lock_operation }; enum PSI_socket_state { - PSI_SOCKET_STATE_IDLE= 0, - PSI_SOCKET_STATE_ACTIVE= 1 + PSI_SOCKET_STATE_IDLE= 1, + PSI_SOCKET_STATE_ACTIVE= 2 }; enum PSI_socket_operation { @@ -354,17 +354,11 @@ typedef void (*end_socket_wait_v1_t) (struct PSI_socket_locker *locker, size_t count); typedef void (*set_socket_state_v1_t)(struct PSI_socket *socket, enum PSI_socket_state state); -typedef void (*set_socket_descriptor_v1_t)(struct PSI_socket *socket, - uint fd); -typedef void (*set_socket_address_v1_t)(struct PSI_socket *socket, - const struct sockaddr * addr, - socklen_t addr_len); typedef void (*set_socket_info_v1_t)(struct PSI_socket *socket, - my_socket *fd, + const my_socket *fd, const struct sockaddr *addr, - socklen_t *addr_len); -typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket, - struct PSI_thread *thread); + socklen_t addr_len); +typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket); struct PSI_v1 { register_mutex_v1_t register_mutex; @@ -437,8 +431,6 @@ struct PSI_v1 start_socket_wait_v1_t start_socket_wait; end_socket_wait_v1_t end_socket_wait; set_socket_state_v1_t set_socket_state; - set_socket_descriptor_v1_t set_socket_descriptor; - set_socket_address_v1_t set_socket_address; set_socket_info_v1_t set_socket_info; set_socket_thread_owner_v1_t set_socket_thread_owner; }; === modified file 'include/mysql/psi/psi_abi_v2.h.pp' --- a/include/mysql/psi/psi_abi_v2.h.pp 2011-03-16 15:36:35 +0000 +++ b/include/mysql/psi/psi_abi_v2.h.pp 2011-03-19 01:46:46 +0000 @@ -70,8 +70,8 @@ enum PSI_table_lock_operation }; enum PSI_socket_state { - PSI_SOCKET_STATE_IDLE= 0, - PSI_SOCKET_STATE_ACTIVE= 1 + PSI_SOCKET_STATE_IDLE= 1, + PSI_SOCKET_STATE_ACTIVE= 2 }; enum PSI_socket_operation { === modified file 'mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result' --- a/mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result 2011-03-11 20:17:01 +0000 +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result 2011-03-19 02:29:24 +0000 @@ -18,23 +18,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed show tables like "user_table"; Tables_in_performance_schema (user_table) @@ -57,23 +57,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed show tables like "user_view"; Tables_in_performance_schema (user_view) @@ -94,23 +94,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed select name from mysql.proc where db='performance_schema'; name @@ -131,23 +131,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed select name from mysql.proc where db='performance_schema'; name @@ -168,23 +168,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed select name from mysql.event where db='performance_schema'; name === modified file 'mysql-test/suite/perfschema/r/pfs_upgrade_lc1.result' --- a/mysql-test/suite/perfschema/r/pfs_upgrade_lc1.result 2011-03-11 20:14:48 +0000 +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_lc1.result 2011-03-19 02:27:26 +0000 @@ -18,23 +18,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed show tables like "user_table"; Tables_in_performance_schema (user_table) @@ -57,23 +57,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed show tables like "user_view"; Tables_in_performance_schema (user_view) @@ -94,23 +94,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed select name from mysql.proc where db='performance_schema'; name @@ -131,23 +131,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed select name from mysql.proc where db='performance_schema'; name @@ -168,23 +168,23 @@ ERROR 1050 (42S01) at line 177: Table 'e ERROR 1050 (42S01) at line 186: Table 'file_instances' already exists ERROR 1050 (42S01) at line 197: Table 'file_summary_by_event_name' already exists ERROR 1050 (42S01) at line 209: Table 'file_summary_by_instance' already exists -ERROR 1050 (42S01) at line 221: Table 'socket_instances' already exists -ERROR 1050 (42S01) at line 288: Table 'socket_summary_by_instance' already exists -ERROR 1050 (42S01) at line 353: Table 'socket_summary_by_event_name' already exists -ERROR 1050 (42S01) at line 362: Table 'mutex_instances' already exists -ERROR 1050 (42S01) at line 376: Table 'objects_summary_global_by_type' already exists -ERROR 1050 (42S01) at line 386: Table 'performance_timers' already exists -ERROR 1050 (42S01) at line 396: Table 'rwlock_instances' already exists -ERROR 1050 (42S01) at line 405: Table 'setup_actors' already exists -ERROR 1050 (42S01) at line 413: Table 'setup_consumers' already exists -ERROR 1050 (42S01) at line 422: Table 'setup_instruments' already exists -ERROR 1050 (42S01) at line 432: Table 'setup_objects' already exists -ERROR 1050 (42S01) at line 440: Table 'setup_timers' already exists -ERROR 1050 (42S01) at line 485: Table 'table_io_waits_summary_by_index_usage' already exists -ERROR 1050 (42S01) at line 529: Table 'table_io_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 608: Table 'table_lock_waits_summary_by_table' already exists -ERROR 1050 (42S01) at line 628: Table 'threads' already exists -ERROR 1644 (HY000) at line 1048: Unexpected content found in the performance_schema database. +ERROR 1050 (42S01) at line 222: Table 'socket_instances' already exists +ERROR 1050 (42S01) at line 253: Table 'socket_summary_by_instance' already exists +ERROR 1050 (42S01) at line 282: Table 'socket_summary_by_event_name' already exists +ERROR 1050 (42S01) at line 291: Table 'mutex_instances' already exists +ERROR 1050 (42S01) at line 305: Table 'objects_summary_global_by_type' already exists +ERROR 1050 (42S01) at line 315: Table 'performance_timers' already exists +ERROR 1050 (42S01) at line 325: Table 'rwlock_instances' already exists +ERROR 1050 (42S01) at line 334: Table 'setup_actors' already exists +ERROR 1050 (42S01) at line 342: Table 'setup_consumers' already exists +ERROR 1050 (42S01) at line 351: Table 'setup_instruments' already exists +ERROR 1050 (42S01) at line 361: Table 'setup_objects' already exists +ERROR 1050 (42S01) at line 369: Table 'setup_timers' already exists +ERROR 1050 (42S01) at line 414: Table 'table_io_waits_summary_by_index_usage' already exists +ERROR 1050 (42S01) at line 458: Table 'table_io_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 537: Table 'table_lock_waits_summary_by_table' already exists +ERROR 1050 (42S01) at line 557: Table 'threads' already exists +ERROR 1644 (HY000) at line 977: Unexpected content found in the performance_schema database. FATAL ERROR: Upgrade failed select name from mysql.event where db='performance_schema'; name === modified file 'mysql-test/suite/perfschema/r/start_server_nothing.result' --- a/mysql-test/suite/perfschema/r/start_server_nothing.result 2011-03-16 15:36:35 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_nothing.result 2011-03-19 02:22:58 +0000 @@ -136,11 +136,11 @@ EVENT_NAME COUNT_READ COUNT_WRITE SUM_NU select * from performance_schema.file_summary_by_instance; FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE select * from performance_schema.socket_instances; -EVENT_NAME OBJECT_INSTANCE_BEGIN THREAD_ID SOCKET_ID IP PORT +EVENT_NAME OBJECT_INSTANCE_BEGIN THREAD_ID SOCKET_ID IP PORT STATE select * from performance_schema.socket_summary_by_instance; -EVENT_NAME OBJECT_INSTANCE_BEGIN OBJECT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT COUNT_READ SUM_TIMER_READ MIN_TIMER_READ AVG_TIMER_READ MAX_TIMER_READ SUM_NUMBER_OF_BYTES_READ COUNT_WRITE SUM_TIMER_WRITE MIN_TIMER_WRITE AVG_TIMER_WRITE MAX_TIMER_WRITE SUM_NUMBER_OF_BYTES_WRITE COUNT_RECV SUM_TIMER_RECV MIN_TIMER_RECV AVG_TIMER_RECV MAX_TIMER_RECV SUM_NUMBER_OF_BYTES_RECV COUNT_SEND SUM_TIMER_SEND MIN_TIMER_SEND AVG_TIMER_SEND MAX_TIMER_SEND SUM_NUMBER_OF_BYTES_SEND COUNT_RECVFROM SUM_TIMER_RECVFROM MIN_TIMER_RECVFROM AVG_TIMER_RECVFROM MAX_TIMER_RECVFROM SUM_NUMBER_OF_BYTES_RECVFROM COUNT_SENDTO SUM_TIMER_SENDTO MIN_TIMER_SENDTO AVG_TIMER_SENDTO MAX_TIMER_SENDTO SUM_NUMBER_OF_BYTES_SENDTO COUNT_RECVMSG SUM_TIMER_RECVMSG MIN_TIMER_RECVMSG AVG_TIMER_RECVMSG MAX_TIMER_RECVMSG SUM_NUMBER_OF_BYTES_RECVMSG COUNT_SENDMSG SUM_TIMER_SENDMSG MIN_TIMER_SENDMSG AVG_TIMER_SENDMSG MAX_TIMER_SENDMSG SUM_NUMBER_OF_BYTES_SENDMSG COUNT_MISC SUM_TIMER_MISC M IN_TIMER_MISC AVG_TIMER_MISC MAX_TIMER_MISC +EVENT_NAME OBJECT_INSTANCE_BEGIN OBJECT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT COUNT_READ SUM_TIMER_READ MIN_TIMER_READ AVG_TIMER_READ MAX_TIMER_READ SUM_NUMBER_OF_BYTES_READ COUNT_WRITE SUM_TIMER_WRITE MIN_TIMER_WRITE AVG_TIMER_WRITE MAX_TIMER_WRITE SUM_NUMBER_OF_BYTES_WRITE COUNT_MISC SUM_TIMER_MISC MIN_TIMER_MISC AVG_TIMER_MISC MAX_TIMER_MISC select * from performance_schema.socket_summary_by_event_name; -EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT COUNT_READ SUM_TIMER_READ MIN_TIMER_READ AVG_TIMER_READ MAX_TIMER_READ SUM_NUMBER_OF_BYTES_READ COUNT_WRITE SUM_TIMER_WRITE MIN_TIMER_WRITE AVG_TIMER_WRITE MAX_TIMER_WRITE SUM_NUMBER_OF_BYTES_WRITE COUNT_RECV SUM_TIMER_RECV MIN_TIMER_RECV AVG_TIMER_RECV MAX_TIMER_RECV SUM_NUMBER_OF_BYTES_RECV COUNT_SEND SUM_TIMER_SEND MIN_TIMER_SEND AVG_TIMER_SEND MAX_TIMER_SEND SUM_NUMBER_OF_BYTES_SEND COUNT_RECVFROM SUM_TIMER_RECVFROM MIN_TIMER_RECVFROM AVG_TIMER_RECVFROM MAX_TIMER_RECVFROM SUM_NUMBER_OF_BYTES_RECVFROM COUNT_SENDTO SUM_TIMER_SENDTO MIN_TIMER_SENDTO AVG_TIMER_SENDTO MAX_TIMER_SENDTO SUM_NUMBER_OF_BYTES_SENDTO COUNT_RECVMSG SUM_TIMER_RECVMSG MIN_TIMER_RECVMSG AVG_TIMER_RECVMSG MAX_TIMER_RECVMSG SUM_NUMBER_OF_BYTES_RECVMSG COUNT_SENDMSG SUM_TIMER_SENDMSG MIN_TIMER_SENDMSG AVG_TIMER_SENDMSG MAX_TIMER_SENDMSG SUM_NUMBER_OF_BYTES_SENDMSG COUNT_MISC SUM_TIMER_MISC MIN_TIMER_MISC AVG_TIMER_MISC MAX_T IMER_MISC +EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT COUNT_READ SUM_TIMER_READ MIN_TIMER_READ AVG_TIMER_READ MAX_TIMER_READ SUM_NUMBER_OF_BYTES_READ COUNT_WRITE SUM_TIMER_WRITE MIN_TIMER_WRITE AVG_TIMER_WRITE MAX_TIMER_WRITE SUM_NUMBER_OF_BYTES_WRITE COUNT_MISC SUM_TIMER_MISC MIN_TIMER_MISC AVG_TIMER_MISC MAX_TIMER_MISC select * from performance_schema.mutex_instances; NAME OBJECT_INSTANCE_BEGIN LOCKED_BY_THREAD_ID select * from performance_schema.threads; === modified file 'scripts/mysql_system_tables.sql' --- a/scripts/mysql_system_tables.sql 2011-03-16 08:58:26 +0000 +++ b/scripts/mysql_system_tables.sql 2011-03-19 01:36:46 +0000 @@ -383,10 +383,11 @@ DROP PREPARE stmt; SET @cmd="CREATE TABLE performance_schema.socket_instances(" "EVENT_NAME VARCHAR(128) not null," "OBJECT_INSTANCE_BEGIN BIGINT unsigned not null," - "THREAD_ID INTEGER not null," + "THREAD_ID INTEGER," "SOCKET_ID INTEGER not null," "IP VARCHAR(64) not null," - "PORT INTEGER not null" + "PORT INTEGER not null," + "STATE ENUM('IDLE','ACTIVE') not null" ")ENGINE=PERFORMANCE_SCHEMA;"; SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0'); @@ -419,42 +420,6 @@ SET @cmd="CREATE TABLE performance_schem "AVG_TIMER_WRITE BIGINT unsigned not null," "MAX_TIMER_WRITE BIGINT unsigned not null," "SUM_NUMBER_OF_BYTES_WRITE BIGINT unsigned not null," - "COUNT_RECV BIGINT unsigned not null," - "SUM_TIMER_RECV BIGINT unsigned not null," - "MIN_TIMER_RECV BIGINT unsigned not null," - "AVG_TIMER_RECV BIGINT unsigned not null," - "MAX_TIMER_RECV BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_RECV BIGINT unsigned not null," - "COUNT_SEND BIGINT unsigned not null," - "SUM_TIMER_SEND BIGINT unsigned not null," - "MIN_TIMER_SEND BIGINT unsigned not null," - "AVG_TIMER_SEND BIGINT unsigned not null," - "MAX_TIMER_SEND BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_SEND BIGINT unsigned not null," - "COUNT_RECVFROM BIGINT unsigned not null," - "SUM_TIMER_RECVFROM BIGINT unsigned not null," - "MIN_TIMER_RECVFROM BIGINT unsigned not null," - "AVG_TIMER_RECVFROM BIGINT unsigned not null," - "MAX_TIMER_RECVFROM BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_RECVFROM BIGINT unsigned not null," - "COUNT_SENDTO BIGINT unsigned not null," - "SUM_TIMER_SENDTO BIGINT unsigned not null," - "MIN_TIMER_SENDTO BIGINT unsigned not null," - "AVG_TIMER_SENDTO BIGINT unsigned not null," - "MAX_TIMER_SENDTO BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_SENDTO BIGINT unsigned not null," - "COUNT_RECVMSG BIGINT unsigned not null," - "SUM_TIMER_RECVMSG BIGINT unsigned not null," - "MIN_TIMER_RECVMSG BIGINT unsigned not null," - "AVG_TIMER_RECVMSG BIGINT unsigned not null," - "MAX_TIMER_RECVMSG BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_RECVMSG BIGINT unsigned not null," - "COUNT_SENDMSG BIGINT unsigned not null," - "SUM_TIMER_SENDMSG BIGINT unsigned not null," - "MIN_TIMER_SENDMSG BIGINT unsigned not null," - "AVG_TIMER_SENDMSG BIGINT unsigned not null," - "MAX_TIMER_SENDMSG BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_SENDMSG BIGINT unsigned not null," "COUNT_MISC BIGINT unsigned not null," "SUM_TIMER_MISC BIGINT unsigned not null," "MIN_TIMER_MISC BIGINT unsigned not null," @@ -490,42 +455,6 @@ SET @cmd="CREATE TABLE performance_schem "AVG_TIMER_WRITE BIGINT unsigned not null," "MAX_TIMER_WRITE BIGINT unsigned not null," "SUM_NUMBER_OF_BYTES_WRITE BIGINT unsigned not null," - "COUNT_RECV BIGINT unsigned not null," - "SUM_TIMER_RECV BIGINT unsigned not null," - "MIN_TIMER_RECV BIGINT unsigned not null," - "AVG_TIMER_RECV BIGINT unsigned not null," - "MAX_TIMER_RECV BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_RECV BIGINT unsigned not null," - "COUNT_SEND BIGINT unsigned not null," - "SUM_TIMER_SEND BIGINT unsigned not null," - "MIN_TIMER_SEND BIGINT unsigned not null," - "AVG_TIMER_SEND BIGINT unsigned not null," - "MAX_TIMER_SEND BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_SEND BIGINT unsigned not null," - "COUNT_RECVFROM BIGINT unsigned not null," - "SUM_TIMER_RECVFROM BIGINT unsigned not null," - "MIN_TIMER_RECVFROM BIGINT unsigned not null," - "AVG_TIMER_RECVFROM BIGINT unsigned not null," - "MAX_TIMER_RECVFROM BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_RECVFROM BIGINT unsigned not null," - "COUNT_SENDTO BIGINT unsigned not null," - "SUM_TIMER_SENDTO BIGINT unsigned not null," - "MIN_TIMER_SENDTO BIGINT unsigned not null," - "AVG_TIMER_SENDTO BIGINT unsigned not null," - "MAX_TIMER_SENDTO BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_SENDTO BIGINT unsigned not null," - "COUNT_RECVMSG BIGINT unsigned not null," - "SUM_TIMER_RECVMSG BIGINT unsigned not null," - "MIN_TIMER_RECVMSG BIGINT unsigned not null," - "AVG_TIMER_RECVMSG BIGINT unsigned not null," - "MAX_TIMER_RECVMSG BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_RECVMSG BIGINT unsigned not null," - "COUNT_SENDMSG BIGINT unsigned not null," - "SUM_TIMER_SENDMSG BIGINT unsigned not null," - "MIN_TIMER_SENDMSG BIGINT unsigned not null," - "AVG_TIMER_SENDMSG BIGINT unsigned not null," - "MAX_TIMER_SENDMSG BIGINT unsigned not null," - "SUM_NUMBER_OF_BYTES_SENDMSG BIGINT unsigned not null," "COUNT_MISC BIGINT unsigned not null," "SUM_TIMER_MISC BIGINT unsigned not null," "MIN_TIMER_MISC BIGINT unsigned not null," === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2011-03-16 08:58:26 +0000 +++ b/sql/mysqld.cc 2011-03-18 22:24:30 +0000 @@ -1819,7 +1819,11 @@ static void network_init(void) { ip_sock= mysql_socket_socket(key_socket_tcpip, a->ai_family, a->ai_socktype, a->ai_protocol); if (mysql_socket_getfd(ip_sock) != INVALID_SOCKET) + { + mysql_socket_set_address(ip_sock, a->ai_addr, a->ai_addrlen); //TBD: Refine api? break; + } + } if (mysql_socket_getfd(ip_sock) == INVALID_SOCKET) === modified file 'sql/sql_connect.cc' --- a/sql/sql_connect.cc 2011-02-18 13:25:36 +0000 +++ b/sql/sql_connect.cc 2011-03-18 22:24:30 +0000 @@ -764,6 +764,8 @@ void do_handle_one_connection(THD *thd_a prepare_new_connection_state(thd); + mysql_socket_set_thread_owner(net->vio->mysql_socket); + while (!net->error && net->vio != 0 && !(thd->killed == THD::KILL_CONNECTION)) { === modified file 'storage/perfschema/pfs.cc' --- a/storage/perfschema/pfs.cc 2011-03-16 15:36:35 +0000 +++ b/storage/perfschema/pfs.cc 2011-03-18 23:37:18 +0000 @@ -3787,26 +3787,19 @@ static void end_socket_wait_v1(PSI_socke switch (state->m_operation) { + /** Group read operations */ case PSI_SOCKET_RECV: + case PSI_SOCKET_RECVFROM: + case PSI_SOCKET_RECVMSG: byte_stat= &socket->m_socket_stat.m_io_stat.m_recv; break; + /** Group write operations */ case PSI_SOCKET_SEND: - byte_stat= &socket->m_socket_stat.m_io_stat.m_send; - break; - case PSI_SOCKET_RECVFROM: - byte_stat= &socket->m_socket_stat.m_io_stat.m_recvfrom; - break; case PSI_SOCKET_SENDTO: - byte_stat= &socket->m_socket_stat.m_io_stat.m_sendto; - break; - case PSI_SOCKET_RECVMSG: - byte_stat= &socket->m_socket_stat.m_io_stat.m_recvmsg; - break; case PSI_SOCKET_SENDMSG: - byte_stat= &socket->m_socket_stat.m_io_stat.m_sendmsg; + byte_stat= &socket->m_socket_stat.m_io_stat.m_send; break; - - /** These operations are grouped as 'miscellaneous' */ + /** Group remainging operations as miscellaneous */ case PSI_SOCKET_CONNECT: case PSI_SOCKET_CREATE: case PSI_SOCKET_BIND: @@ -3895,76 +3888,31 @@ static void set_socket_state_v1(PSI_sock pfs->m_idle= (state == PSI_SOCKET_STATE_IDLE); } -static void set_socket_descriptor_v1(PSI_socket *socket, uint fd) -{ - DBUG_ASSERT(socket); - PFS_socket *pfs= reinterpret_cast(socket); - pfs->m_fd= fd; -} - - -static void set_socket_address_v1(PSI_socket *socket, - const struct sockaddr *addr, - socklen_t addr_len) -{ -#if 0 - DBUG_ASSERT(socket); - PFS_socket *pfs= reinterpret_cast(socket); - - memset(pfs->m_ip, 0, pfs->m_ip_length); - - switch (addr->sa_family) - { - case AF_INET: - { - struct sockaddr_in *sa4= (struct sockaddr_in *)(addr); - pfs->m_ip_length= INET_ADDRSTRLEN; - inet_ntop(AF_INET, &(sa4->sin_addr), pfs->m_ip, pfs->m_ip_length); - pfs->m_port= ntohs(sa4->sin_port); - } - break; - - case AF_INET6: - { - struct sockaddr_in6 *sa6= (struct sockaddr_in6 *)(addr); - pfs->m_ip_length= INET6_ADDRSTRLEN; - inet_ntop(AF_INET6, &(sa6->sin6_addr), pfs->m_ip, pfs->m_ip_length); - pfs->m_port= ntohs(sa6->sin6_port); - } - break; - - default: - break; - } - - /* Adjust IP address string length */ - pfs->m_ip_length= strlen((const char*)pfs->m_ip); -#endif -} - +/** + Set socket descriptor and addres info. +*/ static void set_socket_info_v1(PSI_socket *socket, - my_socket *fd, + const my_socket *fd, const struct sockaddr *addr, - socklen_t *addr_len) + socklen_t addr_len) { DBUG_ASSERT(socket); PFS_socket *pfs= reinterpret_cast(socket); /** Set socket descriptor */ - if (likely(fd != NULL)) + if (fd != NULL) pfs->m_fd= *fd; /** Set raw socket address and length */ - if (likely(addr != NULL && addr_len != NULL)) + if (likely(addr != NULL && addr_len > 0)) { - pfs->m_sock_len= *addr_len; + pfs->m_addr_len= addr_len; /** Restrict address length to size of struct */ - if (unlikely(pfs->m_sock_len > sizeof(struct sockaddr))) - pfs->m_sock_len= sizeof(struct sockaddr); + if (unlikely(pfs->m_addr_len > sizeof(struct sockaddr))) + pfs->m_addr_len= sizeof(struct sockaddr); - if (likely(pfs->m_sock_len > 0)) - memcpy(&pfs->m_sock_addr, addr, pfs->m_sock_len); + memcpy(&pfs->m_sock_addr, addr, pfs->m_addr_len); } } @@ -3972,9 +3920,9 @@ static void set_socket_info_v1(PSI_socke Implementation of the socket instrumentation interface. @sa PSI_v1::set_socket_info. */ -static void set_socket_thread_owner_v1(PSI_socket *socket, PSI_thread *thread) +static void set_socket_thread_owner_v1(PSI_socket *socket) { - if (likely(socket != NULL && thread != NULL)) + if (likely(socket != NULL)) { PFS_socket *pfs_socket= reinterpret_cast(socket); pfs_socket->m_thread_owner= my_pthread_getspecific_ptr(PFS_thread*, THR_PFS); @@ -4056,8 +4004,6 @@ PSI_v1 PFS_v1= start_socket_wait_v1, end_socket_wait_v1, set_socket_state_v1, - set_socket_descriptor_v1, - set_socket_address_v1, set_socket_info_v1, set_socket_thread_owner_v1 }; === modified file 'storage/perfschema/pfs_global.cc' --- a/storage/perfschema/pfs_global.cc 2011-03-09 21:28:05 +0000 +++ b/storage/perfschema/pfs_global.cc 2011-03-18 22:24:30 +0000 @@ -107,7 +107,7 @@ const char *inet_ntop(int af, const void /** Convert raw ip address into readable format */ // TBD: review this -uint pfs_set_socket_address(char *host, +uint pfs_get_socket_address(char *host, uint host_len, uint *port, const struct sockaddr *src_addr, === modified file 'storage/perfschema/pfs_global.h' --- a/storage/perfschema/pfs_global.h 2011-03-09 21:28:05 +0000 +++ b/storage/perfschema/pfs_global.h 2011-03-18 22:24:30 +0000 @@ -29,7 +29,7 @@ void *pfs_malloc(size_t size, myf flags) reinterpret_cast (pfs_malloc((n) * sizeof(T), (f))) void pfs_free(void *ptr); -uint pfs_set_socket_address(char *host, +uint pfs_get_socket_address(char *host, uint host_len, uint *port, const struct sockaddr *src_addr, === modified file 'storage/perfschema/pfs_instr.h' --- a/storage/perfschema/pfs_instr.h 2011-03-16 15:36:35 +0000 +++ b/storage/perfschema/pfs_instr.h 2011-03-18 22:24:30 +0000 @@ -209,7 +209,7 @@ struct PFS_socket : public PFS_instr /** Raw socket address */ struct sockaddr m_sock_addr; /** Length of address */ - socklen_t m_sock_len; + socklen_t m_addr_len; /** Socket ip address, IPV4 or IPV6 */ // TBD: Remove? char m_ip[INET6_ADDRSTRLEN]; /** Socket ip address length in bytes */ === modified file 'storage/perfschema/table_helper.h' --- a/storage/perfschema/table_helper.h 2011-03-16 15:36:35 +0000 +++ b/storage/perfschema/table_helper.h 2011-03-18 23:37:18 +0000 @@ -316,49 +316,22 @@ struct PFS_socket_io_stat_row { PFS_byte_stat_row m_recv; PFS_byte_stat_row m_send; - PFS_byte_stat_row m_recvfrom; - PFS_byte_stat_row m_sendto; - PFS_byte_stat_row m_recvmsg; - PFS_byte_stat_row m_sendmsg; PFS_byte_stat_row m_misc; - PFS_byte_stat_row m_all_read; - PFS_byte_stat_row m_all_write; PFS_byte_stat_row m_all; inline void set(time_normalizer *normalizer, const PFS_socket_io_stat *stat) { - PFS_byte_stat all_read; - PFS_byte_stat all_write; PFS_byte_stat all; - /* Combine receive operations */ m_recv.set(normalizer, &stat->m_recv); - m_recvfrom.set(normalizer, &stat->m_recvfrom); - m_recvmsg.set(normalizer, &stat->m_recvmsg); - - all_read.aggregate(&stat->m_recv); - all_read.aggregate(&stat->m_recvfrom); - all_read.aggregate(&stat->m_recvmsg); - - /* Combine send operations */ m_send.set(normalizer, &stat->m_send); - m_sendto.set(normalizer, &stat->m_sendto); - m_sendmsg.set(normalizer, &stat->m_sendmsg); - - all_write.aggregate(&stat->m_send); - all_write.aggregate(&stat->m_sendto); - all_write.aggregate(&stat->m_sendmsg); - - /* Combine row values for miscellaneous socket operations */ m_misc.set(normalizer, &stat->m_misc); - /* Combine timer stats for all operations */ - all.aggregate(&all_read); - all.aggregate(&all_write); + /* Combine stats for all operations */ + all.aggregate(&stat->m_recv); + all.aggregate(&stat->m_send); all.aggregate(&stat->m_misc); - m_all_read.set(normalizer, &all_read); - m_all_write.set(normalizer, &all_write); m_all.set(normalizer, &all); } }; === modified file 'storage/perfschema/table_socket_instances.cc' --- a/storage/perfschema/table_socket_instances.cc 2011-03-14 16:11:25 +0000 +++ b/storage/perfschema/table_socket_instances.cc 2011-03-19 02:22:58 +0000 @@ -59,12 +59,17 @@ static const TABLE_FIELD_TYPE field_type { C_STRING_WITH_LEN("PORT") }, { C_STRING_WITH_LEN("int(11)") }, { NULL, 0} + }, + { + { C_STRING_WITH_LEN("STATE") }, + { C_STRING_WITH_LEN("enum('IDLE','ACTIVE')") }, + { NULL, 0} } }; TABLE_FIELD_DEF table_socket_instances::m_field_def= -{ 6, field_types }; +{ 7, field_types }; PFS_engine_table_share table_socket_instances::m_share= @@ -148,18 +153,22 @@ void table_socket_instances::make_row(PF return; /** Extract ip address and port from raw address */ - m_row.m_ip_length= pfs_set_socket_address(m_row.m_ip, sizeof(m_row.m_ip), + m_row.m_ip_length= pfs_get_socket_address(m_row.m_ip, sizeof(m_row.m_ip), &m_row.m_port, - &pfs->m_sock_addr, pfs->m_sock_len); + &pfs->m_sock_addr, pfs->m_addr_len); m_row.m_event_name= safe_class->m_name; m_row.m_event_name_length= safe_class->m_name_length; m_row.m_identity= pfs->m_identity; m_row.m_fd= pfs->m_fd; - + m_row.m_state= (pfs->m_idle ? PSI_SOCKET_STATE_IDLE + : PSI_SOCKET_STATE_ACTIVE); PFS_thread *safe_thread= sanitize_thread(pfs->m_thread_owner); if (safe_thread != NULL) + { m_row.m_thread_id= safe_thread->m_thread_id; + m_row.m_thread_id_set= true; + } if (pfs->m_lock.end_optimistic_lock(&lock)) m_row_exists= true; @@ -175,9 +184,6 @@ int table_socket_instances::read_row_val if (unlikely(!m_row_exists)) return HA_ERR_RECORD_DELETED; - /* Set the null bits */ - DBUG_ASSERT(table->s->null_bytes == 0); - for (; (f= *fields) ; fields++) { if (read_all || bitmap_is_set(table->read_set, f->field_index)) @@ -191,7 +197,7 @@ int table_socket_instances::read_row_val set_field_ulonglong(f, (intptr)m_row.m_identity); break; case 2: /* THREAD_ID */ - if (m_row.m_thread_id != 0) // TBD: use flag to indicate valid thread id? + if (m_row.m_thread_id_set) set_field_ulong(f, m_row.m_thread_id); else f->set_null(); @@ -205,6 +211,9 @@ int table_socket_instances::read_row_val case 5: /* PORT */ set_field_ulong(f, m_row.m_port); break; + case 6: /* STATE */ + set_field_enum(f, m_row.m_state); + break; default: DBUG_ASSERT(false); } === modified file 'storage/perfschema/table_socket_instances.h' --- a/storage/perfschema/table_socket_instances.h 2011-03-09 21:28:05 +0000 +++ b/storage/perfschema/table_socket_instances.h 2011-03-19 01:36:46 +0000 @@ -40,6 +40,8 @@ struct row_socket_instances const void *m_identity; /** Column THREAD_ID */ uint m_thread_id; + /** True if thread_is is set */ + bool m_thread_id_set; /** Column SOCKET_ID */ uint m_fd; /** Socket ip address, IPV4 or IPV6 */ @@ -48,6 +50,10 @@ struct row_socket_instances uint m_ip_length; /** Column PORT */ uint m_port; + /** Socket state: ACTIVE or IDLE */ + PSI_socket_state m_state; + + row_socket_instances() {m_thread_id= false;} }; /** Table PERFORMANCE_SCHEMA.SOCKET_INSTANCES. */ === modified file 'storage/perfschema/table_socket_summary_by_event_name.cc' --- a/storage/perfschema/table_socket_summary_by_event_name.cc 2011-03-09 21:28:05 +0000 +++ b/storage/perfschema/table_socket_summary_by_event_name.cc 2011-03-18 23:37:18 +0000 @@ -126,198 +126,6 @@ static const TABLE_FIELD_TYPE field_type { NULL, 0} }, - /** Recv */ - { - { C_STRING_WITH_LEN("COUNT_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Send */ - { - { C_STRING_WITH_LEN("COUNT_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Recvfrom */ - { - { C_STRING_WITH_LEN("COUNT_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Sendto */ - { - { C_STRING_WITH_LEN("COUNT_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Recvmsg */ - { - { C_STRING_WITH_LEN("COUNT_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Sendmsg */ - { - { C_STRING_WITH_LEN("COUNT_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - /** Misc */ { { C_STRING_WITH_LEN("COUNT_MISC") }, @@ -348,7 +156,7 @@ static const TABLE_FIELD_TYPE field_type TABLE_FIELD_DEF table_socket_summary_by_event_name::m_field_def= -{ 59, field_types }; +{ 23, field_types }; PFS_engine_table_share table_socket_summary_by_event_name::m_share= @@ -359,7 +167,7 @@ table_socket_summary_by_event_name::m_sh NULL, /* write_row */ table_socket_summary_by_event_name::delete_all_rows, NULL, /* get_row_count */ - 1000, /* records */ // TBD: Check this + 1000, /* records */ sizeof(PFS_simple_index), &m_table_lock, &m_field_def, @@ -475,170 +283,56 @@ int table_socket_summary_by_event_name:: break; case 6: /* COUNT_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_count); - break; - case 7: /* SUM_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_sum); - break; - case 8: /* MIN_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_min); - break; - case 9: /* AVG_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_avg); - break; - case 10: /* MAX_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_max); - break; - case 11: /* SUM_NUMBER_OF_BYTES_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_bytes); - break; - - case 12: /* COUNT_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_count); - break; - case 13: /* SUM_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_sum); - break; - case 14: /* MIN_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_min); - break; - case 15: /* AVG_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_avg); - break; - case 16: /* MAX_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_max); - break; - case 17: /* SUM_NUMBER_OF_BYTES_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_bytes); - break; - - case 18: /* COUNT_RECV */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_count); break; - case 19: /* SUM_TIMER_RECV */ + case 7: /* SUM_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_sum); break; - case 20: /* MIN_TIMER_RECV */ + case 8: /* MIN_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_min); break; - case 21: /* AVG_TIMER_RECV */ + case 9: /* AVG_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_avg); break; - case 22: /* MAX_TIMER_RECV */ + case 10: /* MAX_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_max); break; - case 23: /* SUM_NUMBER_OF_BYTES_RECV */ + case 11: /* SUM_NUMBER_OF_BYTES_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_bytes); break; - case 24: /* COUNT_SEND */ + case 12: /* COUNT_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_count); break; - case 25: /* SUM_TIMER_SEND */ + case 13: /* SUM_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_sum); break; - case 26: /* MIN_TIMER_SEND */ + case 14: /* MIN_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_min); break; - case 27: /* AVG_TIMER_SEND */ + case 15: /* AVG_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_avg); break; - case 28: /* MAX_TIMER_SEND */ + case 16: /* MAX_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_max); break; - case 29: /* SUM_NUMBER_OF_BYTES_SEND */ + case 17: /* SUM_NUMBER_OF_BYTES_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_bytes); break; - case 30: /* COUNT_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_count); - break; - case 31: /* SUM_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_sum); - break; - case 32: /* MIN_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_min); - break; - case 33: /* AVG_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_avg); - break; - case 34: /* MAX_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_max); - break; - case 35: /* SUM_NUMBER_OF_BYTES_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_bytes); - break; - - case 36: /* COUNT_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_count); - break; - case 37: /* SUM_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_sum); - break; - case 38: /* MIN_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_min); - break; - case 39: /* AVG_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_avg); - break; - case 40: /* MAX_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_max); - break; - case 41: /* SUM_NUMBER_OF_BYTES_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_bytes); - break; - - case 42: /* COUNT_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_count); - break; - case 43: /* SUM_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_sum); - break; - case 44: /* MIN_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_min); - break; - case 45: /* AVG_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_avg); - break; - case 46: /* MAX_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_max); - break; - case 47: /* SUM_NUMBER_OF_BYTES_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_bytes); - break; - - case 48: /* COUNT_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_count); - break; - case 49: /* SUM_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_sum); - break; - case 50: /* MIN_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_min); - break; - case 51: /* AVG_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_avg); - break; - case 52: /* MAX_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_max); - break; - case 53: /* SUM_NUMBER_OF_BYTES_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_bytes); - break; - - case 54: /* COUNT_MISC */ + case 18: /* COUNT_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_count); break; - case 55: /* SUM_TIMER_MISC */ + case 19: /* SUM_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_sum); break; - case 56: /* MIN_TIMER_MISC */ + case 20: /* MIN_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_min); break; - case 57: /* AVG_TIMER_MISC */ + case 21: /* AVG_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_avg); break; - case 58: /* MAX_TIMER_MISC */ + case 22: /* MAX_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_max); break; === modified file 'storage/perfschema/table_socket_summary_by_instance.cc' --- a/storage/perfschema/table_socket_summary_by_instance.cc 2011-03-09 21:28:05 +0000 +++ b/storage/perfschema/table_socket_summary_by_instance.cc 2011-03-18 23:37:18 +0000 @@ -135,198 +135,6 @@ static const TABLE_FIELD_TYPE field_type { NULL, 0} }, - /** Recv */ - { - { C_STRING_WITH_LEN("COUNT_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_RECV") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Send */ - { - { C_STRING_WITH_LEN("COUNT_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_SEND") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Recvfrom */ - { - { C_STRING_WITH_LEN("COUNT_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_RECVFROM") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Sendto */ - { - { C_STRING_WITH_LEN("COUNT_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_SENDTO") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Recvmsg */ - { - { C_STRING_WITH_LEN("COUNT_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_RECVMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - - /** Sendmsg */ - { - { C_STRING_WITH_LEN("COUNT_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_SENDMSG") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - /** Misc */ { { C_STRING_WITH_LEN("COUNT_MISC") }, @@ -357,7 +165,7 @@ static const TABLE_FIELD_TYPE field_type TABLE_FIELD_DEF table_socket_summary_by_instance::m_field_def= -{ 61, field_types }; +{ 25, field_types }; PFS_engine_table_share table_socket_summary_by_instance::m_share= @@ -368,7 +176,7 @@ table_socket_summary_by_instance::m_shar NULL, /* write_row */ table_socket_summary_by_instance::delete_all_rows, NULL, /* get_row_count */ - 1000, /* records */ // TBD: Check this + 1000, /* records */ sizeof(PFS_simple_index), &m_table_lock, &m_field_def, @@ -483,7 +291,6 @@ int table_socket_summary_by_instance::re m_row.m_event_name.set_field(f); break; case 1: /* OBJECT_INSTANCE */ - // TBD: Fix set_field_ulonglong(f, (ulonglong)m_row.m_identity); break; case 2: /* OBJECT_NAME */ @@ -507,170 +314,56 @@ int table_socket_summary_by_instance::re break; case 8: /* COUNT_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_count); - break; - case 9: /* SUM_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_sum); - break; - case 10: /* MIN_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_min); - break; - case 11: /* AVG_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_avg); - break; - case 12: /* MAX_TIMER_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_waits.m_max); - break; - case 13: /* SUM_NUMBER_OF_BYTES_READ */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_read.m_bytes); - break; - - case 14: /* COUNT_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_count); - break; - case 15: /* SUM_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_sum); - break; - case 16: /* MIN_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_min); - break; - case 17: /* AVG_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_avg); - break; - case 18: /* MAX_TIMER_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_waits.m_max); - break; - case 19: /* SUM_NUMBER_OF_BYTES_WRITE */ - set_field_ulonglong(f, m_row.m_io_stat.m_all_write.m_bytes); - break; - - case 20: /* COUNT_RECV */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_count); break; - case 21: /* SUM_TIMER_RECV */ + case 9: /* SUM_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_sum); break; - case 22: /* MIN_TIMER_RECV */ + case 10: /* MIN_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_min); break; - case 23: /* AVG_TIMER_RECV */ + case 11: /* AVG_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_avg); break; - case 24: /* MAX_TIMER_RECV */ + case 12: /* MAX_TIMER_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_waits.m_max); break; - case 25: /* SUM_NUMBER_OF_BYTES_RECV */ + case 13: /* SUM_NUMBER_OF_BYTES_READ */ set_field_ulonglong(f, m_row.m_io_stat.m_recv.m_bytes); break; - case 26: /* COUNT_SEND */ + case 14: /* COUNT_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_count); break; - case 27: /* SUM_TIMER_SEND */ + case 15: /* SUM_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_sum); break; - case 28: /* MIN_TIMER_SEND */ + case 16: /* MIN_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_min); break; - case 29: /* AVG_TIMER_SEND */ + case 17: /* AVG_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_avg); break; - case 30: /* MAX_TIMER_SEND */ + case 18: /* MAX_TIMER_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_waits.m_max); break; - case 31: /* SUM_NUMBER_OF_BYTES_SEND */ + case 19: /* SUM_NUMBER_OF_BYTES_WRITE */ set_field_ulonglong(f, m_row.m_io_stat.m_send.m_bytes); break; - case 32: /* COUNT_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_count); - break; - case 33: /* SUM_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_sum); - break; - case 34: /* MIN_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_min); - break; - case 35: /* AVG_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_avg); - break; - case 36: /* MAX_TIMER_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_waits.m_max); - break; - case 37: /* SUM_NUMBER_OF_BYTES_RECVFROM */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvfrom.m_bytes); - break; - - case 38: /* COUNT_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_count); - break; - case 39: /* SUM_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_sum); - break; - case 40: /* MIN_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_min); - break; - case 41: /* AVG_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_avg); - break; - case 42: /* MAX_TIMER_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_waits.m_max); - break; - case 43: /* SUM_NUMBER_OF_BYTES_SENDTO */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendto.m_bytes); - break; - - case 44: /* COUNT_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_count); - break; - case 45: /* SUM_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_sum); - break; - case 46: /* MIN_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_min); - break; - case 47: /* AVG_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_avg); - break; - case 48: /* MAX_TIMER_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_waits.m_max); - break; - case 49: /* SUM_NUMBER_OF_BYTES_RECVMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_recvmsg.m_bytes); - break; - - case 50: /* COUNT_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_count); - break; - case 51: /* SUM_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_sum); - break; - case 52: /* MIN_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_min); - break; - case 53: /* AVG_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_avg); - break; - case 54: /* MAX_TIMER_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_waits.m_max); - break; - case 55: /* SUM_NUMBER_OF_BYTES_SENDMSG */ - set_field_ulonglong(f, m_row.m_io_stat.m_sendmsg.m_bytes); - break; - - case 56: /* COUNT_MISC */ + case 20: /* COUNT_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_count); break; - case 57: /* SUM_TIMER_MISC */ + case 21: /* SUM_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_sum); break; - case 58: /* MIN_TIMER_MISC */ + case 22: /* MIN_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_min); break; - case 59: /* AVG_TIMER_MISC */ + case 23: /* AVG_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_avg); break; - case 60: /* MAX_TIMER_MISC */ + case 24: /* MAX_TIMER_MISC */ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_max); break; default: --===============0307462653865360727== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/chris.powers@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: chris.powers@stripped # target_branch: file:///home/cpowers/work/dev/base_mysql-trunk-\ # wl4896/ # testament_sha1: e4c428ff283d310451d8d0bdd89094942acaae1c # timestamp: 2011-03-18 21:30:17 -0500 # base_revision_id: marc.alff@stripped\ # k0jcu83qimk8jh7a # # Begin bundle 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 /vUwn/i7kinChIYEPoDo --===============0307462653865360727==--