List:Commits« Previous MessageNext Message »
From:Mayank Prasad Date:May 11 2011 9:46am
Subject:bzr push into mysql-trunk-wl5767 branch (mayank.prasad:3366 to 3367) WL#5767
View as plain text  
 3367 Mayank Prasad	2011-05-10
      WL#5767 : First commit with skeleton code
      
      Changes Description:
      --------------------
      Following coding is done as per LLD:
      1)
        - Add new columns to events_statements_current / history / history_long tables.
        - Expose them as NULL.
              >> Coded.
      2)
        - Create a new table events_statements_summary_by_digest
        - C++ file for this table:
        - storage/perfschema/table_esms_by_digest.h, .cc
              >> Coded.
      3)
        - Add a new perfschema startup option:
        - performance-schema-digests-size
              >> Coded.
      4)
        - Define new structures for internal buffers for events_statements_summary_by_digest
        - C++ files
        - storage/perfschema/pfs_digest.h, .cc
        - PFS_statement_digest_stat structure
        - statement_digest_stat_array[]
              >> Skeleton Coded.
      5)
        - Change the performance schema initialization to allocate memory
        - for buffers in 4), using the size from 3)
              >> Skeleton Coded.

    added:
      storage/perfschema/pfs_digest.cc
      storage/perfschema/pfs_digest.h
      storage/perfschema/table_esms_by_digest.cc
      storage/perfschema/table_esms_by_digest.h
    modified:
      scripts/mysql_system_tables.sql
      sql/sys_vars.cc
      storage/perfschema/CMakeLists.txt
      storage/perfschema/pfs_column_types.h
      storage/perfschema/pfs_engine_table.cc
      storage/perfschema/pfs_server.cc
      storage/perfschema/pfs_server.h
      storage/perfschema/table_events_statements.cc
      storage/perfschema/table_events_statements.h
 3366 Marc Alff	2011-05-04
      New tree

    modified:
      .bzr-mysql/default.conf
=== modified file 'scripts/mysql_system_tables.sql'
--- a/scripts/mysql_system_tables.sql	2011-03-18 22:51:17 +0000
+++ b/scripts/mysql_system_tables.sql	2011-05-10 18:26:49 +0000
@@ -873,7 +873,8 @@ SET @cmd="CREATE TABLE performance_schem
   "NO_INDEX_USED BIGINT unsigned not null,"
   "NO_GOOD_INDEX_USED BIGINT unsigned not null,"
   "NESTING_EVENT_ID BIGINT unsigned,"
-  "NESTING_EVENT_TYPE ENUM('STATEMENT', 'STAGE', 'WAIT')"
+  "NESTING_EVENT_TYPE ENUM('STATEMENT', 'STAGE', 'WAIT'),"
+  "DIGEST VARCHAR(64) not null"
   ")ENGINE=PERFORMANCE_SCHEMA;";
 
 SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
@@ -922,7 +923,8 @@ SET @cmd="CREATE TABLE performance_schem
   "NO_INDEX_USED BIGINT unsigned not null,"
   "NO_GOOD_INDEX_USED BIGINT unsigned not null,"
   "NESTING_EVENT_ID BIGINT unsigned,"
-  "NESTING_EVENT_TYPE ENUM('STATEMENT', 'STAGE', 'WAIT')"
+  "NESTING_EVENT_TYPE ENUM('STATEMENT', 'STAGE', 'WAIT'),"
+  "DIGEST VARCHAR(64) not null"
   ")ENGINE=PERFORMANCE_SCHEMA;";
 
 SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
@@ -971,7 +973,8 @@ SET @cmd="CREATE TABLE performance_schem
   "NO_INDEX_USED BIGINT unsigned not null,"
   "NO_GOOD_INDEX_USED BIGINT unsigned not null,"
   "NESTING_EVENT_ID BIGINT unsigned,"
-  "NESTING_EVENT_TYPE ENUM('STATEMENT', 'STAGE', 'WAIT')"
+  "NESTING_EVENT_TYPE ENUM('STATEMENT', 'STAGE', 'WAIT'),"
+  "DIGEST VARCHAR(64) not null"
   ")ENGINE=PERFORMANCE_SCHEMA;";
 
 SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
@@ -1054,6 +1057,21 @@ PREPARE stmt FROM @str;
 EXECUTE stmt;
 DROP PREPARE stmt;
 
