diff options
author | Marc Alff <marc.alff@oracle.com> | 2010-08-12 08:08:52 -0600 |
---|---|---|
committer | Marc Alff <marc.alff@oracle.com> | 2010-08-12 08:08:52 -0600 |
commit | 7dd46008503e7e4be844f32071a30db69abe9dc5 (patch) | |
tree | 49d38e34f081055bd6d27cfcaf23604d15a0f102 /storage/perfschema | |
parent | 7b3ea8fef869c049c3a6c37b4c478b9b3998f5f6 (diff) | |
download | mariadb-git-7dd46008503e7e4be844f32071a30db69abe9dc5.tar.gz |
Bug#55416 Renaming of performance_schema tables for 5.5
Removed table SETUP_OBJECTS.
Renamed table PROCESSLIST to THREADS.
Renamed table EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
to EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME.
Adjusted Makefiles, code and tests accordingly.
Diffstat (limited to 'storage/perfschema')
-rw-r--r-- | storage/perfschema/CMakeLists.txt | 8 | ||||
-rw-r--r-- | storage/perfschema/Makefile.am | 12 | ||||
-rw-r--r-- | storage/perfschema/pfs_engine_table.cc | 9 | ||||
-rw-r--r-- | storage/perfschema/table_events_waits_summary.cc | 138 | ||||
-rw-r--r-- | storage/perfschema/table_events_waits_summary.h | 52 | ||||
-rw-r--r-- | storage/perfschema/table_ews_global_by_event_name.cc | 166 | ||||
-rw-r--r-- | storage/perfschema/table_ews_global_by_event_name.h | 88 | ||||
-rw-r--r-- | storage/perfschema/table_setup_objects.cc | 281 | ||||
-rw-r--r-- | storage/perfschema/table_setup_objects.h | 125 | ||||
-rw-r--r-- | storage/perfschema/table_threads.cc (renamed from storage/perfschema/table_processlist.cc) | 38 | ||||
-rw-r--r-- | storage/perfschema/table_threads.h (renamed from storage/perfschema/table_processlist.h) | 22 |
11 files changed, 298 insertions, 641 deletions
diff --git a/storage/perfschema/CMakeLists.txt b/storage/perfschema/CMakeLists.txt index 5cd651a35bd..a3999da4ba1 100644 --- a/storage/perfschema/CMakeLists.txt +++ b/storage/perfschema/CMakeLists.txt @@ -38,15 +38,15 @@ SET(PERFSCHEMA_SOURCES ha_perfschema.h table_all_instr.h table_events_waits.h table_events_waits_summary.h + table_ews_global_by_event_name.h table_file_instances.h table_file_summary.h table_performance_timers.h - table_processlist.h table_setup_consumers.h table_setup_instruments.h - table_setup_objects.h table_setup_timers.h table_sync_instances.h + table_threads.h ha_perfschema.cc pfs.cc pfs_column_values.cc @@ -60,15 +60,15 @@ SET(PERFSCHEMA_SOURCES ha_perfschema.h table_all_instr.cc table_events_waits.cc table_events_waits_summary.cc + table_ews_global_by_event_name.cc table_file_instances.cc table_file_summary.cc table_performance_timers.cc - table_processlist.cc table_setup_consumers.cc table_setup_instruments.cc - table_setup_objects.cc table_setup_timers.cc table_sync_instances.cc + table_threads.cc pfs_atomic.cc pfs_check.cc ) diff --git a/storage/perfschema/Makefile.am b/storage/perfschema/Makefile.am index 374415cfdfd..762f5b85790 100644 --- a/storage/perfschema/Makefile.am +++ b/storage/perfschema/Makefile.am @@ -39,12 +39,12 @@ noinst_HEADERS = ha_perfschema.h pfs_engine_table.h pfs.h pfs_server.h \ table_setup_instruments.h table_performance_timers.h \ table_setup_timers.h \ table_setup_consumers.h table_events_waits.h \ - pfs_events_waits.h pfs_timer.h table_processlist.h \ + pfs_events_waits.h pfs_timer.h table_threads.h \ table_sync_instances.h \ table_events_waits_summary.h pfs_stat.h \ - table_all_instr.h \ + table_ews_global_by_event_name.h table_all_instr.h \ table_file_instances.h table_file_summary.h \ - table_setup_objects.h pfs_lock.h pfs_atomic.h + pfs_lock.h pfs_atomic.h PSE_SOURCES = ha_perfschema.cc pfs_engine_table.cc pfs.cc pfs_server.cc \ pfs_global.cc pfs_instr_class.cc pfs_instr.cc \ @@ -52,12 +52,12 @@ PSE_SOURCES = ha_perfschema.cc pfs_engine_table.cc pfs.cc pfs_server.cc \ table_setup_instruments.cc table_performance_timers.cc \ table_setup_timers.cc \ table_setup_consumers.cc table_events_waits.cc \ - pfs_events_waits.cc pfs_timer.cc table_processlist.cc \ + pfs_events_waits.cc pfs_timer.cc table_threads.cc \ table_sync_instances.cc \ table_events_waits_summary.cc \ - table_all_instr.cc \ + table_ews_global_by_event_name.cc table_all_instr.cc \ table_file_instances.cc table_file_summary.cc \ - table_setup_objects.cc pfs_atomic.cc pfs_check.cc + pfs_atomic.cc pfs_check.cc EXTRA_LIBRARIES = libperfschema.a noinst_LIBRARIES = @plugin_perfschema_static_target@ diff --git a/storage/perfschema/pfs_engine_table.cc b/storage/perfschema/pfs_engine_table.cc index 7b6fd055729..df00811959c 100644 --- a/storage/perfschema/pfs_engine_table.cc +++ b/storage/perfschema/pfs_engine_table.cc @@ -23,11 +23,11 @@ #include "table_events_waits.h" #include "table_setup_consumers.h" #include "table_setup_instruments.h" -#include "table_setup_objects.h" #include "table_setup_timers.h" #include "table_performance_timers.h" -#include "table_processlist.h" +#include "table_threads.h" #include "table_events_waits_summary.h" +#include "table_ews_global_by_event_name.h" #include "table_sync_instances.h" #include "table_file_instances.h" #include "table_file_summary.h" @@ -52,13 +52,12 @@ static PFS_engine_table_share *all_shares[]= &table_events_waits_history_long::m_share, &table_setup_consumers::m_share, &table_setup_instruments::m_share, - &table_setup_objects::m_share, &table_setup_timers::m_share, &table_performance_timers::m_share, - &table_processlist::m_share, + &table_threads::m_share, &table_events_waits_summary_by_thread_by_event_name::m_share, - &table_events_waits_summary_by_event_name::m_share, &table_events_waits_summary_by_instance::m_share, + &table_ews_global_by_event_name::m_share, &table_file_summary_by_event_name::m_share, &table_file_summary_by_instance::m_share, &table_mutex_instances::m_share, diff --git a/storage/perfschema/table_events_waits_summary.cc b/storage/perfschema/table_events_waits_summary.cc index 9d0d6fe0f67..435a3500f06 100644 --- a/storage/perfschema/table_events_waits_summary.cc +++ b/storage/perfschema/table_events_waits_summary.cc @@ -338,144 +338,6 @@ int table_events_waits_summary_by_thread_by_event_name return 0; } -THR_LOCK table_events_waits_summary_by_event_name::m_table_lock; - -static const TABLE_FIELD_TYPE ews_by_event_name_field_types[]= -{ - { - { C_STRING_WITH_LEN("EVENT_NAME") }, - { C_STRING_WITH_LEN("varchar(128)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("COUNT_STAR") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("SUM_TIMER_WAIT") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MIN_TIMER_WAIT") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AVG_TIMER_WAIT") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("MAX_TIMER_WAIT") }, - { C_STRING_WITH_LEN("bigint(20)") }, - { NULL, 0} - } -}; - -TABLE_FIELD_DEF -table_events_waits_summary_by_event_name::m_field_def= -{ 6, ews_by_event_name_field_types }; - -PFS_engine_table_share -table_events_waits_summary_by_event_name::m_share= -{ - { C_STRING_WITH_LEN("EVENTS_WAITS_SUMMARY_BY_EVENT_NAME") }, - &pfs_truncatable_acl, - &table_events_waits_summary_by_event_name::create, - NULL, /* write_row */ - &table_events_waits_summary_by_event_name::delete_all_rows, - 1000, /* records */ - sizeof(pos_all_instr_class), - &m_table_lock, - &m_field_def, - false /* checked */ -}; - -PFS_engine_table* table_events_waits_summary_by_event_name::create(void) -{ - return new table_events_waits_summary_by_event_name(); -} - -int table_events_waits_summary_by_event_name::delete_all_rows(void) -{ - reset_instrument_class_waits(); - return 0; -} - -table_events_waits_summary_by_event_name -::table_events_waits_summary_by_event_name() - : table_all_instr_class(&m_share) -{} - -void table_events_waits_summary_by_event_name -::make_instr_row(PFS_instr_class *klass) -{ - m_row.m_name= klass->m_name; - m_row.m_name_length= klass->m_name_length; - - m_row.m_count= klass->m_wait_stat.m_count; - m_row.m_sum= klass->m_wait_stat.m_sum; - m_row.m_min= klass->m_wait_stat.m_min; - m_row.m_max= klass->m_wait_stat.m_max; - - if (m_row.m_count) - m_row.m_avg= m_row.m_sum / m_row.m_count; - else - { - m_row.m_min= 0; - m_row.m_avg= 0; - } -} - -int table_events_waits_summary_by_event_name -::read_row_values(TABLE *table, unsigned char *, Field **fields, - bool read_all) -{ - Field *f; - - /* Set the null bits */ - DBUG_ASSERT(table->s->null_bytes == 0); - - /* - The row always exist, - the instrument classes are static and never disappear. - */ - - for (; (f= *fields) ; fields++) - { - if (read_all || bitmap_is_set(table->read_set, f->field_index)) - { - switch(f->field_index) - { - case 0: /* NAME */ - set_field_varchar_utf8(f, m_row.m_name, m_row.m_name_length); - break; - case 1: /* COUNT */ - set_field_ulonglong(f, m_row.m_count); - break; - case 2: /* SUM */ - set_field_ulonglong(f, m_row.m_sum); - break; - case 3: /* MIN */ - set_field_ulonglong(f, m_row.m_min); - break; - case 4: /* AVG */ - set_field_ulonglong(f, m_row.m_avg); - break; - case 5: /* MAX */ - set_field_ulonglong(f, m_row.m_max); - break; - default: - DBUG_ASSERT(false); - } - } - } - - return 0; -} - THR_LOCK table_events_waits_summary_by_instance::m_table_lock; static const TABLE_FIELD_TYPE ews_by_instance_field_types[]= diff --git a/storage/perfschema/table_events_waits_summary.h b/storage/perfschema/table_events_waits_summary.h index 47ec9523d68..628bb75553f 100644 --- a/storage/perfschema/table_events_waits_summary.h +++ b/storage/perfschema/table_events_waits_summary.h @@ -144,58 +144,6 @@ private: pos_events_waits_summary_by_thread_by_event_name m_next_pos; }; -/** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME. */ -struct row_events_waits_summary_by_event_name -{ - /** Column EVENT_NAME. */ - const char *m_name; - /** Length in bytes of @c m_name. */ - uint m_name_length; - /** Column COUNT_STAR. */ - ulonglong m_count; - /** Column SUM_TIMER_WAIT. */ - ulonglong m_sum; - /** Column MIN_TIMER_WAIT. */ - ulonglong m_min; - /** Column AVG_TIMER_WAIT. */ - ulonglong m_avg; - /** Column MAX_TIMER_WAIT. */ - ulonglong m_max; -}; - -/** Table PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME. */ -class table_events_waits_summary_by_event_name : public table_all_instr_class -{ -public: - /** Table share */ - static PFS_engine_table_share m_share; - static PFS_engine_table* create(); - static int delete_all_rows(); - -protected: - virtual void make_instr_row(PFS_instr_class *klass); - - virtual int read_row_values(TABLE *table, - unsigned char *buf, - Field **fields, - bool read_all); - - table_events_waits_summary_by_event_name(); - -public: - ~table_events_waits_summary_by_event_name() - {} - -private: - /** Table share lock. */ - static THR_LOCK m_table_lock; - /** Fields definition. */ - static TABLE_FIELD_DEF m_field_def; - - /** Current row. */ - row_events_waits_summary_by_event_name m_row; -}; - /** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_INSTANCE. */ struct row_events_waits_summary_by_instance { diff --git a/storage/perfschema/table_ews_global_by_event_name.cc b/storage/perfschema/table_ews_global_by_event_name.cc new file mode 100644 index 00000000000..35e744ed96b --- /dev/null +++ b/storage/perfschema/table_ews_global_by_event_name.cc @@ -0,0 +1,166 @@ +/* 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_ews_global_by_event_name.cc + Table EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME (implementation). +*/ + +#include "my_global.h" +#include "my_pthread.h" +#include "pfs_instr_class.h" +#include "pfs_column_types.h" +#include "pfs_column_values.h" +#include "table_ews_global_by_event_name.h" +#include "pfs_global.h" + +THR_LOCK table_ews_global_by_event_name::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("COUNT_STAR") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("SUM_TIMER_WAIT") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("MIN_TIMER_WAIT") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("AVG_TIMER_WAIT") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + }, + { + { C_STRING_WITH_LEN("MAX_TIMER_WAIT") }, + { C_STRING_WITH_LEN("bigint(20)") }, + { NULL, 0} + } +}; + +TABLE_FIELD_DEF +table_ews_global_by_event_name::m_field_def= +{ 6, field_types }; + +PFS_engine_table_share +table_ews_global_by_event_name::m_share= +{ + { C_STRING_WITH_LEN("EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME") }, + &pfs_truncatable_acl, + &table_ews_global_by_event_name::create, + NULL, /* write_row */ + &table_ews_global_by_event_name::delete_all_rows, + 1000, /* records */ + sizeof(pos_all_instr_class), + &m_table_lock, + &m_field_def, + false /* checked */ +}; + +PFS_engine_table* table_ews_global_by_event_name::create(void) +{ + return new table_ews_global_by_event_name(); +} + +int table_ews_global_by_event_name::delete_all_rows(void) +{ + reset_instrument_class_waits(); + return 0; +} + +table_ews_global_by_event_name +::table_ews_global_by_event_name() + : table_all_instr_class(&m_share) +{} + +void table_ews_global_by_event_name +::make_instr_row(PFS_instr_class *klass) +{ + m_row.m_name= klass->m_name; + m_row.m_name_length= klass->m_name_length; + + m_row.m_count= klass->m_wait_stat.m_count; + m_row.m_sum= klass->m_wait_stat.m_sum; + m_row.m_min= klass->m_wait_stat.m_min; + m_row.m_max= klass->m_wait_stat.m_max; + + if (m_row.m_count) + m_row.m_avg= m_row.m_sum / m_row.m_count; + else + { + m_row.m_min= 0; + m_row.m_avg= 0; + } +} + +int table_ews_global_by_event_name +::read_row_values(TABLE *table, unsigned char *, Field **fields, + bool read_all) +{ + Field *f; + + /* Set the null bits */ + DBUG_ASSERT(table->s->null_bytes == 0); + + /* + The row always exist, + the instrument classes are static and never disappear. + */ + + for (; (f= *fields) ; fields++) + { + if (read_all || bitmap_is_set(table->read_set, f->field_index)) + { + switch(f->field_index) + { + case 0: /* NAME */ + set_field_varchar_utf8(f, m_row.m_name, m_row.m_name_length); + break; + case 1: /* COUNT */ + set_field_ulonglong(f, m_row.m_count); + break; + case 2: /* SUM */ + set_field_ulonglong(f, m_row.m_sum); + break; + case 3: /* MIN */ + set_field_ulonglong(f, m_row.m_min); + break; + case 4: /* AVG */ + set_field_ulonglong(f, m_row.m_avg); + break; + case 5: /* MAX */ + set_field_ulonglong(f, m_row.m_max); + break; + default: + DBUG_ASSERT(false); + } + } + } + + return 0; +} + diff --git a/storage/perfschema/table_ews_global_by_event_name.h b/storage/perfschema/table_ews_global_by_event_name.h new file mode 100644 index 00000000000..402ed9d80de --- /dev/null +++ b/storage/perfschema/table_ews_global_by_event_name.h @@ -0,0 +1,88 @@ +/* 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_EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME_H +#define TABLE_EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME_H + +/** + @file storage/perfschema/table_ews_global_by_event_name.h + Table EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME (declarations). +*/ + +#include "pfs_column_types.h" +#include "pfs_engine_table.h" +#include "pfs_instr_class.h" +#include "pfs_instr.h" +#include "table_all_instr.h" + +/** + @addtogroup Performance_schema_tables + @{ +*/ + +/** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME. */ +struct row_ews_global_by_event_name +{ + /** Column EVENT_NAME. */ + const char *m_name; + /** Length in bytes of @c m_name. */ + uint m_name_length; + /** Column COUNT_STAR. */ + ulonglong m_count; + /** Column SUM_TIMER_WAIT. */ + ulonglong m_sum; + /** Column MIN_TIMER_WAIT. */ + ulonglong m_min; + /** Column AVG_TIMER_WAIT. */ + ulonglong m_avg; + /** Column MAX_TIMER_WAIT. */ + ulonglong m_max; +}; + +/** Table PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME. */ +class table_ews_global_by_event_name : public table_all_instr_class +{ +public: + /** Table share */ + static PFS_engine_table_share m_share; + static PFS_engine_table* create(); + static int delete_all_rows(); + +protected: + virtual void make_instr_row(PFS_instr_class *klass); + + virtual int read_row_values(TABLE *table, + unsigned char *buf, + Field **fields, + bool read_all); + + table_ews_global_by_event_name(); + +public: + ~table_ews_global_by_event_name() + {} + +private: + /** Table share lock. */ + static THR_LOCK m_table_lock; + /** Fields definition. */ + static TABLE_FIELD_DEF m_field_def; + + /** Current row. */ + row_ews_global_by_event_name m_row; +}; + +/** @} */ +#endif diff --git a/storage/perfschema/table_setup_objects.cc b/storage/perfschema/table_setup_objects.cc deleted file mode 100644 index b75bece83bd..00000000000 --- a/storage/perfschema/table_setup_objects.cc +++ /dev/null @@ -1,281 +0,0 @@ -/* Copyright (C) 2008-2009 Sun Microsystems, Inc - - 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -/** - @file storage/perfschema/table_setup_objects.cc - Table SETUP_OBJECTS (implementation). -*/ - -#include "sql_priv.h" -#include "unireg.h" -#include "pfs_instr_class.h" -#include "pfs_column_types.h" -#include "pfs_column_values.h" -#include "table_setup_objects.h" -#include "pfs_global.h" - -THR_LOCK table_setup_objects::m_table_lock; - -static const TABLE_FIELD_TYPE field_types[]= -{ - { - { C_STRING_WITH_LEN("OBJECT_TYPE") }, - { C_STRING_WITH_LEN("varchar(64)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("OBJECT_SCHEMA") }, - { C_STRING_WITH_LEN("varchar(64)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("OBJECT_NAME") }, - { C_STRING_WITH_LEN("varchar(64)") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("ENABLED") }, - { C_STRING_WITH_LEN("enum(\'YES\',\'NO\')") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("TIMED") }, - { C_STRING_WITH_LEN("enum(\'YES\',\'NO\')") }, - { NULL, 0} - }, - { - { C_STRING_WITH_LEN("AGGREGATED") }, - { C_STRING_WITH_LEN("enum(\'YES\',\'NO\')") }, - { NULL, 0} - } -}; - -TABLE_FIELD_DEF -table_setup_objects::m_field_def= -{ 6, field_types }; - -PFS_engine_table_share -table_setup_objects::m_share= -{ - { C_STRING_WITH_LEN("SETUP_OBJECTS") }, - &pfs_editable_acl, - &table_setup_objects::create, - table_setup_objects::write_row, - table_setup_objects::delete_all_rows, - 1000, /* records */ - sizeof(pos_setup_objects), - &m_table_lock, - &m_field_def, - false /* checked */ -}; - -PFS_engine_table* table_setup_objects::create(void) -{ - return new table_setup_objects(); -} - -int table_setup_objects::write_row(TABLE *table, unsigned char *buf, - Field **fields) -{ - /* Not implemented */ - return HA_ERR_WRONG_COMMAND; -} - -int table_setup_objects::delete_all_rows(void) -{ - /* Not implemented */ - return HA_ERR_WRONG_COMMAND; -} - -table_setup_objects::table_setup_objects() - : PFS_engine_table(&m_share, &m_pos), - m_row_exists(false), m_pos(), m_next_pos() -{} - -void table_setup_objects::reset_position(void) -{ - m_pos.reset(); - m_next_pos.reset(); -} - -int table_setup_objects::rnd_next(void) -{ - PFS_table_share *table_share; - - for (m_pos.set_at(&m_next_pos); - m_pos.has_more_view(); - m_pos.next_view()) - { - switch (m_pos.m_index_1) { - case pos_setup_objects::VIEW_TABLE: - for ( ; m_pos.m_index_2 < table_share_max; m_pos.m_index_2++) - { - table_share= &table_share_array[m_pos.m_index_2]; - if (table_share->m_lock.is_populated()) - { - make_row(table_share); - m_next_pos.set_after(&m_pos); - return 0; - } - } - break; - case pos_setup_objects::VIEW_EVENT: - case pos_setup_objects::VIEW_PROCEDURE: - case pos_setup_objects::VIEW_FUNCTION: - default: - break; - } - } - - return HA_ERR_END_OF_FILE; -} - -int table_setup_objects::rnd_pos(const void *pos) -{ - PFS_table_share *share; - - set_position(pos); - - switch (m_pos.m_index_1) { - case pos_setup_objects::VIEW_TABLE: - DBUG_ASSERT(m_pos.m_index_2 < table_share_max); - share= &table_share_array[m_pos.m_index_2]; - if (share->m_lock.is_populated()) - { - make_row(share); - return 0; - } - break; - case pos_setup_objects::VIEW_EVENT: - case pos_setup_objects::VIEW_PROCEDURE: - case pos_setup_objects::VIEW_FUNCTION: - default: - break; - } - - return HA_ERR_RECORD_DELETED; -} - -void table_setup_objects::make_row(PFS_table_share *share) -{ - pfs_lock lock; - - m_row_exists= false; - if (share == NULL) - return; - - share->m_lock.begin_optimistic_lock(&lock); - - m_row.m_schema_name= &share->m_schema_name[0]; - m_row.m_schema_name_length= share->m_schema_name_length; - m_row.m_object_name= &share->m_table_name[0]; - m_row.m_object_name_length= share->m_table_name_length; - m_row.m_enabled_ptr= &share->m_enabled; - m_row.m_timed_ptr= &share->m_timed; - m_row.m_aggregated_ptr= &share->m_aggregated; - - if (share->m_lock.end_optimistic_lock(&lock)) - m_row_exists= true; -} - -int table_setup_objects::read_row_values(TABLE *table, - unsigned char *buf, - 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 == 1); - buf[0]= 0; - - for (; (f= *fields) ; fields++) - { - if (read_all || bitmap_is_set(table->read_set, f->field_index)) - { - switch(f->field_index) - { - case 0: /* OBJECT_TYPE */ - set_field_varchar_utf8(f, "TABLE", 5); - break; - case 1: /* OBJECT_SCHEMA */ - set_field_varchar_utf8(f, m_row.m_schema_name, - m_row.m_schema_name_length); - break; - case 2: /* OBJECT_NAME */ - set_field_varchar_utf8(f, m_row.m_object_name, - m_row.m_object_name_length); - break; - case 3: /* ENABLED */ - set_field_enum(f, (*m_row.m_enabled_ptr) ? ENUM_YES : ENUM_NO); - break; - case 4: /* TIMED */ - set_field_enum(f, (*m_row.m_timed_ptr) ? ENUM_YES : ENUM_NO); - break; - case 5: /* AGGREGATED */ - set_field_enum(f, (*m_row.m_aggregated_ptr) ? ENUM_YES : ENUM_NO); - break; - default: - DBUG_ASSERT(false); - } - } - } - - return 0; -} - -int table_setup_objects::update_row_values(TABLE *table, - const unsigned char *, - unsigned char *, - Field **fields) -{ - Field *f; - enum_yes_no value; - - for (; (f= *fields) ; fields++) - { - if (bitmap_is_set(table->write_set, f->field_index)) - { - switch(f->field_index) - { - case 0: /* OBJECT_TYPE */ - case 1: /* OBJECT_SCHEMA */ - case 2: /* OBJECT_NAME */ - my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0)); - return HA_ERR_WRONG_COMMAND; - case 3: /* ENABLED */ - value= (enum_yes_no) get_field_enum(f); - *m_row.m_enabled_ptr= (value == ENUM_YES) ? true : false; - break; - case 4: /* TIMED */ - value= (enum_yes_no) get_field_enum(f); - *m_row.m_timed_ptr= (value == ENUM_YES) ? true : false; - break; - case 5: /* AGGREGATED */ - value= (enum_yes_no) get_field_enum(f); - *m_row.m_aggregated_ptr= (value == ENUM_YES) ? true : false; - break; - default: - DBUG_ASSERT(false); - } - } - } - - return 0; -} - diff --git a/storage/perfschema/table_setup_objects.h b/storage/perfschema/table_setup_objects.h deleted file mode 100644 index 994e12016a6..00000000000 --- a/storage/perfschema/table_setup_objects.h +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright (C) 2008-2009 Sun Microsystems, Inc - - 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#ifndef TABLE_SETUP_OBJECTS_H -#define TABLE_SETUP_OBJECTS_H - -/** - @file storage/perfschema/table_setup_objects.h - Table SETUP_OBJECTS (declarations). -*/ - -#include "pfs_instr_class.h" -#include "pfs_engine_table.h" - -/** - @addtogroup Performance_schema_tables - @{ -*/ - -/** A row of PERFORMANCE_SCHEMA.SETUP_OBJECTS. */ -struct row_setup_objects -{ - /** Column SCHEMA_NAME. */ - const char *m_schema_name; - /** Length in bytes of @c m_schema_name. */ - uint m_schema_name_length; - /** Column OBJECT_NAME. */ - const char *m_object_name; - /** Length in bytes of @c m_object_name. */ - uint m_object_name_length; - /** Column ENABLED. */ - bool *m_enabled_ptr; - /** Column TIMED. */ - bool *m_timed_ptr; - /** Column AGGREGATED. */ - bool *m_aggregated_ptr; -}; - -/** Position of a cursor on PERFORMANCE_SCHEMA.SETUP_OBJECTS. */ -struct pos_setup_objects : public PFS_double_index, - public PFS_object_view_constants -{ - pos_setup_objects() - : PFS_double_index(VIEW_TABLE, 0) - {} - - inline void reset(void) - { - m_index_1= VIEW_TABLE; - m_index_2= 0; - } - - inline bool has_more_view(void) - { return (m_index_1 <= VIEW_FUNCTION); } - - inline void next_view(void) - { - m_index_1++; - m_index_2= 0; - } -}; - -/** Table PERFORMANCE_SCHEMA.SETUP_OBJECTS. */ -class table_setup_objects : public PFS_engine_table -{ -public: - /** Table share. */ - static PFS_engine_table_share m_share; - static PFS_engine_table* create(); - static int write_row(TABLE *table, unsigned char *buf, Field **fields); - static int delete_all_rows(); - - virtual int rnd_next(); - virtual int rnd_pos(const void *pos); - virtual void reset_position(void); - -protected: - virtual int read_row_values(TABLE *table, - unsigned char *buf, - Field **fields, - bool read_all); - - virtual int update_row_values(TABLE *table, - const unsigned char *old_buf, - unsigned char *new_buf, - Field **fields); - - table_setup_objects(); - -public: - ~table_setup_objects() - {} - -private: - void make_row(PFS_table_share *share); - - /** Table share lock. */ - static THR_LOCK m_table_lock; - /** Fields definition. */ - static TABLE_FIELD_DEF m_field_def; - - /** Current row. */ - row_setup_objects m_row; - /** True is the current row exists. */ - bool m_row_exists; - /** Current position. */ - pos_setup_objects m_pos; - /** Next position. */ - pos_setup_objects m_next_pos; -}; - -/** @} */ -#endif diff --git a/storage/perfschema/table_processlist.cc b/storage/perfschema/table_threads.cc index 06c628c5f80..bba7806cab9 100644 --- a/storage/perfschema/table_processlist.cc +++ b/storage/perfschema/table_threads.cc @@ -14,17 +14,17 @@ 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */ /** - @file storage/perfschema/table_processlist.cc - Table PROCESSLIST (implementation). + @file storage/perfschema/table_threads.cc + Table THREADS (implementation). */ #include "my_global.h" #include "my_pthread.h" -#include "table_processlist.h" +#include "table_threads.h" #include "pfs_instr_class.h" #include "pfs_instr.h" -THR_LOCK table_processlist::m_table_lock; +THR_LOCK table_threads::m_table_lock; static const TABLE_FIELD_TYPE field_types[]= { @@ -46,15 +46,15 @@ static const TABLE_FIELD_TYPE field_types[]= }; TABLE_FIELD_DEF -table_processlist::m_field_def= +table_threads::m_field_def= { 3, field_types }; PFS_engine_table_share -table_processlist::m_share= +table_threads::m_share= { - { C_STRING_WITH_LEN("PROCESSLIST") }, + { C_STRING_WITH_LEN("THREADS") }, &pfs_readonly_acl, - &table_processlist::create, + &table_threads::create, NULL, /* write_row */ NULL, /* delete_all_rows */ 1000, /* records */ @@ -64,23 +64,23 @@ table_processlist::m_share= false /* checked */ }; -PFS_engine_table* table_processlist::create(void) +PFS_engine_table* table_threads::create(void) { - return new table_processlist(); + return new table_threads(); } -table_processlist::table_processlist() +table_threads::table_threads() : PFS_engine_table(&m_share, &m_pos), m_row_exists(false), m_pos(0), m_next_pos(0) {} -void table_processlist::reset_position(void) +void table_threads::reset_position(void) { m_pos.m_index= 0; m_next_pos.m_index= 0; } -int table_processlist::rnd_next(void) +int table_threads::rnd_next(void) { PFS_thread *pfs; @@ -100,7 +100,7 @@ int table_processlist::rnd_next(void) return HA_ERR_END_OF_FILE; } -int table_processlist::rnd_pos(const void *pos) +int table_threads::rnd_pos(const void *pos) { PFS_thread *pfs; @@ -116,7 +116,7 @@ int table_processlist::rnd_pos(const void *pos) return HA_ERR_RECORD_DELETED; } -void table_processlist::make_row(PFS_thread *pfs) +void table_threads::make_row(PFS_thread *pfs) { pfs_lock lock; PFS_thread_class *safe_class; @@ -139,10 +139,10 @@ void table_processlist::make_row(PFS_thread *pfs) m_row_exists= true; } -int table_processlist::read_row_values(TABLE *table, - unsigned char *, - Field **fields, - bool read_all) +int table_threads::read_row_values(TABLE *table, + unsigned char *, + Field **fields, + bool read_all) { Field *f; diff --git a/storage/perfschema/table_processlist.h b/storage/perfschema/table_threads.h index d4fe5e4af1a..9df323f6d82 100644 --- a/storage/perfschema/table_processlist.h +++ b/storage/perfschema/table_threads.h @@ -13,12 +13,12 @@ along with this program; if not, write to the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */ -#ifndef TABLE_PROCESSIST_H -#define TABLE_PROCESSIST_H +#ifndef TABLE_THREADS_H +#define TABLE_THREADS_H /** - @file storage/perfschema/table_processlist.h - Table PROCESSLIST (declarations). + @file storage/perfschema/table_threads.h + Table THREADS (declarations). */ #include "pfs_column_types.h" @@ -31,8 +31,8 @@ struct PFS_thread; @{ */ -/** A row of PERFORMANCE_SCHEMA.PROCESSLIST. */ -struct row_processlist +/** A row of PERFORMANCE_SCHEMA.THREADS. */ +struct row_threads { /** Column THREAD_ID. */ ulong m_thread_internal_id; @@ -44,8 +44,8 @@ struct row_processlist uint m_name_length; }; -/** Table PERFORMANCE_SCHEMA.PROCESSLIST. */ -class table_processlist : public PFS_engine_table +/** Table PERFORMANCE_SCHEMA.THREADS. */ +class table_threads : public PFS_engine_table { public: /** Table share. */ @@ -63,10 +63,10 @@ protected: bool read_all); protected: - table_processlist(); + table_threads(); public: - ~table_processlist() + ~table_threads() {} private: @@ -78,7 +78,7 @@ private: static TABLE_FIELD_DEF m_field_def; /** Current row. */ - row_processlist m_row; + row_threads m_row; /** True is the current row exists. */ bool m_row_exists; /** Current position. */ |