List:Commits« Previous MessageNext Message »
From:Marc Alff Date:January 28 2009 4:44am
Subject:bzr commit into mysql-6.0-perf branch (marc.alff:2777)
View as plain text  
#At file:///home/malff/BZR-TREE/mysql-6.0-perf/ based on revid:marc.alff@stripped

 2777 Marc Alff	2009-01-27
      Documentation with doxygen, created a PERFORMANCE_SCHEMA page.
modified:
  include/mysql/mysql_file.h
  include/mysql/mysql_mutex.h
  include/mysql/psi.h
  storage/perfschema/ha_perfschema.cc
  storage/perfschema/ha_perfschema.h
  storage/perfschema/pse.cc
  storage/perfschema/pse_instr.cc
  storage/perfschema/pse_instr_info.cc
  storage/perfschema/pse_table.h
  storage/perfschema/table_all_instr.h
  storage/perfschema/table_events_waits.h
  storage/perfschema/table_events_waits_summary.h
  storage/perfschema/table_file_instances.h
  storage/perfschema/table_file_summary.h
  storage/perfschema/table_performance_timers.h
  storage/perfschema/table_processlist.h
  storage/perfschema/table_setup_actors.h
  storage/perfschema/table_setup_consumers.h
  storage/perfschema/table_setup_instruments.h
  storage/perfschema/table_setup_timers.h
  storage/perfschema/table_sync_instances.h

=== modified file 'include/mysql/mysql_file.h'
--- a/include/mysql/mysql_file.h	2009-01-13 03:47:43 +0000
+++ b/include/mysql/mysql_file.h	2009-01-28 04:44:09 +0000
@@ -29,7 +29,7 @@ struct PSI_file;
 
 /**
   @defgroup File_instrumentation File Instrumentation
-  @ingroup Performance_schema_interface
+  @ingroup Instrumentation_interface
   @{
 */
 

=== modified file 'include/mysql/mysql_mutex.h'
--- a/include/mysql/mysql_mutex.h	2009-01-15 00:22:24 +0000
+++ b/include/mysql/mysql_mutex.h	2009-01-28 04:44:09 +0000
@@ -50,7 +50,7 @@ struct PSI_cond;
 
 /**
   @defgroup Mutex_instrumentation Mutex Instrumentation
-  @ingroup Performance_schema_interface
+  @ingroup Instrumentation_interface
   @{
 */
 

=== modified file 'include/mysql/psi.h'
--- a/include/mysql/psi.h	2009-01-26 19:55:16 +0000
+++ b/include/mysql/psi.h	2009-01-28 04:44:09 +0000
@@ -18,7 +18,7 @@
 
 /**
   @file mysql/psi.h
-  @defgroup Performance_schema_interface Performance Schema Interface
+  @defgroup Instrumentation_interface Instrumentation Interface
   @ingroup Performance_schema
   @{
 */
@@ -172,8 +172,8 @@ typedef unsigned int PSI_file_key;
 #ifdef HAVE_PSI_1
 
 /**
-  @defgroup Group_PSI_v1 Application Programming Interface, version 1
-  @ingroup Performance_schema_interface
+  @defgroup Group_PSI_v1 Application Binary Interface, version 1
+  @ingroup Instrumentation_interface
   @{
 */
 
@@ -591,8 +591,8 @@ struct PSI_v1
 #ifdef HAVE_PSI_2
 
 /**
-  @defgroup Group_PSI_v2 Application Programming Interface, version 2
-  @ingroup Performance_schema_interface
+  @defgroup Group_PSI_v2 Application Binary Interface, version 2
+  @ingroup Instrumentation_interface
   @{
 */
 

=== modified file 'storage/perfschema/ha_perfschema.cc'
--- a/storage/perfschema/ha_perfschema.cc	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/ha_perfschema.cc	2009-01-28 04:44:09 +0000
@@ -224,30 +224,6 @@ int ha_perfschema::index_read_map(uchar
   DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 }
 