+--
+-- TABLE EVENTS_STATEMENTS_SUMMARY_BY_DIGEST
+--
+
+SET @cmd="CREATE TABLE performance_schema.events_statements_summary_by_digest("
+  "DIGEST VARCHAR(64) not null,"
+  "COUNT_STAR BIGINT unsigned not null"
+  ")ENGINE=PERFORMANCE_SCHEMA;";
+
+
+SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
+PREPARE stmt FROM @str;
+EXECUTE stmt;
+DROP PREPARE stmt;
+
 
 CREATE TABLE IF NOT EXISTS proxies_priv (Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Proxied_host char(60) binary DEFAULT '' NOT NULL, Proxied_user char(16) binary DEFAULT '' NOT NULL, With_grant BOOL DEFAULT 0 NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY Host (Host,User,Proxied_host,Proxied_user), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User proxy privileges';
 

=== modified file 'sql/sys_vars.cc'
--- a/sql/sys_vars.cc	2011-04-11 10:28:36 +0000
+++ b/sql/sys_vars.cc	2011-05-10 18:26:49 +0000
@@ -272,6 +272,14 @@ static Sys_var_ulong Sys_pfs_events_stat
        DEFAULT(PFS_STATEMENTS_HISTORY_SIZE),
        BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);
 
+static Sys_var_ulong Sys_pfs_digest_size(
+       "performance_schema_digests_size",
+       "TBD.",
+       READ_ONLY GLOBAL_VAR(pfs_param.m_digest_sizing),
+       CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 200),
+       DEFAULT(PFS_DIGEST_SIZE),
+       BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);
+
 #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */
 
 static Sys_var_ulong Sys_auto_increment_increment(

=== modified file 'storage/perfschema/CMakeLists.txt'
--- a/storage/perfschema/CMakeLists.txt	2011-02-14 14:23:55 +0000
+++ b/storage/perfschema/CMakeLists.txt	2011-05-10 18:26:49 +0000
@@ -32,6 +32,7 @@ pfs_column_types.h
 pfs_column_values.h
 pfs_con_slice.h
 pfs_defaults.h
+pfs_digest.h
 pfs_engine_table.h
 pfs_events.h
 pfs_events_stages.h
@@ -50,6 +51,7 @@ pfs_visitor.h
 table_all_instr.h
 table_esgs_by_thread_by_event_name.h
 table_esgs_global_by_event_name.h
+table_esms_by_digest.h
 table_esms_by_thread_by_event_name.h
 table_esms_global_by_event_name.h
 table_events_stages.h
@@ -80,6 +82,7 @@ pfs_check.cc
 pfs_column_values.cc
 pfs_con_slice.cc
 pfs_defaults.cc
+pfs_digest.cc
 pfs_engine_table.cc
 pfs_events_stages.cc
 pfs_events_statements.cc
@@ -95,6 +98,7 @@ pfs_visitor.cc
 table_all_instr.cc
 table_esgs_by_thread_by_event_name.cc
 table_esgs_global_by_event_name.cc
+table_esms_by_digest.cc
 table_esms_by_thread_by_event_name.cc
 table_esms_global_by_event_name.cc
 table_events_stages.cc

=== modified file 'storage/perfschema/pfs_column_types.h'
--- a/storage/perfschema/pfs_column_types.h	2011-04-04 14:34:42 +0000
+++ b/storage/perfschema/pfs_column_types.h	2011-05-10 18:26:49 +0000
@@ -53,6 +53,9 @@
 /** Size of the SOURCE columns. */
 #define COL_SOURCE_SIZE 64
 
+/** Size of the Digest columns. */
+#define COL_DIGEST_SIZE 64
+
 /**
   Enum values for the TIMER_NAME columns.
   This enum is found in the following tables:

=== added file 'storage/perfschema/pfs_digest.cc'
--- a/storage/perfschema/pfs_digest.cc	1970-01-01 00:00:00 +0000
+++ b/storage/perfschema/pfs_digest.cc	2011-05-10 18:26:49 +0000
@@ -0,0 +1,51 @@
+/* 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/pfs_digest.h
+  Statement Digest data structures (implementation).
+*/
+
+#include "pfs_digest.h"
+
+/** EVENTS_STATEMENTS_HISTORY_LONG circular buffer. */
+PFS_statements_digest_stat *statements_digest_stat_array= NULL;
+
+
+/**
+  Initialize table EVENTS_STATEMENTS_SUMMARY_BY_DIGEST.
+  @param digest_sizing      
+*/
+int init_digest(unsigned int digest_sizing)
+{
+  printf("\n Initializing performance_schema_digests with\
+         digest_sizing=%d\n",digest_sizing);
+
+  /* 
+    TBD. Allocate memory for statements_digest_stat_array based on 
+    performance_schema_digests_size values
+  */
+  return 0;
+}
+
+/** Cleanup table EVENTS_STATEMENTS_SUMMARY_BY_DIGEST. */
+int cleanup_digest(void)
+{
+  printf("\n Yes, cleaning up performance_schema_digests\n");
+  /* 
+    TBD. Free memory allocated to statements_digest_stat_array. 
+  */
+  return 0;
+}

=== added file 'storage/perfschema/pfs_digest.h'
--- a/storage/perfschema/pfs_digest.h	1970-01-01 00:00:00 +0000
+++ b/storage/perfschema/pfs_digest.h	2011-05-10 18:26:49 +0000
@@ -0,0 +1,35 @@
+/* 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 PFS_DIGEST_H
+#define PFS_DIGEST_H
+
+/**
+  @file storage/perfschema/pfs_digest.h
+  Statement Digest data structures (declarations).
+*/
+
+#include <stdio.h>
+
+/** A statement stat record based on digest. */
+struct PFS_statements_digest_stat
+{
+  /* TBD */
+};
+
+int init_digest(unsigned int digest_sizing);
+int cleanup_digest();
+
+#endif

=== modified file 'storage/perfschema/pfs_engine_table.cc'
--- a/storage/perfschema/pfs_engine_table.cc	2011-02-15 14:31:13 +0000
+++ b/storage/perfschema/pfs_engine_table.cc	2011-05-10 18:26:49 +0000
@@ -46,6 +46,7 @@
 #include "table_events_statements.h"
 #include "table_esms_by_thread_by_event_name.h"
 #include "table_esms_global_by_event_name.h"
+#include "table_esms_by_digest.h"
 
 /* For show status */
 #include "pfs_column_values.h"
@@ -99,6 +100,7 @@ static PFS_engine_table_share *all_share
   &table_events_statements_history_long::m_share,
   &table_esms_by_thread_by_event_name::m_share,
   &table_esms_global_by_event_name::m_share,
+  &table_esms_by_digest::m_share,
 
   NULL
 };

