From: Christopher Powers Date: December 7 2010 7:50pm Subject: bzr push into mysql-trunk-wl4896 branch (chris.powers:3210 to 3211) WL#4896 List-Archive: http://lists.mysql.com/commits/126261 Message-Id: <20101207195043.4D98A1DB031E@xeno.mysql.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4944594629437062672==" --===============4944594629437062672== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3211 Christopher Powers 2010-12-07 WL#4896 Performance schema Net IO Merge with mysql-trunk: Forgot to 'bzr add' two files added: storage/perfschema/table_socket_instances.cc storage/perfschema/table_socket_instances.h 3210 Christopher Powers 2010-12-07 WL#4896 Performance schema NET IO Merge with mysql-trunk added: include/mysql/psi/mysql_socket.h modified: include/mysql/psi/psi.h include/mysql/psi/psi_abi_v1.h.pp include/mysql/psi/psi_abi_v2.h.pp scripts/mysql_system_tables.sql sql/mysqld.cc sql/mysqld.h storage/perfschema/CMakeLists.txt storage/perfschema/ha_perfschema.cc storage/perfschema/pfs.cc storage/perfschema/pfs_column_types.h storage/perfschema/pfs_column_values.cc storage/perfschema/pfs_column_values.h storage/perfschema/pfs_engine_table.cc 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_server.h storage/perfschema/pfs_stat.h storage/perfschema/table_all_instr.cc storage/perfschema/table_all_instr.h storage/perfschema/table_events_waits.cc storage/perfschema/table_events_waits_summary.cc storage/perfschema/table_events_waits_summary.h storage/perfschema/table_helper.h storage/perfschema/table_setup_instruments.cc vio/vio.c vio/viosocket.c === added file 'storage/perfschema/table_socket_instances.cc' --- a/storage/perfschema/table_socket_instances.cc 1970-01-01 00:00:00 +0000 +++ b/storage/perfschema/table_socket_instances.cc 2010-12-07 19:50:08 +0000 @@ -0,0 +1,217 @@ +/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */ + +/** + @file storage/perfschema/table_socket_instances.cc + Table SOCKET_INSTANCES (implementation). +*/ + +#include "my_global.h" +#include "my_pthread.h" +#include "pfs_instr.h" +#include "pfs_column_types.h" +#include "pfs_column_values.h" +#include "table_socket_instances.h" +#include "pfs_global.h" + +THR_LOCK table_socket_instances::m_table_lock; + +static const TABLE_FIELD_TYPE field_types[]= +{ + { + { C_STRING_WITH_LEN("EVENT_NAME") }, + { C_STRING_WITH_LEN("varchar(128)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("OBJECT_INSTANCE_BEGIN") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("SOCKET_ID") }, + { C_STRING_WITH_LEN("int(11)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("IP") }, + { C_STRING_WITH_LEN("varchar(128)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("PORT") }, + { C_STRING_WITH_LEN("int(11)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("BYTES_READ") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("BYTES_WRITE") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + } +}; + + +TABLE_FIELD_DEF +table_socket_instances::m_field_def= +{ 7, field_types }; + +PFS_engine_table_share +table_socket_instances::m_share= +{ + { C_STRING_WITH_LEN("socket_instances") }, + &pfs_readonly_acl, + &table_socket_instances::create, + NULL, /* write_row */ + NULL, /* delete_all_rows */ + 1000, /* records */ + sizeof(PFS_simple_index), + &m_table_lock, + &m_field_def, + false /* checked */ +}; + +PFS_engine_table* table_socket_instances::create(void) +{ + return new table_socket_instances(); +} + +table_socket_instances::table_socket_instances() + : PFS_engine_table(&m_share, &m_pos), + m_row_exists(false), m_pos(0), m_next_pos(0) +{} + +void table_socket_instances::reset_position(void) +{ + m_pos.m_index= 0; + m_next_pos.m_index= 0; +} + +int table_socket_instances::rnd_next(void) +{ + PFS_socket *pfs; + + for (m_pos.set_at(&m_next_pos); + m_pos.m_index < socket_instances_max; + m_pos.next()) + { + pfs= &socket_array[m_pos.m_index]; + if (pfs->m_lock.is_populated()) + { + make_row(pfs); + m_next_pos.set_after(&m_pos); + return 0; + } + } + + return HA_ERR_END_OF_FILE; +} + +int table_socket_instances::rnd_pos(const void *pos) +{ + PFS_socket *pfs; + + set_position(pos); + DBUG_ASSERT(m_pos.m_index < socket_instances_max); + pfs= &socket_array[m_pos.m_index]; + + if (! pfs->m_lock.is_populated()) + return HA_ERR_RECORD_DELETED; + + make_row(pfs); + return 0; +} + +void table_socket_instances::make_row(PFS_socket *pfs) +{ + pfs_lock lock; + PFS_socket_class *safe_class; + + m_row_exists= false; + + /* Protect this reader against a socket delete */ + pfs->m_lock.begin_optimistic_lock(&lock); + + safe_class= sanitize_socket_class(pfs->m_class); + if (unlikely(safe_class == NULL)) + return; + + 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_ip= pfs->m_ip; + m_row.m_ip_length= pfs->m_ip_length; + m_row.m_port= pfs->m_port; + m_row.m_bytes_read= pfs->m_socket_stat.m_recv_bytes; + m_row.m_bytes_write= pfs->m_socket_stat.m_send_bytes; + + if (pfs->m_lock.end_optimistic_lock(&lock)) + m_row_exists= true; +} + +int table_socket_instances::read_row_values(TABLE *table, + unsigned char *, + Field **fields, + bool read_all) +{ + Field *f; + + 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)) + { + switch(f->field_index) + { + case 0: /* EVENT_NAME */ + set_field_varchar_utf8(f, m_row.m_event_name, m_row.m_event_name_length); + break; + case 1: /* OBJECT_INSTANCE_BEGIN */ + set_field_ulonglong(f, (intptr)m_row.m_identity); + break; + case 2: /* SOCKET_ID */ + set_field_ulong(f, m_row.m_fd); + break; + case 3: /* IP */ + set_field_varchar_utf8(f, m_row.m_ip, m_row.m_ip_length); + break; + case 4: /* PORT */ + set_field_ulong(f, m_row.m_port); + break; + case 5: /* BYTES_READ */ + set_field_ulonglong(f, m_row.m_bytes_read); + break; + case 6: /* BYTES_WRITE */ + set_field_ulonglong(f, m_row.m_bytes_write); + break; + default: + DBUG_ASSERT(false); + } + } + } + + return 0; +} + === added file 'storage/perfschema/table_socket_instances.h' --- a/storage/perfschema/table_socket_instances.h 1970-01-01 00:00:00 +0000 +++ b/storage/perfschema/table_socket_instances.h 2010-12-07 19:50:08 +0000 @@ -0,0 +1,98 @@ +/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */ + +#ifndef TABLE_SOCKET_INSTANCES_H +#define TABLE_SOCKET_INSTANCES_H + +/** + @file storage/perfschema/table_socket_instances.h + Table SOCKET_INSTANCES (declarations). +*/ + +#include "pfs_column_types.h" +#include "pfs_engine_table.h" + +/** + @addtogroup Performance_schema_tables + @{ +*/ + +/** A row of PERFORMANCE_SCHEMA.SOCKET_INSTANCES. */ +struct row_socket_instances +{ + /** Column EVENT_NAME. */ + const char *m_event_name; + /** Length in bytes of @c m_event_name. */ + uint m_event_name_length; + /** Column OBJECT_INSTANCE_BEGIN */ + const void *m_identity; + /** Column SOCKET_ID */ + uint m_fd; + /** Column IP. */ + const char *m_ip; + /** Length in bytes of @c m_ip. */ + uint m_ip_length; + /** Column PORT */ + uint m_port; + /** Column BYTES_READ */ + ulonglong m_bytes_read; // TBD + /** Column BYTES_WRITE */ + ulonglong m_bytes_write; +}; + +/** Table PERFORMANCE_SCHEMA.SOCKET_INSTANCES. */ +class table_socket_instances : public PFS_engine_table +{ +public: + /** Table share */ + static PFS_engine_table_share m_share; + static PFS_engine_table* create(); + + virtual int rnd_next(); + virtual int rnd_pos(const void *pos); + virtual void reset_position(void); + +private: + virtual int read_row_values(TABLE *table, + unsigned char *buf, + Field **fields, + bool read_all); + + table_socket_instances(); + +public: + ~table_socket_instances() + {} + +private: + void make_row(PFS_socket *pfs); + + /** Table share lock. */ + static THR_LOCK m_table_lock; + /** Fields definition. */ + static TABLE_FIELD_DEF m_field_def; + + /** Current row. */ + row_socket_instances m_row; + /** True if the current row exists. */ + bool m_row_exists; + /** Current position. */ + PFS_simple_index m_pos; + /** Next position. */ + PFS_simple_index m_next_pos; +}; + +/** @} */ +#endif --===============4944594629437062672== 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: 7205995afeaea181f0bf2491d48f5ed4ab3d3e10 # timestamp: 2010-12-07 13:50:43 -0600 # source_branch: bzr+ssh://cpowers@stripped/bzrroot\ # /server/mysql-trunk/ # base_revision_id: chris.powers@stripped\ # 9l7lxv5inoxu0f2f # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWYYkF28ABqZ/gF+aABB5//// f//fqr////9gD29993Lj1es7mp10wFUzbxYw9t2eSgZ73ejJpu7h7zukADkbhIkSNU/TUwTRqn+l MoPbSnqn6Kepm0ozT0SAaehqaHpA9TTTeqBJQJiBonqNJqemlNqep6YkeoeoNPSGgANAAD0mgOBo 0Yg0aZMIMQGIxNGjRoA000AAAASnqJIU2mnqmEeo9JppkAD1AAGgAAAAABFII0mkU9lT/UxUzQnt UBtPVGhpieoaP1TE0AMmExNNASJAgIAmQTCaJtTGgk8mo0ek0NAaehAGhpovIQG3QiwTAgYZlifN KH6cHlkRc5D2f2W5+PTpwKmMoIY9e2ISF94WlJwBERSTuhdK3CcRPsXwiTCsRWpb4l/mlLvgchK5 kyn2fDEVxWw05Ir944kpItJdVqlmpGmJuJIyVYnIYTCgzfATzU0lg2jvlOvXQLm4cstx3GlU0WDs Zra4Gq3J3Pp1TehiPZKRLWOqC21UFsAt0LDSAkM0gIgBMiFUnAiWQo7IKEHL0vR6TwYxbXW5HaR0 lvo/GPsOvKe7eRcyROIV10xTlmV1veiHuhBVdPGLkby2qADxHkMfu3Fok27Jf2z+jji48V9bjqLy XdRF4ztnLZb7yFLwDXf/EfQcxGhvQZJKSRYc+Y6yc+XUG4YEz4CuXJaGcoqmRY4szS/rYuqcxdtw xYWolKp0+asO4TLLiQ5oOMC3N+HU+MhgwGcD9C4meEjPnHMxJjNB+DmrGk/6QWMs6rkJYZVlIkOO nVHc3n8Mj07Bp/ft3FB5AIjU7xDCq84PLChoOx/o1rjozOni5FVVTKqqiqt7ouh8tKsgX5zNsktZ ccTRp2nIWzLvpYaiIudhmObecKDjOQWqRJfEya6cIZ1kdf1kyQMxjdo4aMWyxoBh1lxwS1hXccSC xr+q4UyZ2EgknvzJFOoqdBrguSLmvSkmLI/yL6DpPn2SzyPp+sw5dXR5fHEtmJLFmRViEQmahIkT MSyfPthFihVEjXTl6URGc2NnVyGItVSwlhjFq8QuKEdmNdXNVsswuAqTab9DBRNtF7xd+z65Ro6t mbb6Okl40lLqbsRwpfzPNuVNOmRK2ds24wu81rp1JuuMbhXfbcHSGIRFWGBBwIsJHIHQNtICYwXC 73iXRF1YjXy12bikF1KCnLfvYHIQXDNy995ZXM+V0LjnLjznsUgYHvofOpGpJXDjG7j4VJga9QTO BcVOgvHN6OZ85aeQkbcPkLTLAoiNJ1yWllDIFAmLaQkuhCDr6jrGkNDQm16WY8t8rBnGfEXDRb5E 5b6mERsJKggDt/LJIKFACCRyyLDVSdEk1UR2f80F+GFAwUItYyO3KdfCe5XJfb9MBkSVTvuIKQgP msSXKZ9Ww2EiJCyY9JWE27c824lNQfnE8F9HHEBEYDsl8uGi9LnnUeC3jja8yPEdhu3gZARW5MDR ATQFo107CrcB+/bxkOBcRZlLU5HA3mieFJsxMlIfeXF/FheZcH969MLkMa1mLSYQDh+PDZIfvxnm yisyu5Q1TMmlpADRpk002ly2Z5kXq9UbqVreKyiMcYBtKSsO+pyNd5MacgDgaBoXZ4UwC0tkNYHQ MxjaG0uSUDv3wB2qViwwDAxsJPILGys6lzTE8gNBYoUzGrs65GGVTJ4HEuK53k7+HRBeVre4GsAf hNwyu6LzEvtnwWneyGT3UndO3diNdYaJEarTwDdtJZVdphwkp0kDmXMiqwRWd0evV7uX0mn/bHeg 2EGsIgwrHFqTg52JbeHYdNscel3XODLrYRlO21siDCTWdjmyfHp4/YKnxFg9eqqu0ZNmOWb834kf HsGOUe9wt4CpEi+afEY9CQTRUCZzncQmdCDMtihBI9B5y4bD2nSe5XFQcONNjKqF1HYmlpV03mPD BqSNJrLkiiPuKpLzNI9ssWx0PtoZhuMTKNO9tNbXUGPsVWHcrCpkqJpsJJLDzK4wHLBdwUGGcbH5 IaNcVaMEGRgFA0mIuvz+iqN7A+J4VZDgYkmDhRJv8BqP7eFWiF5xRN6aBeaCzmUpMTOcDU2YqzJp MoJQzA1MxyMzp3sElYoJDaDwE4HKgoiHDB7Cl5ognkZDDejlLi9M9DRpGvSmjLWQC4mkkayRoRBs SW9TNxYopJqC2gZI2DKl5YmsDFn0FCxguCCSSkBtEqpGJiMKmk1UDJA9ivNgoJUkrYguVgsY2QyZ thIHWzJCcZQ0lzIL1eWG41JgNTb1zcerkcXaGnYzdmRwA9FW4k30ZlwZK0wVq593M+/J3z73WGlY lIPZatglBRe2kLctMPjmWKjBYiQTFbpIdigxERA13ybAlF0UwuAmBw2KCzYSWFhRDFMJP2WRIBVM 5SpOxMmslIaJIybYImTISTB3rsSB+8vJzMG/osBvOAeftHf3l3+980dJIVBt59QlrEU87UZocQZA cxET7rErweL6woeW0MD6A6VYXFIy6RhiMQp2DRAT4BzsPBgEHQDBj3JQaDAySsgvsUyJbFgVNROg ugNGuooJGrz7hkMZZV2nqN09R5KjoUzvISO+kR09XP9qXroPgBnAxgduTYUArSXUajQEuM3rOS2w vBgO5LiOc33GeQ+OJgBIQu1xiHYD7hYL9h0pkf06uxIvayaBEo6DnYpCWaCFsBX5hzDLnI1yk/IN 1qBQNQDM7IDfrkOsOsv7vAevQVWUhdCoi8YjqiFLNDRChBAWkaUGue1c/2bVgF1RyISMn3rgSJn4 gr0aUX8LpAYAec4Fp1QdMpigZAUEUWQWgoToSJEjYyxQjvOWxeMmaiRY8x6fHaZkOAePokTIhJVK 81wyY/EveHZbSZGOJlrnCcvkGYyZpIhGaMEUCFP4BjIuaBbksEja+wYj7GS4Rg8OBQuManKMoe0x vA+U79/i3PfYZJQN9KGG3Blf4aahItNZrFsmYdXN2i8CX1EQMgKimlx4A1ODjweuNjtoO0F8xzB5 awPdQryDy+8wKWmDbKJihpCKKkkjLduw0zKHidrHmIJkQQsCsMGRYsBzGxZJlVSZSHNQDNGWfcMT WcECfZGyfnAx66+hrRGJ7C73O+9jjvMQatI/lU0RiUFC0lJCVUM1njNZNVFZVlmFgz0M6wSkGjlF cVuLkFKsCQUmlC0EIgpZKQjzb0MR2QNifWJgNKDMYIynMYs5n5gaqUIVAXz+oPMbQ11NPaMGlCGM 84EtWtTs5IRed11ixAYcuk85CSflgzh7bxmYwU3HIYhV24t5Aas6HMmhTGi6pe656qvwhg3POXLI 7eumk1CbTY08EHeGAeBLeC8JTcVR5inEPaK8XHaUFCWaOk5ipfpCx1liTz84QdqWDFAERYkxg/AN AjGiZMV1NcSghqjCbSZkGvFWl501BcIuJJjSCoGwJmZAxpQCcFwzuUhJPQBErDIQTNB2EjOhj+sk ueUPqGLvI2QMTKkNVsTCWjiQm5Cc7oOKgUUR2MaLnZzySjU31tVddIFqqiplIm57TZtETLfbLrIl KhiPY0HczlnTKuolEsIoit5zO1YY0i1uIeLdyiMAtVVFeeUlSc1YuUJhIIsQXlELyBSETqsUXDC5 AE0DBousNmIedk0ifzgQB0mMxYbcUq0QUSaGI9UssBjKXE1FQJkSaGkBJpjAYgYwoU3TX4BhXoYc oB0IEVK2pF/jCA8UetIovaS5wCgFSBO5wC+1Oo9VzfIRbYbi4xMjSfcEj6AbLdxnaqmCVYEfAdTc cPH3T9jSYhWRAIb8wMrPLqMDXyMMmhjCavngN8jCHhOVbf6fvvTb27eyko5twUevPSLwi4MLmsog SsekFye4kLfTA650GSF5T1gQZgZy8jgUoTKSEoO0mkEhWi47TiLrGFxiY0r9rMmBYuaJ1JalJSZe DUYTcVaVBU+drwDcuSS2Ja3eGXiKGxC9YuguRccwFcR4VFg/j4SoMGwExrUFyvSWAN9wYfqamTTM 5enpnvcTJ3BNdhAsR0K0FeMZKUcLpy80yFSIooQSGuj1FrhFkrwTPpCSRZ3RWk3IlN5gqTSZYaic pLq7t3jd7Lg321GjWlAQMct5TlkQeM7ksJlD2uqmMNRBgSWwmjaiRT+BuEcGTCfxkIPKwRIYzsNq DTmk2JKhQPDmZjkaUVkFGKXi7S8MHx5B2GSkTLw/QxeRqkZ3FyZaxZFo3wrE6HlOaqlVCoMSTSsi EwZrDoOkgXq5G9+7/0E5tkceBAnbA2iQZ7ZM3jNQ2mapxuoUOrmyOZTGBAclT4i9MCYkQNM7rYNG g48hQqqJprUEFy8FwiYVj3DCTp1ll0kxXPAsCDgqBUUoEA2BQNi+MDQPCLJGeGiBgxdeAVKES8oO xLBi1zEWA8tOQ3/fDTMDt7XeayowzNiW9WkuoZwNYzUW4oNyyFCGjqNoaFNoA1CoQhM1tfMM58AK yNCdrktH1DgMwYImuC4m814nKUIkNXku80hmUCxMuSLuRFcvhKUGnxGVBsZAKbQONsQxr/mO5Qdi 1vhEuCD/xdyRThQkIYkF28A= --===============4944594629437062672==--