List:Commits« Previous MessageNext Message »
From:Marc Alff Date:July 16 2010 1:26am
Subject:bzr push into mysql-trunk-bugfixing branch (marc.alff:3112 to 3119) Bug#52134
View as plain text  
 3119 Marc Alff	2010-07-15
      Bug#52134 performance schema file io, symlink in path
      
      Backport from mysql-next-mr (5.6) to mysql-trunk (5.5)

    modified:
      storage/perfschema/pfs_instr.cc
 3118 Marc Alff	2010-07-15
      Bug#53617 Missing performance schema tables not reported in the server log at startup
      
      Backport from mysql-next-mr (5.6) to mysql-trunk (5.5)

    modified:
      storage/perfschema/pfs_engine_table.cc
 3117 Marc Alff	2010-07-15
      Bug#52502 Performance schema does not start with large mutex_instance buffers
      
      Backport from mysql-next-mr (5.6) to mysql-trunk (5.5)

    modified:
      storage/perfschema/pfs_global.h
      storage/perfschema/pfs_instr.cc
      storage/perfschema/pfs_instr.h
 3116 Marc Alff	2010-07-15
      Bug#52586 Misleading error message on attempt to access a P_S table using a wrong name
      
      Backport from mysql-next-mr (5.6) to mysql-trunk (5.5)

    modified:
      mysql-test/suite/perfschema/r/misc.result
      mysql-test/suite/perfschema/t/misc.test
      storage/perfschema/pfs_engine_table.cc
 3115 Marc Alff	2010-07-15
      Bug#53566 SHOW ENGINE PERFORMANCE_SCHEMA STATUS reports less memory than really used
      
      Backporting the fix from myql-next-mr (5.6) to mysql-trunk (5.5)

    modified:
      storage/perfschema/pfs_engine_table.cc
      storage/perfschema/pfs_global.cc
      storage/perfschema/pfs_global.h
 3114 Marc Alff	2010-07-15
      Bug#53148 Remove PFS_readonly_table
      
      This fix is for cleanup, to resolve a remaining code review item.
      Backport from mysql-next-mr (5.6) to mysql-trunk (5.5).

    modified:
      storage/perfschema/pfs_engine_table.cc
      storage/perfschema/pfs_engine_table.h
      storage/perfschema/table_all_instr.cc
      storage/perfschema/table_all_instr.h
      storage/perfschema/table_events_waits.cc
      storage/perfschema/table_events_waits.h
      storage/perfschema/table_events_waits_summary.cc
      storage/perfschema/table_events_waits_summary.h
      storage/perfschema/table_file_instances.cc
      storage/perfschema/table_file_instances.h
      storage/perfschema/table_file_summary.cc
      storage/perfschema/table_file_summary.h
      storage/perfschema/table_performance_timers.cc
      storage/perfschema/table_performance_timers.h
      storage/perfschema/table_processlist.cc
      storage/perfschema/table_processlist.h
      storage/perfschema/table_sync_instances.cc
      storage/perfschema/table_sync_instances.h
 3113 Marc Alff	2010-07-15
      Fixed Copyright headers in storage/perfschema
      
      Fixed minor merge issues with #includes

    modified:
      storage/perfschema/CMakeLists.txt
      storage/perfschema/Makefile.am
      storage/perfschema/ha_perfschema.cc
      storage/perfschema/ha_perfschema.h
      storage/perfschema/pfs.cc
      storage/perfschema/pfs.h
      storage/perfschema/pfs_atomic.cc
      storage/perfschema/pfs_atomic.h
      storage/perfschema/pfs_check.cc
      storage/perfschema/pfs_column_types.h
      storage/perfschema/pfs_column_values.cc
      storage/perfschema/pfs_column_values.h
      storage/perfschema/pfs_events_waits.cc
      storage/perfschema/pfs_events_waits.h
      storage/perfschema/pfs_instr_class.cc
      storage/perfschema/pfs_instr_class.h
      storage/perfschema/pfs_lock.h
      storage/perfschema/pfs_server.cc
      storage/perfschema/pfs_server.h
      storage/perfschema/pfs_stat.h
      storage/perfschema/pfs_timer.cc
      storage/perfschema/pfs_timer.h
      storage/perfschema/plug.in
      storage/perfschema/table_setup_consumers.cc
      storage/perfschema/table_setup_consumers.h
      storage/perfschema/table_setup_instruments.cc
      storage/perfschema/table_setup_instruments.h
      storage/perfschema/table_setup_timers.cc
      storage/perfschema/table_setup_timers.h
      storage/perfschema/unittest/CMakeLists.txt
      storage/perfschema/unittest/conf.txt
      storage/perfschema/unittest/pfs-t.cc
      storage/perfschema/unittest/pfs_instr-oom-t.cc
      storage/perfschema/unittest/pfs_instr-t.cc
      storage/perfschema/unittest/pfs_instr_class-oom-t.cc
      storage/perfschema/unittest/pfs_instr_class-t.cc
      storage/perfschema/unittest/pfs_timer-t.cc
      storage/perfschema/unittest/stub_pfs_global.h
      storage/perfschema/unittest/stub_print_error.h
 3112 Davi Arnaut	2010-07-15
      WL#5486: Remove code for unsupported platforms
      
      Remove OS/2 specific code.

    modified:
      libmysqld/lib_sql.cc
=== modified file 'mysql-test/suite/perfschema/r/misc.result'
--- a/mysql-test/suite/perfschema/r/misc.result	2010-02-26 17:39:57 +0000
+++ b/mysql-test/suite/perfschema/r/misc.result	2010-07-16 00:50:39 +0000
@@ -25,3 +25,5 @@ drop table test.ghost;
 select * from performance_schema.FILE_INSTANCES
 where file_name like "%ghost%";
 FILE_NAME	EVENT_NAME	OPEN_COUNT
+select * from performance_schema.no_such_table;
+ERROR 42S02: Table 'performance_schema.no_such_table' doesn't exist

=== modified file 'mysql-test/suite/perfschema/t/misc.test'
--- a/mysql-test/suite/perfschema/t/misc.test	2010-03-16 14:19:45 +0000
+++ b/mysql-test/suite/perfschema/t/misc.test	2010-07-16 00:50:39 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Sun Microsystems, Inc
+# Copyright (c) 2009, 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
@@ -10,15 +10,14 @@
 # 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
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
 
 # Tests for PERFORMANCE_SCHEMA
 # Miscelaneous
 
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
---source include/not_var_link.inc
 
 #
 # Bug#45496 Performance schema: assertion fails in
@@ -77,3 +76,10 @@ drop table test.ghost;
 select * from performance_schema.FILE_INSTANCES
   where file_name like "%ghost%";
 
+#
+# Bug#52586 Misleading error message on attempt to access
+#           a P_S table using a wrong name
+
+--error ER_NO_SUCH_TABLE
+select * from performance_schema.no_such_table;
+

=== modified file 'storage/perfschema/CMakeLists.txt'
--- a/storage/perfschema/CMakeLists.txt	2010-02-01 22:46:02 +0000
+++ b/storage/perfschema/CMakeLists.txt	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Sun Microsystems, Inc.
+# Copyright (c) 2009, 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
@@ -10,9 +10,8 @@
 # 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
 
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}
                     ${CMAKE_SOURCE_DIR}/include