-int ha_perfschema::index_next(uchar *buf)
-{
-  DBUG_ENTER("ha_perfschema::index_next");
-  DBUG_RETURN(HA_ERR_WRONG_COMMAND);
-}
-
-int ha_perfschema::index_prev(uchar *buf)
-{
-  DBUG_ENTER("ha_perfschema::index_prev");
-  DBUG_RETURN(HA_ERR_WRONG_COMMAND);
-}
-
-int ha_perfschema::index_first(uchar *buf)
-{
-  DBUG_ENTER("ha_perfschema::index_first");
-  DBUG_RETURN(HA_ERR_WRONG_COMMAND);
-}
-
-int ha_perfschema::index_last(uchar *buf)
-{
-  DBUG_ENTER("ha_perfschema::index_last");
-  DBUG_RETURN(HA_ERR_WRONG_COMMAND);
-}
-
 int ha_perfschema::rnd_init(bool scan)
 {
   int result;

=== modified file 'storage/perfschema/ha_perfschema.h'
--- a/storage/perfschema/ha_perfschema.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/ha_perfschema.h	2009-01-28 04:44:09 +0000
@@ -18,163 +18,99 @@
 #pragma interface			/* gcc class implementation */
 #endif
 
+/**
+  @defgroup Performance_schema_engine Performance Schema Engine
+  @ingroup Performance_schema_implementation
+  @{
+*/
 struct pse_table_info;
 class pse_table;
 
-/** @brief
-  EXAMPLE_SHARE is a structure that will be shared among all open handlers.
-  This example implements the minimum of what you will probably need.
+/**
+  A performance schema table share.
+  This data is shared by all the table handles opened on the same table.
 */
 typedef struct st_perfschema_share {
   THR_LOCK lock;
 } PSE_SHARE;
 
-/** @brief
-  Class definition for the storage engine
+/**
+  A handler for a PERFORMANCE_SCHEMA table.
 */
 class ha_perfschema : public handler
 {
 public:
+  /** Constructor */
   ha_perfschema(handlerton *hton, TABLE_SHARE *share);
+
+  /** Destructor */
   ~ha_perfschema();
 
-  /** @brief
-    The name that will be used for display purposes.
-   */
   const char *table_type() const { return "PERFORMANCE_SCHEMA"; }
 
-  /** @brief
-    The name of the index type that will be used for display.
-    Don't implement this method unless you really have indexes.
-   */
-  const char *index_type(uint inx) { return "HASH"; }
-
-  /** @brief
-    The file extensions.
-   */
+  /** TODO: document class handler. */
+  const char *index_type(uint inx) { return ""; }
+
   const char **bas_ext() const;
 
-  /** @brief
-    This is a list of flags that indicate what functionality the storage engine
-    implements. The current table flags are documented in handler.h
+  /**
+    Capabilities of the performance schema tables.
   */
   ulonglong table_flags() const
   {
-    // TODO: HA_REC_NOT_IN_SEQ ?
     return HA_NO_TRANSACTIONS | HA_REC_NOT_IN_SEQ | HA_NO_AUTO_INCREMENT ;
   }
 
-  /** @brief
-    This is a bitmap of flags that indicates how the storage engine
-    implements indexes. The current index flags are documented in
-    handler.h. If you do not implement indexes, just return zero here.
-
-      @details
-    part is the key part to check. First key part is 0.
-    If all_parts is set, MySQL wants to know the flags for the combined
-    index, up to and including 'part'.
+  /**
+    Operations supported by indexes.
+    None, there are no indexes.
   */
   ulong index_flags(uint inx, uint part, bool all_parts) const
-  {
-    return 0;
-  }
+  { return 0; }
+
+  /** TODO: document class handler. */
+  uint max_supported_record_length() const
+  { return HA_MAX_REC_LENGTH; }
 
-  /** @brief
-    unireg.cc will call max_supported_record_length(), max_supported_keys(),
-    max_supported_key_parts(), uint max_supported_key_length()
-    to make sure that the storage engine can handle the data it is about to
-    send. Return *real* limits of your storage engine here; MySQL will do
-    min(your_limits, MySQL_limits) automatically.
-   */
-  uint max_supported_record_length() const { return HA_MAX_REC_LENGTH; }
-
-  /** @brief
-    unireg.cc will call this to make sure that the storage engine can handle
-    the data it is about to send. Return *real* limits of your storage engine
-    here; MySQL will do min(your_limits, MySQL_limits) automatically.
-
-      @details
-    There is no need to implement ..._key_... methods if your engine doesn't
-    support indexes.
-   */
+  /** TODO: document class handler. */
   uint max_supported_keys() const
   { return 0; }
 
-  /** @brief
-    unireg.cc will call this to make sure that the storage engine can handle
-    the data it is about to send. Return *real* limits of your storage engine
-    here; MySQL will do min(your_limits, MySQL_limits) automatically.
-
-      @details
-    There is no need to implement ..._key_... methods if your engine doesn't
-    support indexes.
-   */
+  /** TODO: document class handler. */
   uint max_supported_key_parts() const
   { return 0; }
 
-  /** @brief
-    unireg.cc will call this to make sure that the storage engine can handle
-    the data it is about to send. Return *real* limits of your storage engine
-    here; MySQL will do min(your_limits, MySQL_limits) automatically.
-
-      @details
-    There is no need to implement ..._key_... methods if your engine doesn't
-    support indexes.
-   */
+  /** TODO: document class handler. */
   uint max_supported_key_length() const
   { return 0; }
 
+  /** TODO: document class handler. */
   ha_rows estimate_rows_upper_bound()
   { return HA_POS_ERROR; }
 
-  /** @brief
-    Called in test_quick_select to determine if indexes should be used.
-  */
-  virtual double scan_time() { return (double) (stats.records+stats.deleted) / 20.0+10; }
+  /** TODO: document class handler. */
+  virtual double scan_time()
+  { return 1.0; }
 
-  /** @brief
-    This method will never be called if you do not implement indexes.
-  */
-  virtual double read_time(ha_rows rows) { return (double) rows /  20.0+1; }
+  /** TODO: document class handler. */
+  virtual double read_time(ha_rows rows)
+  { return 1.0; }
 
-  /*
-    Everything below are methods that we implement in ha_example.cc.
+  /** TODO: document class handler. */
+  int open(const char *name, int mode, uint test_if_locked);
 
-    Most of these methods are not obligatory, skip them and
-    MySQL will treat them as not implemented
-  */
-  /** @brief
-    We implement this in ha_example.cc; it's a required method.
-  */
-  int open(const char *name, int mode, uint test_if_locked);    // required
-
-  /** @brief
-    We implement this in ha_example.cc; it's a required method.
-  */
-  int close(void);                                              // required
+  /** TODO: document class handler. */
+  int close(void);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
+  /** TODO: document class handler. */
   int write_row(uchar *buf);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
+  /** TODO: document class handler. */
   int update_row(const uchar *old_data, uchar *new_data);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
+  /** TODO: document class handler. */
   int delete_row(const uchar *buf);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
   int index_read_map(uchar *buf, const uchar *key,
                      key_part_map keypart_map, enum ha_rkey_function find_flag);
 
@@ -184,59 +120,55 @@ public:
                                  key_part_map keypart_map,
                                  enum ha_rkey_function find_flag);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
-  int index_next(uchar *buf);
+  int rnd_init(bool scan);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
-  int index_prev(uchar *buf);
+  /** TODO: document class handler. */
+  int rnd_end();
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
-  int index_first(uchar *buf);
+  /** TODO: document class handler. */
+  int rnd_next(uchar *buf);
 
-  /** @brief
-    We implement this in ha_example.cc. It's not an obligatory method;
-    skip it and and MySQL will treat it as not implemented.
-  */
-  int index_last(uchar *buf);
+  /** TODO: document class handler. */
+  int rnd_pos(uchar *buf, uchar *pos);
 
-  /** @brief
-    Unlike index_init(), rnd_init() can be called two consecutive times
-    without rnd_end() in between (it only makes sense if scan=1). In this
-    case, the second call should prepare for the new table scan (e.g if
-    rnd_init() allocates the cursor, the second call should position the
-    cursor to the start of the table; no need to deallocate and allocate
-    it again. This is a required method.
-  */
-  int rnd_init(bool scan);                                      //required
-  int rnd_end();
-  int rnd_next(uchar *buf);                                     ///< required
-  int rnd_pos(uchar *buf, uchar *pos);                          ///< required
-  void position(const uchar *record);                           ///< required
-  int info(uint);                                               ///< required
+  /** TODO: document class handler. */
+  void position(const uchar *record);
+
+  /** TODO: document class handler. */
+  int info(uint);
+
+  /** TODO: document class handler. */
   int extra(enum ha_extra_function operation);
-  int external_lock(THD *thd, int lock_type);                   ///< required
+
+  /** TODO: document class handler. */
+  int external_lock(THD *thd, int lock_type);
+
   int delete_all_rows(void);
+
+  /** TODO: document class handler. */
   ha_rows records_in_range(uint inx, key_range *min_key,
                            key_range *max_key);
+
   int delete_table(const char *from);
+
   int rename_table(const char * from, const char * to);
+
+  /** TODO: document class handler. */
   int create(const char *name, TABLE *form,
-             HA_CREATE_INFO *create_info);                      ///< required
+             HA_CREATE_INFO *create_info);
 
   THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
