From: Marc Alff Date: July 16 2010 1:26am Subject: bzr push into mysql-trunk-bugfixing branch (marc.alff:3112 to 3119) Bug#52134 List-Archive: http://lists.mysql.com/commits/113720 X-Bug: 52134 Message-Id: <20100716012624.75B8F45E80@linux-su11.site> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5612131800248271520==" --===============5612131800248271520== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 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 #include -#include +#include #include 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 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 - (((reinterpret_cast (ptr)) * 2166179) % max_size); + value= (reinterpret_cast (ptr)) >> 3; + value*= 1789; + value+= seed2 + seed1 + 1; + + result= (static_cast (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 #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 (reinterpret_cast (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 #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 #include #include #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 -#include #include +#include #include #include #include === 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 -#include #include +#include #include #include #include === 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 -#include #include +#include #include #include #include === 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 -#include #include +#include #include #include #include === 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 #include -#include - +#include #include // strncpy #include #include === 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 #include +#include #include #include "my_sys.h" #include === 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 #include === 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 #include --===============5612131800248271520== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marc.alff@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///home/malff/BZR_TREE/mysql-trunk-bugfixing-\ # cleanup/ # testament_sha1: 62aee67a775812fef793c909ad461d233cad36b5 # timestamp: 2010-07-15 19:26:24 -0600 # base_revision_id: davi.arnaut@stripped\ # ul1l42y20eyycqjt # # Begin bundle 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 YUSVIpUb/8XckU4UJCjgg+ZA --===============5612131800248271520==--