=== modified file 'storage/perfschema/Makefile.am'
--- a/storage/perfschema/Makefile.am	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/Makefile.am	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2009 Sun Microsystems, Inc
+# 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
@@ -10,8 +10,8 @@
 # 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
 
 #called from the top level Makefile
 

=== modified file 'storage/perfschema/ha_perfschema.cc'
--- a/storage/perfschema/ha_perfschema.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/ha_perfschema.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,18 +10,19 @@
   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 */
+  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/ha_perfschema.cc
   Performance schema storage engine (implementation).
 */
 
-#include "sql_priv.h"
-#include "unireg.h"
-#include "ha_perfschema.h"
+#include "my_global.h"
+#include "my_pthread.h"
+#include "sql_plugin.h"
 #include "mysql/plugin.h"
+#include "ha_perfschema.h"
 #include "pfs_engine_table.h"
 #include "pfs_column_values.h"
 #include "pfs_instr_class.h"
@@ -145,7 +146,7 @@ mysql_declare_plugin(perfschema)
   MYSQL_STORAGE_ENGINE_PLUGIN,
   &pfs_storage_engine,
   pfs_engine_name,
-  "Marc Alff, Sun Microsystems",
+  "Marc Alff, Oracle", /* Formerly Sun Microsystems, formerly MySQL */
   "Performance Schema",
   PLUGIN_LICENSE_GPL,
   pfs_init_func,                                /* Plugin Init */

=== modified file 'storage/perfschema/ha_perfschema.h'
--- a/storage/perfschema/ha_perfschema.h	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/ha_perfschema.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef HA_PERFSCHEMA_H
 #define HA_PERFSCHEMA_H

=== modified file 'storage/perfschema/pfs.cc'
--- a/storage/perfschema/pfs.cc	2010-07-09 23:00:24 +0000
+++ b/storage/perfschema/pfs.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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.cc

=== modified file 'storage/perfschema/pfs.h'
--- a/storage/perfschema/pfs.h	2010-04-06 14:08:51 +0000
+++ b/storage/perfschema/pfs.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_H
 #define PFS_H
@@ -23,9 +23,8 @@
 
 #define HAVE_PSI_1
 
-#include <sql_priv.h>
 #include <my_global.h>
-#include <unireg.h>
+#include <my_pthread.h>
 #include <mysql/psi/psi.h>
 
 extern struct PSI_bootstrap PFS_bootstrap;

=== modified file 'storage/perfschema/pfs_atomic.cc'
--- a/storage/perfschema/pfs_atomic.cc	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_atomic.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009 Sun Microsystems, Inc
+/* Copyright (c) 2009, 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
@@ -10,8 +10,8 @@
   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 */
+  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_atomic.cc

=== modified file 'storage/perfschema/pfs_atomic.h'
--- a/storage/perfschema/pfs_atomic.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_atomic.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009 Sun Microsystems, Inc
+/* Copyright (c) 2009, 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_ATOMIC_H
 #define PFS_ATOMIC_H

=== modified file 'storage/perfschema/pfs_check.cc'
--- a/storage/perfschema/pfs_check.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/pfs_check.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009 Sun Microsystems, Inc
+/* Copyright (c) 2009, 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
@@ -10,8 +10,8 @@
   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 */
+  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_check.cc
@@ -23,7 +23,6 @@
 */
 
 #include "my_global.h"
-#include "sql_priv.h"
 #include "pfs_server.h"
 #include "pfs_engine_table.h"
 

=== modified file 'storage/perfschema/pfs_column_types.h'
--- a/storage/perfschema/pfs_column_types.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_column_types.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_COLUMN_TYPES_H
 #define PFS_COLUMN_TYPES_H

=== modified file 'storage/perfschema/pfs_column_values.cc'
--- a/storage/perfschema/pfs_column_values.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/pfs_column_values.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_column_values.cc
@@ -19,7 +19,6 @@
   schema tables (implementation).
 */
 
-#include "sql_priv.h"
 #include "pfs_column_values.h"
 
 LEX_STRING PERFORMANCE_SCHEMA_str=

=== modified file 'storage/perfschema/pfs_column_values.h'
--- a/storage/perfschema/pfs_column_values.h	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/pfs_column_values.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_COLUMN_VALUES_H
 #define PFS_COLUMN_VALUES_H

=== modified file 'storage/perfschema/pfs_engine_table.cc'
--- a/storage/perfschema/pfs_engine_table.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/pfs_engine_table.cc	2010-07-16 01:18:44 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,15 +10,14 @@
   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 */
+  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_engine_table.cc
   Performance schema tables (implementation).
 */
 
-#include "sql_priv.h"
 #include "pfs_engine_table.h"
 
 #include "table_events_waits.h"
@@ -36,6 +35,7 @@
 /* For show status */
 #include "pfs_column_values.h"
 #include "pfs_instr.h"
+#include "pfs_global.h"
 
 #include "sql_base.h"                           // close_thread_tables
 #include "lock.h"                               // MYSQL_LOCK_IGNORE_TIMEOUT
@@ -108,7 +108,12 @@ void PFS_check_intact::report_error(uint
   my_vsnprintf(buff, sizeof(buff), fmt, args);
   va_end(args);
 
-  my_message(code, buff, MYF(0));
+  /*
+    This is an install/upgrade issue:
+    - do not report it in the user connection, there is none in main(),
+    - report it in the server error log.
+  */
+  sql_print_error("%s", buff);
 }
 
 /**
@@ -139,6 +144,9 @@ void PFS_engine_table_share::check_one_t
       m_checked= true;
     close_thread_tables(thd);
   }
+  else
+    sql_print_error(ER(ER_WRONG_NATIVE_TABLE_STRUCTURE),
+                    PERFORMANCE_SCHEMA_str.str, m_name.str);
 
   lex_end(&dummy_lex);
   thd->lex= old_lex;
@@ -327,10 +335,10 @@ ulonglong PFS_engine_table::get_field_en
   return f2->val_int();
 }
 
-int PFS_readonly_table::update_row_values(TABLE *,
-                                          const unsigned char *,
-                                          unsigned char *,
-                                          Field **)
+int PFS_engine_table::update_row_values(TABLE *,
+                                        const unsigned char *,
+                                        unsigned char *,
+                                        Field **)
 {
   my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
   return HA_ERR_WRONG_COMMAND;
@@ -466,7 +474,22 @@ PFS_unknown_acl pfs_unknown_acl;
 ACL_internal_access_result
 PFS_unknown_acl::check(ulong want_access, ulong *save_priv) const
 {
-  return ACL_INTERNAL_ACCESS_DENIED;
+  const ulong always_forbidden= INSERT_ACL | UPDATE_ACL | DELETE_ACL
+    | CREATE_ACL | REFERENCES_ACL | INDEX_ACL | ALTER_ACL
+    | CREATE_VIEW_ACL | TRIGGER_ACL | LOCK_TABLES_ACL;
+
+  if (unlikely(want_access & always_forbidden))
+    return ACL_INTERNAL_ACCESS_DENIED;
+
+  /*
+    There is no point in hidding (by enforcing ACCESS_DENIED for SELECT_ACL
+    on performance_schema.*) tables that do not exist anyway.
+    When SELECT_ACL is granted on performance_schema.* or *.*,
+    SELECT * from performance_schema.wrong_table
+    will fail with a more understandable ER_NO_SUCH_TABLE error,
+    instead of ER_TABLEACCESS_DENIED_ERROR.
+  */
+  return ACL_INTERNAL_ACCESS_CHECK_GRANT;
 }
 
 /**
@@ -678,6 +701,7 @@ bool pfs_show_status(handlerton *hton, T
     case 40:
       name= "(PFS_FILE_HANDLE).MEMORY";
       size= file_handle_max * sizeof(PFS_file*);
+      total_memory+= size;
       break;
     case 41:
       name= "EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME.ROW_SIZE";
@@ -692,13 +716,41 @@ bool pfs_show_status(handlerton *hton, T
       size= thread_max * instr_class_per_thread * sizeof(PFS_single_stat_chain);
       total_memory+= size;
       break;
+    case 44:
+      name= "(PFS_TABLE_SHARE).ROW_SIZE";
+      size= sizeof(PFS_table_share);
+      break;
+    case 45:
+      name= "(PFS_TABLE_SHARE).ROW_COUNT";
+      size= table_share_max;
+      break;
+    case 46:
+      name= "(PFS_TABLE_SHARE).MEMORY";
+      size= table_share_max * sizeof(PFS_table_share);
+      total_memory+= size;
+      break;
+    case 47:
+      name= "(PFS_TABLE).ROW_SIZE";
+      size= sizeof(PFS_table);
+      break;
+    case 48:
+      name= "(PFS_TABLE).ROW_COUNT";
+      size= table_max;
+      break;
+    case 49:
+      name= "(PFS_TABLE).MEMORY";
+      size= table_max * sizeof(PFS_table);
+      total_memory+= size;
+      break;
     /*
       This case must be last,
       for aggregation in total_memory.
     */