-                             enum thr_lock_type lock_type);     ///< required
+                             enum thr_lock_type lock_type);
 
 private:
-  THR_LOCK_DATA lock;      /* MySQL lock */
+  /** MySQL lock */
+  THR_LOCK_DATA lock;
+  /** Performance schema specific metadata for this table handler. */
   const pse_table_info *m_table_info;
+  /** Performance schema table cursor. */
   pse_table *m_table;
 };
+
+/**
+  @}
+*/

=== modified file 'storage/perfschema/pse.cc'
--- a/storage/perfschema/pse.cc	2009-01-27 01:57:26 +0000
+++ b/storage/perfschema/pse.cc	2009-01-28 04:44:09 +0000
@@ -22,6 +22,173 @@
 #include "pse_timer.h"
 #include "pse_events_waits.h"
 
+/**
+  @page PAGE_PERFORMANCE_SCHEMA The Performance Schema Page
+  MySQL PERFORMANCE_SCHEMA implementation.
+
+  @section INTRO Introduction
+  The PERFORMANCE_SCHEMA is a way to introspect the internal execution of
+  the server at runtime. The performance schema focuses primarily on performance data,
+  as opposed to the INFORMATION_SCHEMA which purpose is to introspect metadata.
+
+  From a user point of view, the performance schema consist of:
+  - a dedicated database schema, named PERFORMANCE_SCHEMA,
+  - SQL tables, used to query the server internal state or change
+  configuration settings.
+
+  From an implementation point of view, the performance schema is a dedicated
+  Storage Engine which exposes data collected by 'Instrumentation Points' placed
+  in the server code.
+
+  @section INTERFACES Multiples interfaces
+
+  The performance schema exposes many different interfaces, for different components,
+  and for different purposes.
+
+  @subsection INT_INSTRUMENTING Instrumenting interface
+
+  All the data representing the server internal state exposed in the performance
+  schema must be first collected: this is the role of the instrumenting interface.
+  The instrumenting interface is a coding interface provided by implementors
+  (of the performance schema) to implementors (of the server or server components).
+
+  This interface is available to:
+  - C implementations
+  - C++ implementations
+  - the core SQL layer (/sql)
+  - the mysys library (/mysys)
+  - MySQL plugins, including storage engines,
+  - Third party plugins, including third party storage engines.
+
+  @subsection INT_COMPILING Compiling interface
+
+  The implementation of the performance schema can be enabled or disabled at
+  build time, when building MySQL from the source code.
+
+  When building with the performance schema code, some compilation flags are available
+  to change the default values used in the code, if required.
+
+  For more details, see:
+  @code
+  ./configure --help
+
+   === Performance Schema ===
+  Plugin Name:      perfschema
+  Description:      Performance Schema
+  Supports build:   static
+  Configurations:   default, max, max-no-ndb
+  @endcode
+
+  To compile with the performance schema:
+  @code
+  ./configure --with-perfschema
+  @endcode
+
+  The implementation of all the compiling options is located in
+  @code ./storage/perfschema/plug.in @endcode
+
+  @subsection INT_STARTUP Server startup interface
+
+  The server startup interface consist of the "./mysqld ..." command line used
+  to start the server. When the performance schema is compiled in the server binary,
+  extra command line options are available.
+
+  These extra start options allow the DBA to:
+  - enable or disable the performance schema
+  - specify some sizing parameters.
+
+  To see help for the performance schema startup options, see:
+  @code
+  ./sql/mysqld --pse-help
+  @endcode
+
+  The implementation of all the startup options is located in
+  @code ./storage/perfschema/pse_server.cc @endcode
+
+  @subsection INT_BOOTSTRAP Server bootstrap interface
+
+  The bootstrap interface is a private interface exposed by the performance schema,
+  and used by the SQL layer. It's role is to advertise all the SQL tables natively
+  supported by the performance schema to the SQL server.
+  The code consist of creating MySQL tables for the performance schema itself,
+  and is used in './mysql --bootstrap' mode when a server is installed.
+
+  The implementation of the bootstrap code is located in
+  @code ./storage/perfschema/pse_bootstrap.cc @endcode
+
+  @subsection INT_CONFIG Runtime configuration interface
+
+  When the performance schema is used at runtime, various configuration
+  parameters can be used to specify what kind of data is collected,
+  what kind of aggregations are computed, what kind of timers are used,
+  what events are timed, etc.
+
+  For all these capabilities, not a single statement or special syntax was introduced
+  in the parser.
+  Instead of new SQL statements, the interface consist of DML
+  (SELECT, INSERT, UPDATE, DELETE) against special "SETUP" tables.
+
+  For example:
+  @code
+  mysql> update performance_schema.setup_instruments set ENABLED='YES', TIMED='YES';
+  Query OK, 234 rows affected (0.00 sec)
+  Rows matched: 234  Changed: 234  Warnings: 0
+  @endcode
+
+  @subsection INT_STATUS Internal audit interface
+
+  The internal audit interface is provided to the DBA to inspect if the
+  performance schema code itself is functioning properly.
+  This interface is necessary because a failure caused while instrumenting code
+  in the server should not cause failures in the MySQL server itself, so that
+  the performance schema implementation never raises errors during runtime execution.
+
+  This auditing interface consist of:
+  @code
+  SHOW ENGINE PERFORMANCE_SCHEMA STATUS;
+  @endcode
+  It displays data related to the memory usage of the performance schema,
+  as well as statistics about lost events, if any.
+  
+  The SHOW STATUS command is implemented in
+  @code ./storage/perfschema/pse_table.cc @endcode
+
+  @subsection INT_QUERY Query interface
+
+  The query interface is used to query the internal state of a running server.
+  It is provided as SQL tables.
+
+  For example:
+  @code
+  mysql> select * from performance_schema.events_waits_current;
+  @endcode
+
+  @section DESIGN_PRINCIPES Design principes
+
+  TODO
+
+  @section IMPLEMENTATION One implementation
+
+  TODO
+
+  @section REFERENCES Modules references
+
+  TODO
+
+*/
+
+/**
+  @defgroup Performance_schema Performance Schema
+  The performance schema component.
+  For details, see the \ref PAGE_PERFORMANCE_SCHEMA "performance schema page".
+
+  @defgroup Performance_schema_implementation Performance Schema Implementation
+  @ingroup Performance_schema
+
+  @defgroup Performance_schema_tables Performance Schema Tables
+  @ingroup Performance_schema_implementation
+*/
+
 pthread_key(PSE_thread*, THR_PSE);
 
 uint locker_lost= 0;