=== modified file 'storage/perfschema/pfs_server.cc'
--- a/storage/perfschema/pfs_server.cc	2011-02-14 14:23:55 +0000
+++ b/storage/perfschema/pfs_server.cc	2011-05-10 18:26:49 +0000
@@ -33,6 +33,7 @@
 #include "pfs_setup_actor.h"
 #include "pfs_setup_object.h"
 #include "pfs_defaults.h"
+#include "pfs_digest.h"
 
 PFS_global_param pfs_param;
 
@@ -85,7 +86,8 @@ initialize_performance_schema(const PFS_
       init_setup_actor(param) ||
       init_setup_actor_hash() ||
       init_setup_object(param) ||
-      init_setup_object_hash())
+      init_setup_object_hash() ||
+      init_digest(param->m_digest_sizing))
   {
     /*
       The performance schema initialization failed.
@@ -137,6 +139,7 @@ static void cleanup_performance_schema(v
   cleanup_setup_actor_hash();
   cleanup_setup_object();
   cleanup_setup_object_hash();
+  cleanup_digest();
   PFS_atomic::cleanup();
 }
 

=== modified file 'storage/perfschema/pfs_server.h'
--- a/storage/perfschema/pfs_server.h	2011-04-04 14:34:42 +0000
+++ b/storage/perfschema/pfs_server.h	2011-05-10 18:26:49 +0000
@@ -90,6 +90,9 @@
 #ifndef PFS_STATEMENTS_STACK_SIZE
   #define PFS_STATEMENTS_STACK_SIZE 10
 #endif
+#ifndef PFS_DIGEST_SIZE
+  #define PFS_DIGEST_SIZE 100
+#endif
 
 /** Performance schema global sizing parameters. */
 struct PFS_global_param
@@ -187,6 +190,8 @@ struct PFS_global_param
   ulong m_events_statements_history_sizing;
   /** Maximum number of rows in table EVENTS_STATEMENTS_HISTORY_LONG. */
   ulong m_events_statements_history_long_sizing;
+  /** Maximum number of digests to be captured */
+  ulong m_digest_sizing;
 };
 
 /**

=== added file 'storage/perfschema/table_esms_by_digest.cc'
--- a/storage/perfschema/table_esms_by_digest.cc	1970-01-01 00:00:00 +0000
+++ b/storage/perfschema/table_esms_by_digest.cc	2011-05-10 18:26:49 +0000
@@ -0,0 +1,167 @@
+/* Copyright (c) 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, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
+
+/**
+  @file storage/perfschema/table_esms_by_digest.cc
+  Table EVENTS_STATEMENTS_SUMMARY_GLOBAL_BY_DIGEST (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_esms_by_digest.h"
+#include "pfs_global.h"
+#include "pfs_instr.h"
+#include "pfs_timer.h"
+#include "pfs_visitor.h"
+#include "table_esms_by_digest.h"
+
+THR_LOCK table_esms_by_digest::m_table_lock;
+
+static const TABLE_FIELD_TYPE field_types[]=
+{
+  /* TBD */
+  {
+    { C_STRING_WITH_LEN("DIGEST") },
+    { C_STRING_WITH_LEN("varchar(64)") },
+    { NULL, 0}
+  },
+  { 
+    { C_STRING_WITH_LEN("COUNT_STAR") },
+    { C_STRING_WITH_LEN("bigint(20)") },
+    { NULL, 0}
+  },
+};
+
+TABLE_FIELD_DEF
+table_esms_by_digest::m_field_def=
+{ 2, field_types };
+
+PFS_engine_table_share
+table_esms_by_digest::m_share=
+{
+  { C_STRING_WITH_LEN("events_statements_summary_by_digest") },
+  &pfs_truncatable_acl,
+  table_esms_by_digest::create,
+  NULL, /* write_row */
+  table_esms_by_digest::delete_all_rows,
+  NULL, /* get_row_count */
+  1000, /* records */
+  sizeof(PFS_simple_index),
+  &m_table_lock,
+  &m_field_def,
+  false /* checked */
+};
+
+PFS_engine_table*
+table_esms_by_digest::create(void)
+{
+  return new table_esms_by_digest();
+}
+
+int
+table_esms_by_digest::delete_all_rows(void)
+{
+  /* TBD */
+  return 0;
+}
+
+table_esms_by_digest::table_esms_by_digest()
+  : PFS_engine_table(&m_share, &m_pos),
+    m_row_exists(false), m_pos(1), m_next_pos(1)
+{}
+
+void table_esms_by_digest::reset_position(void)
+{
+  m_pos= 1;
+  m_next_pos= 1;
+}
+
+int table_esms_by_digest::rnd_next(void)
+{
+  PFS_stage_class *stage_class;
+
+  if (global_instr_class_stages_array == NULL)
+    return HA_ERR_END_OF_FILE;
+
+  m_pos.set_at(&m_next_pos);
+
+  stage_class= find_stage_class(m_pos.m_index);
+  if (stage_class)
+  {
+    make_row(/*TBD*/);
+    m_next_pos.set_after(&m_pos);
+    return 0;
+  }
+
+  return HA_ERR_END_OF_FILE;
+}
+
+int
+table_esms_by_digest::rnd_pos(const void *pos)
+{
+  PFS_stage_class *stage_class;
+
+  set_position(pos);
+
+  if (global_instr_class_stages_array == NULL)
+    return HA_ERR_END_OF_FILE;
+
+  stage_class=find_stage_class(m_pos.m_index);
+  if (stage_class)
+  {
+    make_row(/*TBD*/);
+    return 0;
+  }
+
+  return HA_ERR_RECORD_DELETED;
+}
+
+
+void table_esms_by_digest::make_row(/*TBD*/)
+{
+  /* TBD */
+  m_row_exists= true;
+}
+
+int table_esms_by_digest
+::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)
+      {
+      default: /* TBD */
+        break;
+      }
+    }
+  }
+
+  return 0;
+}
+