-    case 44:
+    case 50:
       name= "PERFORMANCE_SCHEMA.MEMORY";
       size= total_memory;
+      /* This will fail if something is not advertised here */
+      DBUG_ASSERT(size == pfs_allocated_memory);
       break;
     default:
       goto end;

=== modified file 'storage/perfschema/pfs_engine_table.h'
--- a/storage/perfschema/pfs_engine_table.h	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/pfs_engine_table.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_ENGINE_TABLE_H
 #define PFS_ENGINE_TABLE_H
@@ -81,7 +81,7 @@ protected:
     @param fields           Table fields
   */
   virtual int update_row_values(TABLE *table, const unsigned char *old_buf,
-                                unsigned char *new_buf, Field **fields)= 0;
+                                unsigned char *new_buf, Field **fields);
 
   /**
     Constructor.
@@ -151,27 +151,6 @@ struct PFS_engine_table_share
   bool m_checked;
 };
 
-/** Adapter for read only PERFORMANCE_SCHEMA tables. */
-class PFS_readonly_table : public PFS_engine_table
-{
-protected:
-  /**
-    Constructor.
-    @param share            table share
-    @param pos              address of the m_pos position member
-  */
-  PFS_readonly_table(const PFS_engine_table_share *share, void *pos)
-    : PFS_engine_table(share, pos)
-  {}
-
-  ~PFS_readonly_table()
-  {}
-
-  virtual int update_row_values(TABLE *table, const unsigned char *old_buf,
-                                unsigned char *new_buf, Field **fields);
-
-};
-
 class PFS_readonly_acl : public ACL_internal_table_access
 {
 public:

=== modified file 'storage/perfschema/pfs_events_waits.cc'
--- a/storage/perfschema/pfs_events_waits.cc	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_events_waits.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_events_waits.cc

=== modified file 'storage/perfschema/pfs_events_waits.h'
--- a/storage/perfschema/pfs_events_waits.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_events_waits.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_EVENTS_WAITS_H
 #define PFS_EVENTS_WAITS_H

=== modified file 'storage/perfschema/pfs_global.cc'
--- a/storage/perfschema/pfs_global.cc	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_global.cc	2010-07-16 00:28:52 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_global.cc
@@ -26,6 +26,7 @@
 #include <string.h>
 
 bool pfs_initialized= false;
+ulonglong pfs_allocated_memory= 0;
 
 /**
   Memory allocation for the performance schema.
@@ -38,7 +39,9 @@ void *pfs_malloc(size_t size, myf flags)
   DBUG_ASSERT(size > 0);
 
   void *ptr= malloc(size);
-  if (ptr && (flags & MY_ZEROFILL))
+  if (likely(ptr != NULL))
+    pfs_allocated_memory+= size;
+  if (likely((ptr != NULL) && (flags & MY_ZEROFILL)))
     memset(ptr, 0, size);
   return ptr;
 }

=== modified file 'storage/perfschema/pfs_global.h'
--- a/storage/perfschema/pfs_global.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_global.h	2010-07-16 01:03:08 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_GLOBAL_H
 #define PFS_GLOBAL_H
@@ -22,6 +22,7 @@
 */
 
 extern bool pfs_initialized;
+extern ulonglong pfs_allocated_memory;
 
 void *pfs_malloc(size_t size, myf flags);
 #define PFS_MALLOC_ARRAY(n, T, f) \
@@ -30,27 +31,50 @@ void pfs_free(void *ptr);
 
 inline uint randomized_index(const void *ptr, uint max_size)
 {
+  static uint seed1= 0;
+  static uint seed2= 0;
+  uint result;
+  register intptr value;
+
   if (unlikely(max_size == 0))
     return 0;
 
   /*
-    ptr is typically an aligned structure,
-    so the last bits are not really random, but this has no effect.
-    Apply a factor A*x to spread
-    close values of ptr further apart (which helps with arrays),
-    and to spread values way beyond a typical max_size.
-    Then, apply a modulo to end within [0, max_size - 1].
-    A is big prime numbers, to avoid resonating with max_size,
-    to have a uniform distribution in [0, max_size - 1].
-    The value of A is chosen so that index(ptr) and index(ptr + N) (for arrays)
-    are likely to be not similar for typical values of max_size
-    (50, 100, 1000, etc).
-    In other words, (sizeof(T)*A % max_size) should not be a small number,
-    to avoid that with 'T array[max_size]', index(array[i])
-    and index(array[i + 1]) end up pointing in the same area in [0, max_size - 1].
+    ptr is typically an aligned structure, and can be in an array.
+    - The last bits are not random because of alignment,
+      so we divide by 8.
+    - The high bits are mostly constant, especially with 64 bits architectures,
+      but we keep most of them anyway, by doing computation in intptr.
+      The high bits are significant depending on where the data is
+      stored (the data segment, the stack, the heap, ...).
+    - To spread consecutive cells in an array further, we multiply by
+      a factor A. This factor should not be too high, which would cause
+      an overflow and cause loss of randomness (droping the top high bits).
+      The factor is a prime number, to help spread the distribution.
+    - To add more noise, and to be more robust if the calling code is
+      passing a constant value instead of a random identity,
+      we add the previous results, for hysteresys, with a degree 2 polynom,
+      X^2 + X + 1.
+    - Last, a modulo is applied to be within the [0, max_size - 1] range.
+    Note that seed1 and seed2 are static, and are *not* thread safe,
+    which is even better.
+    Effect with arrays: T array[N]
+    - ptr(i) = & array[i] = & array[0] + i * sizeof(T)
+    - ptr(i+1) = ptr(i) + sizeof(T).
+    What we want here, is to have index(i) and index(i+1) fall into
+    very different areas in [0, max_size - 1], to avoid locality.
   */
-  return static_cast<uint>
-    (((reinterpret_cast<intptr> (ptr)) * 2166179) % max_size);
+  value= (reinterpret_cast<intptr> (ptr)) >> 3;
+  value*= 1789;
+  value+= seed2 + seed1 + 1;
+  
+  result= (static_cast<uint> (value)) % max_size;
+
+  seed2= seed1*seed1;
+  seed1= result;
+
+  DBUG_ASSERT(result < max_size);
+  return result;
 }
 
 void pfs_print_error(const char *format, ...);

=== modified file 'storage/perfschema/pfs_instr.cc'
--- a/storage/perfschema/pfs_instr.cc	2010-05-31 15:29:54 +0000
+++ b/storage/perfschema/pfs_instr.cc	2010-07-16 01:25:03 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_instr.cc
@@ -21,8 +21,8 @@
 #include <string.h>
 
 #include "my_global.h"
-#include "sql_priv.h"
 #include "my_sys.h"
+#include "pfs.h"
 #include "pfs_stat.h"
 #include "pfs_instr.h"
 #include "pfs_global.h"
@@ -411,6 +411,8 @@ void cleanup_instruments(void)
   thread_instr_class_waits_array= NULL;
 }
 