=== modified file 'storage/perfschema/pse_instr.cc'
--- a/storage/perfschema/pse_instr.cc	2009-01-27 01:57:26 +0000
+++ b/storage/perfschema/pse_instr.cc	2009-01-28 04:44:09 +0000
@@ -21,6 +21,11 @@
 #include "pse_instr.h"
 #include "pse_global.h"
 
+/**
+  \addtogroup Performance_schema_buffers
+  @{
+*/
+
 uint mutex_max;
 uint mutex_lost;
 uint rwlock_max;
@@ -581,3 +586,6 @@ void reset_events_waits_by_instance()
   reset_file_waits_by_instance();
 }
 
+/**
+  @}
+*/

=== modified file 'storage/perfschema/pse_instr_info.cc'
--- a/storage/perfschema/pse_instr_info.cc	2009-01-27 01:57:26 +0000
+++ b/storage/perfschema/pse_instr_info.cc	2009-01-28 04:44:09 +0000
@@ -23,6 +23,12 @@
 #include <string.h>
 
 /**
+  @defgroup Performance_schema_buffers Performance Schema Buffers
+  @ingroup Performance_schema_implementation
+  @{
+*/
+
+/**
   Current number or elements in sync_info_array.
   This global variable is written to during:
   - the performance schema initialization
@@ -534,3 +540,6 @@ void reset_instrument_info_waits()
   reset_file_info_waits();
 }
 
+/**
+  @}
+*/