=== added file 'storage/perfschema/table_esms_by_digest.h'
--- a/storage/perfschema/table_esms_by_digest.h	1970-01-01 00:00:00 +0000
+++ b/storage/perfschema/table_esms_by_digest.h	2011-05-10 18:26:49 +0000
@@ -0,0 +1,91 @@
+/* Copyright (c) 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, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
+
+#ifndef TABLE_ESMS_BY_DIGEST_H
+#define TABLE_ESMS_BY_DIGEST_H
+
+/**
+  @file storage/perfschema/table_esms_by_digest.h
+  Table EVENTS_STATEMENTS_SUMMARY_BY_DIGEST (declarations).
+*/
+
+#include "table_helper.h"
+
+/**
+  @addtogroup Performance_schema_tables
+  @{
+*/
+
+/**
+  A row of table
+  PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_DIGEST.
+*/
+struct row_esms_by_digest
+{
+  /** Columns TBD. Adding few dummy as of now. */
+   
+  /** Column DIGEST. */
+  char m_digest[COL_DIGEST_SIZE];
+
+  /** Columns COUNT_STAR, SUM/MIN/AVG/MAX TIMER_WAIT. */
+  PFS_statement_stat_row m_stat;
+};
+
+/** Table PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_DIGEST. */
+class table_esms_by_digest : public PFS_engine_table
+{
+public:
+  /** Table share */
+  static PFS_engine_table_share m_share;
+  static PFS_engine_table* create();
+  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);
+
+  table_esms_by_digest();
+
+public:
+  ~table_esms_by_digest()
+  {}
+
+protected:
+  void make_row(/*TBD*/);
+
+private:
+  /** Table share lock. */
+  static THR_LOCK m_table_lock;
+  /** Fields definition. */
+  static TABLE_FIELD_DEF m_field_def;
+
+  /** Current row. */
+  row_esms_by_digest m_row;
+  /** True is the current row exists. */
+  bool m_row_exists;
+  /** Current position. */
+  PFS_simple_index m_pos;
+  /** Next position. */
+  PFS_simple_index m_next_pos;
+};
+
+/** @} */
+#endif