+extern "C"
+{
 static uchar *filename_hash_get_key(const uchar *entry, size_t *length,
                                     my_bool)
 {
@@ -425,6 +427,7 @@ static uchar *filename_hash_get_key(cons
   result= file->m_filename;
   return const_cast<uchar*> (reinterpret_cast<const uchar*> (result));
 }
+}
 
 /**
   Initialize the file name hash.
@@ -451,6 +454,75 @@ void cleanup_file_hash(void)
   }
 }
 
+void PFS_scan::init(uint random, uint max_size)
+{
+  m_pass= 0;
+
+  if (max_size == 0)
+  {
+    /* Degenerated case, no buffer */
+    m_pass_max= 0;
+    return;
+  }
+
+  DBUG_ASSERT(random < max_size);
+
+  if (PFS_MAX_ALLOC_RETRY < max_size)
+  {
+    /*
+      The buffer is big compared to PFS_MAX_ALLOC_RETRY,
+      scan it only partially.
+    */
+    if (random + PFS_MAX_ALLOC_RETRY < max_size)
+    {
+      /*
+        Pass 1: [random, random + PFS_MAX_ALLOC_RETRY - 1]
+        Pass 2: not used.
+      */
+      m_pass_max= 1;
+      m_first[0]= random;
+      m_last[0]= random + PFS_MAX_ALLOC_RETRY;
+      m_first[1]= 0;
+      m_last[1]= 0;
+    }
+    else
+    {
+      /*
+        Pass 1: [random, max_size - 1]
+        Pass 2: [0, ...]
+        The combined length of pass 1 and 2 is PFS_MAX_ALLOC_RETRY.
+      */
+      m_pass_max= 2;
+      m_first[0]= random;
+      m_last[0]= max_size;
+      m_first[1]= 0;
+      m_last[1]= PFS_MAX_ALLOC_RETRY - (max_size - random);
+    }
+  }
+  else
+  {
+    /*
+      The buffer is small compared to PFS_MAX_ALLOC_RETRY,
+      scan it in full in two passes.
+      Pass 1: [random, max_size - 1]
+      Pass 2: [0, random - 1]
+    */
+    m_pass_max= 2;
+    m_first[0]= random;
+    m_last[0]= max_size;
+    m_first[1]= 0;
+    m_last[1]= random;
+  }
+
+  DBUG_ASSERT(m_first[0] < max_size);
+  DBUG_ASSERT(m_first[1] < max_size);
+  DBUG_ASSERT(m_last[1] <= max_size);
+  DBUG_ASSERT(m_last[1] <= max_size);
+  /* The combined length of all passes should not exceed PFS_MAX_ALLOC_RETRY. */
+  DBUG_ASSERT((m_last[0] - m_first[0]) +
+              (m_last[1] - m_first[1]) <= PFS_MAX_ALLOC_RETRY);
+}
+
 /**
   Create instrumentation for a mutex instance.
   @param klass                        the mutex class
@@ -459,17 +531,15 @@ void cleanup_file_hash(void)
 */
 PFS_mutex* create_mutex(PFS_mutex_class *klass, const void *identity)
 {
-  int pass;
-  uint i= randomized_index(identity, mutex_max);
+  PFS_scan scan;
+  uint random= randomized_index(identity, mutex_max);
 
-  /*
-    Pass 1: [random, mutex_max - 1]
-    Pass 2: [0, mutex_max - 1]
-  */
-  for (pass= 1; pass <= 2; i=0, pass++)
+  for (scan.init(random, mutex_max);
+       scan.has_pass();
+       scan.next_pass())
   {
-    PFS_mutex *pfs= mutex_array + i;
-    PFS_mutex *pfs_last= mutex_array + mutex_max;
+    PFS_mutex *pfs= mutex_array + scan.first();
+    PFS_mutex *pfs_last= mutex_array + scan.last();
     for ( ; pfs < pfs_last; pfs++)
     {
       if (pfs->m_lock.is_free())
@@ -517,17 +587,15 @@ void destroy_mutex(PFS_mutex *pfs)
 */
 PFS_rwlock* create_rwlock(PFS_rwlock_class *klass, const void *identity)
 {
-  int pass;
-  uint i= randomized_index(identity, rwlock_max);
+  PFS_scan scan;
+  uint random= randomized_index(identity, rwlock_max);
 
-  /*
-    Pass 1: [random, rwlock_max - 1]
-    Pass 2: [0, rwlock_max - 1]
-  */
-  for (pass= 1; pass <= 2; i=0, pass++)
+  for (scan.init(random, rwlock_max);
+       scan.has_pass();
+       scan.next_pass())
   {
-    PFS_rwlock *pfs= rwlock_array + i;
-    PFS_rwlock *pfs_last= rwlock_array + rwlock_max;
+    PFS_rwlock *pfs= rwlock_array + scan.first();
+    PFS_rwlock *pfs_last= rwlock_array + scan.last();
     for ( ; pfs < pfs_last; pfs++)
     {
       if (pfs->m_lock.is_free())
@@ -581,17 +649,15 @@ void destroy_rwlock(PFS_rwlock *pfs)
 */
 PFS_cond* create_cond(PFS_cond_class *klass, const void *identity)
 {
-  int pass;
-  uint i= randomized_index(identity, cond_max);
+  PFS_scan scan;
+  uint random= randomized_index(identity, cond_max);
 
-  /*
-    Pass 1: [random, cond_max - 1]
-    Pass 2: [0, cond_max - 1]
-  */
-  for (pass= 1; pass <= 2; i=0, pass++)
+  for (scan.init(random, cond_max);
+       scan.has_pass();
+       scan.next_pass())
   {
-    PFS_cond *pfs= cond_array + i;
-    PFS_cond *pfs_last= cond_array + cond_max;
+    PFS_cond *pfs= cond_array + scan.first();
+    PFS_cond *pfs_last= cond_array + scan.last();
     for ( ; pfs < pfs_last; pfs++)
     {
       if (pfs->m_lock.is_free())
@@ -639,17 +705,15 @@ void destroy_cond(PFS_cond *pfs)
 PFS_thread* create_thread(PFS_thread_class *klass, const void *identity,
                           ulong thread_id)
 {
-  int pass;
-  uint i= randomized_index(identity, thread_max);
+  PFS_scan scan;
+  uint random= randomized_index(identity, thread_max);
 
-  /*
-    Pass 1: [random, thread_max - 1]
-    Pass 2: [0, thread_max - 1]
-  */
-  for (pass= 1; pass <= 2; i=0, pass++)
+  for (scan.init(random, thread_max);
+       scan.has_pass();
+       scan.next_pass())
   {
-    PFS_thread *pfs= thread_array + i;
-    PFS_thread *pfs_last= thread_array + thread_max;
+    PFS_thread *pfs= thread_array + scan.first();
+    PFS_thread *pfs_last= thread_array + scan.last();
     for ( ; pfs < pfs_last; pfs++)
     {
       if (pfs->m_lock.is_free())
@@ -733,7 +797,7 @@ find_or_create_file(PFS_thread *thread,
                     const char *filename, uint len)
 {
   PFS_file *pfs;
-  int pass;
+  PFS_scan scan;
 
   if (! filename_hash_inited)
   {
@@ -765,7 +829,7 @@ find_or_create_file(PFS_thread *thread,
       - it fits into pfs->m_filename
       - it is safe to use mysys apis to normalize the file name.
     */
-    memcpy(safe_buffer, filename, FN_REFLEN - 2);
+    memcpy(safe_buffer, filename, FN_REFLEN - 1);
     safe_buffer[FN_REFLEN - 1]= 0;
     safe_filename= safe_buffer;
   }
@@ -776,16 +840,58 @@ find_or_create_file(PFS_thread *thread,
     Normalize the file name to avoid duplicates when using aliases:
     - absolute or relative paths
     - symbolic links
+    Names are resolved as follows:
+    - /real/path/to/real_file ==> same
+    - /path/with/link/to/real_file ==> /real/path/to/real_file
+    - real_file ==> /real/path/to/real_file
+    - ./real_file ==> /real/path/to/real_file
+    - /real/path/to/sym_link ==> same
+    - /path/with/link/to/sym_link ==> /real/path/to/sym_link
+    - sym_link ==> /real/path/to/sym_link
+    - ./sym_link ==> /real/path/to/sym_link
+    When the last component of a file is a symbolic link,
+    the last component is *not* resolved, so that all file io
+    operations on a link (create, read, write, delete) are counted
+    against the link itself, not the target file.
+    Resolving the name would lead to create counted against the link,
+    and read/write/delete counted against the target, leading to
+    incoherent results and instrumentation leaks.
+    Also note that, when creating files, this name resolution
+    works properly for files that do not exist (yet) on the file system.
   */
   char buffer[FN_REFLEN];
+  char dirbuffer[FN_REFLEN];
+  size_t dirlen;
   const char *normalized_filename;
   int normalized_length;
 
-  /*
-    Ignore errors, the file may not exist.
-    my_realpath always provide a best effort result in buffer.
-  */
-  (void) my_realpath(buffer, safe_filename, MYF(0));
+  dirlen= dirname_length(safe_filename);
+  if (dirlen == 0)
+  {
+    dirbuffer[0]= FN_CURLIB;
+    dirbuffer[1]= FN_LIBCHAR;
+    dirbuffer[2]= '\0';
+  }
+  else
+  {
+    memcpy(dirbuffer, safe_filename, dirlen);
+    dirbuffer[dirlen]= '\0';
+  }
+
+  if (my_realpath(buffer, dirbuffer, MYF(0)) != 0)
+  {
+    file_lost++;
+    return NULL;
+  }
+
+  /* Append the unresolved file name to the resolved path */
+  char *ptr= buffer + strlen(buffer);
+  char *buf_end= &buffer[sizeof(buffer)-1];
+  if (buf_end > ptr)
+    *ptr++= FN_LIBCHAR;
+  if (buf_end > ptr)
+    strncpy(ptr, safe_filename + dirlen, buf_end - ptr);
+  *buf_end= '\0';
 
   normalized_filename= buffer;
   normalized_length= strlen(normalized_filename);
@@ -806,17 +912,14 @@ search:
   }
 
   /* filename is not constant, just using it for noise on create */
-  uint i= randomized_index(filename, file_max);
+  uint random= randomized_index(filename, file_max);
 
-  /*
-    Pass 1: [random, file_max - 1]
-    Pass 2: [0, file_max - 1]
-  */
-  for (pass= 1; pass <= 2; i=0, pass++)
+  for (scan.init(random, file_max);
+       scan.has_pass();
+       scan.next_pass())
   {
-    pfs= file_array + i;
-    PFS_file *pfs_last= file_array + file_max;
-
+    pfs= file_array + scan.first();
+    PFS_file *pfs_last= file_array + scan.last();
     for ( ; pfs < pfs_last; pfs++)
     {
       if (pfs->m_lock.is_free())
@@ -901,17 +1004,15 @@ void destroy_file(PFS_thread *thread, PF
 */
 PFS_table* create_table(PFS_table_share *share, const void *identity)
 {
-  int pass;
-  uint i= randomized_index(identity, table_max);
+  PFS_scan scan;
+  uint random= randomized_index(identity, table_max);
 
-  /*
-    Pass 1: [random, table_max - 1]
-    Pass 2: [0, table_max - 1]
-  */
-  for (pass= 1; pass <= 2; i=0, pass++)
+  for (scan.init(random, table_max);
+       scan.has_pass();
+       scan.next_pass())
   {
-    PFS_table *pfs= table_array + i;
-    PFS_table *pfs_last= table_array + table_max;
+    PFS_table *pfs= table_array + scan.first();
+    PFS_table *pfs_last= table_array + scan.last();
     for ( ; pfs < pfs_last; pfs++)
     {
       if (pfs->m_lock.is_free())

=== modified file 'storage/perfschema/pfs_instr.h'
--- a/storage/perfschema/pfs_instr.h	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/pfs_instr.h	2010-07-16 01:03:08 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_INSTR_H
 #define PFS_INSTR_H
@@ -21,7 +21,6 @@
   Performance schema instruments (declarations).
 */
 
-#include <sql_priv.h>
 #include "pfs_lock.h"
 #include "pfs_instr_class.h"
 #include "pfs_events_waits.h"
@@ -136,6 +135,48 @@ struct PFS_table : public PFS_instr
 */
 #define LOCKER_STACK_SIZE 3
 
+/**
+  @def PFS_MAX_ALLOC_RETRY
+  Maximum number of times the code attempts to allocate an item
+  from internal buffers, before giving up.
+*/
+#define PFS_MAX_ALLOC_RETRY 1000
+
+#define PFS_MAX_SCAN_PASS 2
+
+/**
+  Helper to scan circular buffers.
+  Given a buffer of size [0, max_size - 1],
+  and a random starting point in the buffer,
+  this helper returns up to two [first, last -1] intervals that:
+  - fit into the [0, max_size - 1] range,
+  - have a maximum combined length of at most PFS_MAX_ALLOC_RETRY.
+*/
+struct PFS_scan
+{
+public:
+  void init(uint random, uint max_size);
+
+  bool has_pass() const
+  { return (m_pass < m_pass_max); }
+
+  void next_pass()
+  { m_pass++; }
+  
+  uint first() const
+  { return m_first[m_pass]; }
+
+  uint last() const
+  { return m_last[m_pass]; }
+
+private:
+  uint m_pass;
+  uint m_pass_max;
+  uint m_first[PFS_MAX_SCAN_PASS];
+  uint m_last[PFS_MAX_SCAN_PASS];
+};
+
+
 /** Instrumented thread implementation. @see PSI_thread. */
 struct PFS_thread
 {

=== modified file 'storage/perfschema/pfs_instr_class.cc'
--- a/storage/perfschema/pfs_instr_class.cc	2010-05-31 15:29:54 +0000
+++ b/storage/perfschema/pfs_instr_class.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_instr_class.cc

=== modified file 'storage/perfschema/pfs_instr_class.h'
--- a/storage/perfschema/pfs_instr_class.h	2010-04-06 14:08:51 +0000
+++ b/storage/perfschema/pfs_instr_class.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_INSTR_CLASS_H
 #define PFS_INSTR_CLASS_H
@@ -38,7 +38,6 @@
 */
 #define PFS_MAX_FULL_PREFIX_NAME_LENGTH 32
 
-#include <sql_priv.h>
 #include <my_global.h>
 #include <mysql/psi/psi.h>
 #include "pfs_lock.h"

=== modified file 'storage/perfschema/pfs_lock.h'
--- a/storage/perfschema/pfs_lock.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_lock.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009 Sun Microsystems, Inc
+/* Copyright (c) 2009, 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_LOCK_H
 #define PFS_LOCK_H

=== modified file 'storage/perfschema/pfs_server.cc'
--- a/storage/perfschema/pfs_server.cc	2010-05-31 15:29:54 +0000
+++ b/storage/perfschema/pfs_server.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_server.cc
@@ -21,7 +21,6 @@
 #include "my_global.h"
 #include "my_sys.h"
 #include "mysys_err.h"
-#include "sql_priv.h"
 #include "pfs_server.h"
 #include "pfs.h"
 #include "pfs_global.h"

=== modified file 'storage/perfschema/pfs_server.h'
--- a/storage/perfschema/pfs_server.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_server.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_SERVER_H
 #define PFS_SERVER_H

=== modified file 'storage/perfschema/pfs_stat.h'
--- a/storage/perfschema/pfs_stat.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_stat.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_STAT_H
 #define PFS_STAT_H

=== modified file 'storage/perfschema/pfs_timer.cc'
--- a/storage/perfschema/pfs_timer.cc	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_timer.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_timer.cc

=== modified file 'storage/perfschema/pfs_timer.h'
--- a/storage/perfschema/pfs_timer.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/pfs_timer.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef PFS_TIMER_H
 #define PFS_TIMER_H

=== modified file 'storage/perfschema/plug.in'
--- a/storage/perfschema/plug.in	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/plug.in	2010-07-15 23:44:45 +0000
@@ -1,6 +1,6 @@
 dnl -*- ksh -*-
 
-# Copyright (C) 2008-2009 Sun Microsystems, Inc
+# 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
@@ -12,8 +12,8 @@ dnl -*- ksh -*-
 # 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
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
 
 dnl This file is part of the configure scripts used by autoconf.
 

=== modified file 'storage/perfschema/table_all_instr.cc'
--- a/storage/perfschema/table_all_instr.cc	2010-04-06 21:00:01 +0000
+++ b/storage/perfschema/table_all_instr.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,22 +10,21 @@
   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 */
+  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_all_instr.cc
   Abstract tables for all instruments (implementation).
 */
 
-#include "sql_priv.h"
 #include "my_global.h"
 #include "my_pthread.h"
 #include "table_all_instr.h"
 #include "pfs_global.h"
 
 table_all_instr::table_all_instr(const PFS_engine_table_share *share)
-  : PFS_readonly_table(share, &m_pos),
+  : PFS_engine_table(share, &m_pos),
     m_pos(), m_next_pos()
 {}
 
@@ -154,7 +153,7 @@ int table_all_instr::rnd_pos(const void
 
 table_all_instr_class::table_all_instr_class
 (const PFS_engine_table_share *share)
-  : PFS_readonly_table(share, &m_pos),
+  : PFS_engine_table(share, &m_pos),
     m_pos(), m_next_pos()
 {}
 

=== modified file 'storage/perfschema/table_all_instr.h'
--- a/storage/perfschema/table_all_instr.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_all_instr.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_ALL_INSTR_H
 #define TABLE_ALL_INSTR_H
@@ -63,7 +63,7 @@ struct pos_all_instr_class : public PFS_
   - a view on all cond classes,
   - a view on all file classes
 */
-class table_all_instr_class : public PFS_readonly_table
+class table_all_instr_class : public PFS_engine_table
 {
 public:
   virtual int rnd_next();
@@ -122,7 +122,7 @@ struct pos_all_instr : public PFS_double
   - a view on all cond instances,
   - a view on all file instances
 */
-class table_all_instr : public PFS_readonly_table
+class table_all_instr : public PFS_engine_table
 {
 public:
   virtual int rnd_next();

=== modified file 'storage/perfschema/table_events_waits.cc'
--- a/storage/perfschema/table_events_waits.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_events_waits.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,15 +10,16 @@
   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 */
+  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_events_waits.cc
   Table EVENTS_WAITS_xxx (implementation).
 */
 
-#include "sql_priv.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "table_events_waits.h"
 #include "pfs_instr_class.h"
 #include "pfs_instr.h"
@@ -165,7 +166,7 @@ table_events_waits_history_long::m_share
 
 table_events_waits_common::table_events_waits_common
 (const PFS_engine_table_share *share, void *pos)
-  : PFS_readonly_table(share, pos),
+  : PFS_engine_table(share, pos),
   m_row_exists(false)
 {}
 

=== modified file 'storage/perfschema/table_events_waits.h'
--- a/storage/perfschema/table_events_waits.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_events_waits.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_H
 #define TABLE_EVENTS_WAITS_H
@@ -121,7 +121,7 @@ struct pos_events_waits_history : public
   Adapter, for table sharing the structure of
   PERFORMANCE_SCHEMA.EVENTS_WAITS_CURRENT.
 */
-class table_events_waits_common : public PFS_readonly_table
+class table_events_waits_common : public PFS_engine_table
 {
 protected:
   virtual int read_row_values(TABLE *table,

=== modified file 'storage/perfschema/table_events_waits_summary.cc'
--- a/storage/perfschema/table_events_waits_summary.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_events_waits_summary.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,16 +10,16 @@
   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 */
+  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_events_waits_summary.cc
   Table EVENTS_WAITS_SUMMARY_BY_xxx (implementation).
 */
 
-#include "sql_priv.h"
-#include "unireg.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "pfs_instr_class.h"
 #include "pfs_column_types.h"
 #include "pfs_column_values.h"
@@ -101,7 +101,7 @@ table_events_waits_summary_by_thread_by_
 
 table_events_waits_summary_by_thread_by_event_name
 ::table_events_waits_summary_by_thread_by_event_name()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
     m_row_exists(false), m_pos(), m_next_pos()
 {}
 

=== modified file 'storage/perfschema/table_events_waits_summary.h'
--- a/storage/perfschema/table_events_waits_summary.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_events_waits_summary.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_H
 #define TABLE_EVENTS_WAITS_SUMMARY_H
@@ -96,7 +96,7 @@ struct pos_events_waits_summary_by_threa
 
 /** Table PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME. */
 class table_events_waits_summary_by_thread_by_event_name
-  : public PFS_readonly_table
+  : public PFS_engine_table
 {
 public:
   /** Table share */

=== modified file 'storage/perfschema/table_file_instances.cc'
--- a/storage/perfschema/table_file_instances.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_file_instances.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,16 +10,16 @@
   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 */
+  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_file_instances.cc
   Table FILE_INSTANCES (implementation).
 */
 
-#include "sql_priv.h"
-#include "unireg.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "pfs_instr.h"
 #include "pfs_column_types.h"
 #include "pfs_column_values.h"
@@ -72,7 +72,7 @@ PFS_engine_table* table_file_instances::
 }
 
 table_file_instances::table_file_instances()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_row_exists(false), m_pos(0), m_next_pos(0)
 {}
 

=== modified file 'storage/perfschema/table_file_instances.h'
--- a/storage/perfschema/table_file_instances.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_file_instances.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_FILE_INSTANCES_H
 #define TABLE_FILE_INSTANCES_H
@@ -45,7 +45,7 @@ struct row_file_instances
 };
 
 /** Table PERFORMANCE_SCHEMA.FILE_INSTANCES. */
-class table_file_instances : public PFS_readonly_table
+class table_file_instances : public PFS_engine_table
 {
 public:
   /** Table share */

=== modified file 'storage/perfschema/table_file_summary.cc'
--- a/storage/perfschema/table_file_summary.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_file_summary.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,16 +10,16 @@
   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 */
+  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_file_summary.cc
   Table FILE_SUMMARY_BY_xxx (implementation).
 */
 
-#include "sql_priv.h"
-#include "unireg.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "pfs_instr_class.h"
 #include "pfs_column_types.h"
 #include "pfs_column_values.h"
@@ -88,7 +88,7 @@ int table_file_summary_by_event_name::de
 }
 
 table_file_summary_by_event_name::table_file_summary_by_event_name()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_pos(1), m_next_pos(1)
 {}
 
@@ -251,7 +251,7 @@ int table_file_summary_by_instance::dele
 }
 
 table_file_summary_by_instance::table_file_summary_by_instance()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_row_exists(false), m_pos(0), m_next_pos(0)
 {}
 

=== modified file 'storage/perfschema/table_file_summary.h'
--- a/storage/perfschema/table_file_summary.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_file_summary.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_FILE_SUMMARY_H
 #define TABLE_FILE_SUMMARY_H
@@ -46,7 +46,7 @@ struct row_file_summary_by_event_name
 };
 
 /** Table PERFORMANCE_SCHEMA.FILE_SUMMARY_BY_EVENT_NAME. */
-class table_file_summary_by_event_name : public PFS_readonly_table
+class table_file_summary_by_event_name : public PFS_engine_table
 {
 public:
   /** Table share */
@@ -105,7 +105,7 @@ struct row_file_summary_by_instance
 };
 
 /** Table PERFORMANCE_SCHEMA.FILE_UMMARY_BY_INSTANCE. */
-class table_file_summary_by_instance : public PFS_readonly_table
+class table_file_summary_by_instance : public PFS_engine_table
 {
 public:
   /** Table share */

=== modified file 'storage/perfschema/table_performance_timers.cc'
--- a/storage/perfschema/table_performance_timers.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_performance_timers.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,16 +10,16 @@
   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 */
+  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_performance_timers.cc
   Table PERFORMANCE_TIMERS (implementation).
 */
 
-#include "sql_priv.h"
 #include "my_global.h"
+#include "my_pthread.h"
 #include "table_performance_timers.h"
 #include "pfs_timer.h"
 #include "pfs_global.h"
@@ -76,7 +76,7 @@ PFS_engine_table* table_performance_time
 }
 
 table_performance_timers::table_performance_timers()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
     m_row(NULL), m_pos(0), m_next_pos(0)
 {
   int index;

=== modified file 'storage/perfschema/table_performance_timers.h'
--- a/storage/perfschema/table_performance_timers.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_performance_timers.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_PERFORMANCE_TIMERS_H
 #define TABLE_PERFORMANCE_TIMERS_H
@@ -43,7 +43,7 @@ struct row_performance_timers
 };
 
 /** Table PERFORMANCE_SCHEMA.PERFORMANCE_TIMERS. */
-class table_performance_timers : public PFS_readonly_table
+class table_performance_timers : public PFS_engine_table
 {
 public:
   /** Table share. */

=== modified file 'storage/perfschema/table_processlist.cc'
--- a/storage/perfschema/table_processlist.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_processlist.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,15 +10,16 @@
   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 */
+  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_processlist.cc
   Table PROCESSLIST (implementation).
 */
 
-#include "sql_priv.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "table_processlist.h"
 #include "pfs_instr_class.h"
 #include "pfs_instr.h"
@@ -69,7 +70,7 @@ PFS_engine_table* table_processlist::cre
 }
 
 table_processlist::table_processlist()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_row_exists(false), m_pos(0), m_next_pos(0)
 {}
 

=== modified file 'storage/perfschema/table_processlist.h'
--- a/storage/perfschema/table_processlist.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_processlist.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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
@@ -45,7 +45,7 @@ struct row_processlist
 };
 
 /** Table PERFORMANCE_SCHEMA.PROCESSLIST. */
-class table_processlist : public PFS_readonly_table
+class table_processlist : public PFS_engine_table
 {
 public:
   /** Table share. */

=== modified file 'storage/perfschema/table_setup_consumers.cc'
--- a/storage/perfschema/table_setup_consumers.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_setup_consumers.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,15 +10,16 @@
   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 */
+  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_setup_consumers.cc
   Table SETUP_CONSUMERS (implementation).
 */
 
-#include "sql_priv.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "table_setup_consumers.h"
 #include "pfs_instr.h"
 #include "pfs_events_waits.h"

=== modified file 'storage/perfschema/table_setup_consumers.h'
--- a/storage/perfschema/table_setup_consumers.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_setup_consumers.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_SETUP_CONSUMERS_H
 #define TABLE_SETUP_CONSUMERS_H

=== modified file 'storage/perfschema/table_setup_instruments.cc'
--- a/storage/perfschema/table_setup_instruments.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_setup_instruments.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,16 +10,16 @@
   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 */
+  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_setup_instruments.cc
   Table SETUP_INSTRUMENTS (implementation).
 */
 
-#include "sql_priv.h"
-#include "unireg.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "pfs_instr_class.h"
 #include "pfs_column_types.h"
 #include "pfs_column_values.h"

=== modified file 'storage/perfschema/table_setup_instruments.h'
--- a/storage/perfschema/table_setup_instruments.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_setup_instruments.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_SETUP_INSTRUMENTS_H
 #define TABLE_SETUP_INSTRUMENTS_H

=== modified file 'storage/perfschema/table_setup_timers.cc'
--- a/storage/perfschema/table_setup_timers.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_setup_timers.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,15 +10,16 @@
   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 */
+  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_setup_timers.cc
   Table SETUP_TIMERS (implementation).
 */
 
-#include "sql_priv.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "table_setup_timers.h"
 #include "pfs_column_values.h"
 #include "pfs_timer.h"

=== modified file 'storage/perfschema/table_setup_timers.h'
--- a/storage/perfschema/table_setup_timers.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_setup_timers.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_SETUP_TIMERS_H
 #define TABLE_SETUP_TIMERS_H

=== modified file 'storage/perfschema/table_sync_instances.cc'
--- a/storage/perfschema/table_sync_instances.cc	2010-03-31 14:05:33 +0000
+++ b/storage/perfschema/table_sync_instances.cc	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  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_sync_instances.cc
@@ -19,8 +19,8 @@
   and COND_INSTANCES (implementation).
 */
 
-#include "sql_priv.h"
-#include "unireg.h"
+#include "my_global.h"
+#include "my_pthread.h"
 #include "pfs_instr.h"
 #include "pfs_column_types.h"
 #include "pfs_column_values.h"
@@ -73,7 +73,7 @@ PFS_engine_table* table_mutex_instances:
 }
 
 table_mutex_instances::table_mutex_instances()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_row_exists(false), m_pos(0), m_next_pos(0)
 {}
 
@@ -241,7 +241,7 @@ PFS_engine_table* table_rwlock_instances
 }
 
 table_rwlock_instances::table_rwlock_instances()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_row_exists(false), m_pos(0), m_next_pos(0)
 {}
 
@@ -406,7 +406,7 @@ PFS_engine_table* table_cond_instances::
 }
 
 table_cond_instances::table_cond_instances()
-  : PFS_readonly_table(&m_share, &m_pos),
+  : PFS_engine_table(&m_share, &m_pos),
   m_row_exists(false), m_pos(0), m_next_pos(0)
 {}
 

=== modified file 'storage/perfschema/table_sync_instances.h'
--- a/storage/perfschema/table_sync_instances.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/table_sync_instances.h	2010-07-16 00:06:33 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #ifndef TABLE_SYNC_INSTANCE_H
 #define TABLE_SYNC_INSTANCE_H
@@ -49,7 +49,7 @@ struct row_mutex_instances
 };
 
 /** Table PERFORMANCE_SCHEMA.MUTEX_INSTANCES. */
-class table_mutex_instances : public PFS_readonly_table
+class table_mutex_instances : public PFS_engine_table
 {
 public:
   /** Table share. */
@@ -108,7 +108,7 @@ struct row_rwlock_instances
 };
 
 /** Table PERFORMANCE_SCHEMA.RWLOCK_INSTANCES. */
-class table_rwlock_instances : public PFS_readonly_table
+class table_rwlock_instances : public PFS_engine_table
 {
 public:
   /** Table share */
@@ -161,7 +161,7 @@ struct row_cond_instances
 };
 
 /** Table PERFORMANCE_SCHEMA.COND_INSTANCES. */
-class table_cond_instances : public PFS_readonly_table
+class table_cond_instances : public PFS_engine_table
 {
 public:
   /** Table share. */

=== modified file 'storage/perfschema/unittest/CMakeLists.txt'
--- a/storage/perfschema/unittest/CMakeLists.txt	2010-01-14 18:42:28 +0000
+++ b/storage/perfschema/unittest/CMakeLists.txt	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Sun Microsystems, Inc
+# Copyright (c) 2009, 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
@@ -10,8 +10,8 @@
 # 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
 
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
                     ${CMAKE_SOURCE_DIR}/include/mysql

=== modified file 'storage/perfschema/unittest/conf.txt'
--- a/storage/perfschema/unittest/conf.txt	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/unittest/conf.txt	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Sun Microsystems, Inc
+# Copyright (c) 2009, 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
@@ -10,8 +10,8 @@
 # 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
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
 
 Performance schema test configurations.
 (Used internally for performance testing)

=== modified file 'storage/perfschema/unittest/pfs-t.cc'
--- a/storage/perfschema/unittest/pfs-t.cc	2010-07-09 23:00:24 +0000
+++ b/storage/perfschema/unittest/pfs-t.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009 Sun Microsystems, Inc
+/* 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
@@ -10,12 +10,11 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
-#include <my_pthread.h>
-#include <sql_priv.h>
 #include <my_global.h>
+#include <my_pthread.h>
 #include <pfs_server.h>
 #include <pfs_instr_class.h>
 #include <pfs_instr.h>

=== modified file 'storage/perfschema/unittest/pfs_instr-oom-t.cc'
--- a/storage/perfschema/unittest/pfs_instr-oom-t.cc	2010-04-13 11:48:46 +0000
+++ b/storage/perfschema/unittest/pfs_instr-oom-t.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,12 +10,11 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
-#include <my_pthread.h>
-#include <sql_priv.h>
 #include <my_global.h>
+#include <my_pthread.h>
 #include <pfs_instr.h>
 #include <pfs_stat.h>
 #include <pfs_global.h>

=== modified file 'storage/perfschema/unittest/pfs_instr-t.cc'
--- a/storage/perfschema/unittest/pfs_instr-t.cc	2010-04-13 11:48:46 +0000
+++ b/storage/perfschema/unittest/pfs_instr-t.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,12 +10,11 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
-#include <my_pthread.h>
-#include <sql_priv.h>
 #include <my_global.h>
+#include <my_pthread.h>
 #include <pfs_instr.h>
 #include <pfs_stat.h>
 #include <pfs_global.h>

=== modified file 'storage/perfschema/unittest/pfs_instr_class-oom-t.cc'
--- a/storage/perfschema/unittest/pfs_instr_class-oom-t.cc	2010-04-13 11:48:46 +0000
+++ b/storage/perfschema/unittest/pfs_instr_class-oom-t.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,12 +10,11 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
-#include <my_pthread.h>
-#include <sql_priv.h>
 #include <my_global.h>
+#include <my_pthread.h>
 #include <pfs_instr_class.h>
 #include <pfs_global.h>
 #include <tap.h>

=== modified file 'storage/perfschema/unittest/pfs_instr_class-t.cc'
--- a/storage/perfschema/unittest/pfs_instr_class-t.cc	2010-04-13 11:48:46 +0000
+++ b/storage/perfschema/unittest/pfs_instr_class-t.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,13 +10,11 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
-#include <my_pthread.h>
 #include <my_global.h>
-#include <sql_priv.h>
-
+#include <my_pthread.h>
 #include <string.h>                             // strncpy
 #include <pfs_instr_class.h>
 #include <pfs_instr.h>

=== modified file 'storage/perfschema/unittest/pfs_timer-t.cc'
--- a/storage/perfschema/unittest/pfs_timer-t.cc	2010-04-12 09:31:45 +0000
+++ b/storage/perfschema/unittest/pfs_timer-t.cc	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,11 +10,11 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
-#include <sql_priv.h>
 #include <my_global.h>
+#include <my_pthread.h>
 #include <pfs_timer.h>
 #include "my_sys.h"
 #include <tap.h>

=== modified file 'storage/perfschema/unittest/stub_pfs_global.h'
--- a/storage/perfschema/unittest/stub_pfs_global.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/unittest/stub_pfs_global.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #include <my_global.h>
 #include <my_sys.h>

=== modified file 'storage/perfschema/unittest/stub_print_error.h'
--- a/storage/perfschema/unittest/stub_print_error.h	2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/unittest/stub_print_error.h	2010-07-15 23:44:45 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2009 Sun Microsystems, Inc
+/* 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
@@ -10,8 +10,8 @@
   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 */
+  along with this program; if not, write to the Free Software Foundation,
+  51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
 
 #include <my_global.h>
 #include <my_sys.h>


Attachment: [text/bzr-bundle] bzr/marc.alff@oracle.com-20100716012503-pvjmx5781nvhr3vb.bundle
Thread
bzr push into mysql-trunk-bugfixing branch (marc.alff:3112 to 3119) Bug#52134Marc Alff16 Jul