=== modified file 'storage/perfschema/pse_table.h'
--- a/storage/perfschema/pse_table.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/pse_table.h	2009-01-28 04:44:09 +0000
@@ -21,6 +21,11 @@ struct TABLE;
 struct pse_table_info;
 
 /**
+  \addtogroup Performance_schema_engine
+  @{
+*/
+
+/**
   An abstract PERFORMANCE_SCHEMA table.
   Every table implemented in the performance schema schema and storage engine
   derives from this class.
@@ -136,4 +141,7 @@ protected:
 bool pse_show_status(handlerton *hton, THD *thd,
                      stat_print_fn *print, enum ha_stat_type stat);
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_all_instr.h'
--- a/storage/perfschema/table_all_instr.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_all_instr.h	2009-01-28 04:44:09 +0000
@@ -21,6 +21,11 @@
 #include "pse_table.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   Position of a cursor on table_all_instr_info.
 */
 struct pos_all_instr_info
@@ -90,4 +95,7 @@ private:
   pos_all_instr m_next_pos;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_events_waits.h'
--- a/storage/perfschema/table_events_waits.h	2009-01-26 19:55:16 +0000
+++ b/storage/perfschema/table_events_waits.h	2009-01-28 04:44:09 +0000
@@ -23,6 +23,11 @@ struct PSE_thread;
 struct PSE_events_waits;
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of table_events_waits_common
 */
 struct row_events_waits