=== modified file 'storage/perfschema/table_events_statements.cc'
--- a/storage/perfschema/table_events_statements.cc	2011-02-14 14:23:55 +0000
+++ b/storage/perfschema/table_events_statements.cc	2011-05-10 18:26:49 +0000
@@ -216,12 +216,17 @@ static const TABLE_FIELD_TYPE field_type
     { C_STRING_WITH_LEN("NESTING_EVENT_TYPE") },
     { C_STRING_WITH_LEN("enum(\'STATEMENT\',\'STAGE\',\'WAIT\'") },
     { NULL, 0}
+  },
+  {
+    { C_STRING_WITH_LEN("DIGEST") },
+    { C_STRING_WITH_LEN("varchar(64)") },
+    { NULL, 0}
   }
 };
 
 TABLE_FIELD_DEF
 table_events_statements_current::m_field_def=
-{37 , field_types };
+{38 , field_types };
 
 PFS_engine_table_share
 table_events_statements_current::m_share=
@@ -351,6 +356,9 @@ void table_events_statements_common::mak
   m_row.m_no_index_used= statement->m_no_index_used;
   m_row.m_no_good_index_used= statement->m_no_good_index_used;
 
+  /* TBD. Following */
+  strcpy(m_row.m_digest, "Mayank");
+
   m_row_exists= true;
   return;
 }
@@ -519,6 +527,9 @@ int table_events_statements_common::read
         else
           f->set_null();
         break;
+      case 37: /* DIGEST */
+        /* TBD */
+        break;
       default:
         DBUG_ASSERT(false);
       }

=== modified file 'storage/perfschema/table_events_statements.h'
--- a/storage/perfschema/table_events_statements.h	2011-02-14 14:23:55 +0000
+++ b/storage/perfschema/table_events_statements.h	2011-05-10 18:26:49 +0000
@@ -110,6 +110,8 @@ struct row_events_statements
   ulonglong m_no_index_used;
   /** Column NO_GOOD_INDEX_USED. */
   ulonglong m_no_good_index_used;
+  /** Column DIGEST. */
+  char m_digest[COL_DIGEST_SIZE];
 };
 
 /** Position of a cursor on PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_CURRENT. */

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-trunk-wl5767 branch (mayank.prasad:3366 to 3367) WL#5767Mayank Prasad11 May