@@ -167,4 +172,7 @@ private:
   pos_events_waits_history_long m_next_pos;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_events_waits_summary.h'
--- a/storage/perfschema/table_events_waits_summary.h	2009-01-27 01:57:26 +0000
+++ b/storage/perfschema/table_events_waits_summary.h	2009-01-28 04:44:09 +0000
@@ -23,6 +23,11 @@
 #include "table_all_instr.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of table PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME.
 */
 struct row_events_waits_summary_by_thread_by_event_name
@@ -179,4 +184,7 @@ protected:
   bool m_row_exists;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_file_instances.h'
--- a/storage/perfschema/table_file_instances.h	2009-01-27 01:57:26 +0000
+++ b/storage/perfschema/table_file_instances.h	2009-01-28 04:44:09 +0000
@@ -20,6 +20,11 @@
 #include "pse_table.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.FILE_INSTANCES.
 */
 struct row_file_instances
@@ -72,4 +77,7 @@ private:
   bool m_row_exists;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_file_summary.h'
--- a/storage/perfschema/table_file_summary.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_file_summary.h	2009-01-28 04:44:09 +0000
@@ -22,6 +22,11 @@
 #include "pse_instr.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.FILE_SUMMARY_BY_EVENT_NAME.
 */
 struct row_file_summary_by_event_name
@@ -131,4 +136,7 @@ protected:
   bool m_row_exists;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_performance_timers.h'
--- a/storage/perfschema/table_performance_timers.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_performance_timers.h	2009-01-28 04:44:09 +0000
@@ -20,6 +20,11 @@
 #include "pse_table.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.PERFORMANCE_TIMERS.
 */
 struct row_performance_timers
@@ -70,4 +75,7 @@ private:
   row_performance_timers m_data[COUNT_TIMER_NAME];
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_processlist.h'
--- a/storage/perfschema/table_processlist.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_processlist.h	2009-01-28 04:44:09 +0000
@@ -22,6 +22,11 @@
 struct PSE_thread;
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.PROCESSLIST.
 */
 struct row_processlist
@@ -74,4 +79,7 @@ private:
   bool m_row_exists;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_setup_actors.h'
--- a/storage/perfschema/table_setup_actors.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_setup_actors.h	2009-01-28 04:44:09 +0000
@@ -20,6 +20,11 @@
 #include "pse_column_types.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.SETUP_ACTORS.
 */
 struct row_setup_actors
@@ -74,5 +79,8 @@ private:
   row_setup_actors *m_row;
 };
 
+/**
+  @}
+*/
 #endif
 

=== modified file 'storage/perfschema/table_setup_consumers.h'
--- a/storage/perfschema/table_setup_consumers.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_setup_consumers.h	2009-01-28 04:44:09 +0000
@@ -20,6 +20,11 @@
 #include "pse_table.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.SETUP_CONSUMERS.
 */
 struct row_setup_consumers
@@ -71,4 +76,7 @@ private:
   row_setup_consumers *m_row;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_setup_instruments.h'
--- a/storage/perfschema/table_setup_instruments.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_setup_instruments.h	2009-01-28 04:44:09 +0000
@@ -20,6 +20,11 @@
 #include "pse_table.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of PERFORMANCE_SCHEMA.SETUP_INSTRUMENTS.
 */
 struct row_setup_instruments
@@ -79,4 +84,7 @@ private:
   bool m_row_exists;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_setup_timers.h'
--- a/storage/perfschema/table_setup_timers.h	2009-01-24 02:51:45 +0000
+++ b/storage/perfschema/table_setup_timers.h	2009-01-28 04:44:09 +0000
@@ -20,6 +20,11 @@
 #include "pse_table.h"
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of table PERFORMANCE_SCHEMA.SETUP_TIMERS.
 */
 struct row_setup_timers
@@ -71,4 +76,7 @@ private:
   row_setup_timers *m_row;
 };
 
+/**
+  @}
+*/
 #endif

=== modified file 'storage/perfschema/table_sync_instances.h'
--- a/storage/perfschema/table_sync_instances.h	2009-01-27 01:57:26 +0000
+++ b/storage/perfschema/table_sync_instances.h	2009-01-28 04:44:09 +0000
@@ -24,6 +24,11 @@ struct PSE_rwlock;
 struct PSE_cond;
 
 /**
+  \addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
   A row of table PERFORMANCE_SCHEMA.MUTEX_INSTANCES.
 */
 struct row_mutex_instances
@@ -181,4 +186,7 @@ private:
   bool m_row_exists;
 };
 
+/**
+  @}
+*/
 #endif

Thread
bzr commit into mysql-6.0-perf branch (marc.alff:2777) Marc Alff28 Jan