3414 Marc Alff 2011-10-10 [merge]
Merge mysql-trunk --> mysql-trunk-wl5863
added:
mysql-test/std_data/bug11747887-bin.000002
mysql-test/std_data/bug48633.ARM
mysql-test/std_data/bug48633.ARZ
mysql-test/std_data/bug48633.frm
mysql-test/suite/rpl/r/binlog-hexdump.result
mysql-test/suite/rpl/t/binlog-hexdump.test
modified:
mysql-test/collections/default.experimental
mysql-test/r/archive.result
mysql-test/r/partition_innodb.result
mysql-test/r/partition_myisam.result
mysql-test/suite/rpl/t/rpl_parallel_switch_sequential.test
mysql-test/t/archive.test
mysql-test/t/partition_innodb.test
mysql-test/t/partition_myisam.test
mysql-test/valgrind.supp
scripts/mysql_install_db.pl.in
scripts/mysql_install_db.sh
sql/ha_partition.cc
sql/log_event.cc
sql/rpl_info_file.cc
sql/rpl_rli_pdb.cc
sql/share/errmsg-utf8.txt
sql/sql_table.cc
sql/table.cc
sql/udf_example.c
storage/archive/azio.c
storage/archive/ha_archive.cc
storage/archive/ha_archive.h
storage/perfschema/table_ews_by_thread_by_event_name.cc
storage/perfschema/table_socket_summary_by_event_name.cc
storage/perfschema/table_socket_summary_by_instance.cc
storage/perfschema/table_socket_summary_by_instance.h
3413 Marc Alff 2011-10-10 [merge]
Merge mysql-trunk --> mysql-trunk-wl5863
modified:
include/my_pthread.h
3412 Marc Alff 2011-10-06 [merge]
Merge mysql-trunk --> mysql-trunk-wl5863
removed:
mysql-test/collections/default.release
mysql-test/extra/rpl_tests/rpl_insert_duplicate.test
mysql-test/r/join_cache_bka_nobnl.result
mysql-test/r/join_nested_bka_nobnl.result
mysql-test/r/join_outer_bka_nobnl.result
mysql-test/r/select_all_bka_nobnl.result
mysql-test/r/select_icp_mrr_bka_nobnl.result
mysql-test/r/select_none_bka_nobnl.result
mysql-test/r/subquery_all_bka_nobnl.result
mysql-test/r/subquery_nomat_nosj_bka_nobnl.result
mysql-test/r/subquery_none_bka_nobnl.result
mysql-test/r/subquery_sj_all_bka_nobnl.result
mysql-test/r/subquery_sj_dupsweed_bka_nobnl.result
mysql-test/r/subquery_sj_firstmatch_bka_nobnl.result
mysql-test/r/subquery_sj_innodb_all_bka_nobnl.result
mysql-test/r/subquery_sj_innodb_none_bka_nobnl.result
mysql-test/r/subquery_sj_loosescan_bka_nobnl.result
mysql-test/r/subquery_sj_mat_bka_nobnl.result
mysql-test/r/subquery_sj_none_bka_nobnl.result
mysql-test/suite/rpl/r/rpl_insert_duplicate.result
mysql-test/suite/rpl/r/rpl_insert_select.result
mysql-test/suite/rpl/t/rpl_insert_duplicate.test
mysql-test/suite/rpl/t/rpl_insert_select.test
mysql-test/t/join_cache_bka_nobnl.test
mysql-test/t/join_nested_bka_nobnl.test
mysql-test/t/join_outer_bka_nobnl.test
mysql-test/t/select_all_bka_nobnl.test
mysql-test/t/select_icp_mrr_bka_nobnl.test
mysql-test/t/select_none_bka_nobnl.test
mysql-test/t/subquery_all_bka_nobnl.test
mysql-test/t/subquery_nomat_nosj_bka_nobnl.test
mysql-test/t/subquery_none_bka_nobnl.test
mysql-test/t/subquery_sj_all_bka_nobnl.test
mysql-test/t/subquery_sj_dupsweed_bka_nobnl.test
mysql-test/t/subquery_sj_firstmatch_bka_nobnl.test
mysql-test/t/subquery_sj_innodb_all_bka_nobnl.test
mysql-test/t/subquery_sj_innodb_none_bka_nobnl.test
mysql-test/t/subquery_sj_loosescan_bka_nobnl.test
mysql-test/t/subquery_sj_mat_bka_nobnl.test
mysql-test/t/subquery_sj_none_bka_nobnl.test
added:
mysql-test/collections/default.release.in
mysql-test/r/join_cache_bka_nixbnl.result
mysql-test/r/join_nested_bka_nixbnl.result
mysql-test/r/join_outer_bka_nixbnl.result
mysql-test/r/select_all_bka_nixbnl.result
mysql-test/r/select_icp_mrr_bka_nixbnl.result
mysql-test/r/select_none_bka_nixbnl.result
mysql-test/r/subquery_all_bka_nixbnl.result
mysql-test/r/subquery_nomat_nosj_bka_nixbnl.result
mysql-test/r/subquery_none_bka_nixbnl.result
mysql-test/r/subquery_sj_all_bka_nixbnl.result
mysql-test/r/subquery_sj_dupsweed_bka_nixbnl.result
mysql-test/r/subquery_sj_firstmatch_bka_nixbnl.result
mysql-test/r/subquery_sj_innodb_all_bka_nixbnl.result
mysql-test/r/subquery_sj_innodb_none_bka_nixbnl.result
mysql-test/r/subquery_sj_loosescan_bka_nixbnl.result
mysql-test/r/subquery_sj_mat_bka_nixbnl.result
mysql-test/r/subquery_sj_none_bka_nixbnl.result
mysql-test/suite/innodb/t/innodb_bug47167-master.opt
mysql-test/suite/innodb/t/innodb_file_format-master.opt
mysql-test/suite/rpl/r/rpl_general_log.result
mysql-test/suite/rpl/r/rpl_replicate_rewrite_db.result
mysql-test/suite/rpl/t/rpl_general_log.test
mysql-test/suite/rpl/t/rpl_replicate_rewrite_db.test
mysql-test/suite/stress/t/wrapper.test
mysql-test/suite/sys_vars/r/innodb_analyze_is_persistent_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_disable_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_enable_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_reset_all_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_reset_basic.result
mysql-test/suite/sys_vars/r/innodb_print_all_deadlocks_basic.result
mysql-test/suite/sys_vars/r/innodb_stats_persistent_sample_pages_basic.result
mysql-test/suite/sys_vars/r/innodb_stats_transient_sample_pages_basic.result
mysql-test/suite/sys_vars/r/innodb_sync_array_size_basic.result
mysql-test/suite/sys_vars/t/innodb_analyze_is_persistent_basic.test
mysql-test/suite/sys_vars/t/innodb_file_format_max_basic-master.opt
mysql-test/suite/sys_vars/t/innodb_monitor_disable_basic.test
mysql-test/suite/sys_vars/t/innodb_monitor_enable_basic.test
mysql-test/suite/sys_vars/t/innodb_monitor_reset_all_basic.test
mysql-test/suite/sys_vars/t/innodb_monitor_reset_basic.test
mysql-test/suite/sys_vars/t/innodb_print_all_deadlocks_basic.test
mysql-test/suite/sys_vars/t/innodb_stats_persistent_sample_pages_basic.test
mysql-test/suite/sys_vars/t/innodb_stats_transient_sample_pages_basic.test
mysql-test/suite/sys_vars/t/innodb_sync_array_size_basic.test
mysql-test/t/join_cache_bka_nixbnl.test
mysql-test/t/join_nested_bka_nixbnl.test
mysql-test/t/join_outer_bka_nixbnl.test
mysql-test/t/select_all_bka_nixbnl.test
mysql-test/t/select_icp_mrr_bka_nixbnl.test
mysql-test/t/select_none_bka_nixbnl.test
mysql-test/t/subquery_all_bka_nixbnl.test
mysql-test/t/subquery_nomat_nosj_bka_nixbnl.test
mysql-test/t/subquery_none_bka_nixbnl.test
mysql-test/t/subquery_sj_all_bka_nixbnl.test
mysql-test/t/subquery_sj_dupsweed_bka_nixbnl.test
mysql-test/t/subquery_sj_firstmatch_bka_nixbnl.test
mysql-test/t/subquery_sj_innodb_all_bka_nixbnl.test
mysql-test/t/subquery_sj_innodb_none_bka_nixbnl.test
mysql-test/t/subquery_sj_loosescan_bka_nixbnl.test
mysql-test/t/subquery_sj_mat_bka_nixbnl.test
mysql-test/t/subquery_sj_none_bka_nixbnl.test
modified:
.bzrignore
VERSION
client/mysqltest.cc
cmake/create_initial_db.cmake.in
include/heap.h
libmysql/authentication_win/handshake_client.cc
libmysqld/lib_sql.cc
mysql-test/CMakeLists.txt
mysql-test/collections/README
mysql-test/collections/default.experimental
mysql-test/extra/rpl_tests/rpl_insert_id.test
mysql-test/extra/rpl_tests/rpl_insert_ignore.test
mysql-test/include/commit.inc
mysql-test/include/explain_non_select.inc
mysql-test/include/icp_tests.inc
mysql-test/include/mrr_tests.inc
mysql-test/include/mtr_check.sql
mysql-test/include/subquery.inc
mysql-test/include/subquery_sj.inc
mysql-test/lib/My/CoreDump.pm
mysql-test/mysql-stress-test.pl
mysql-test/mysql-test-run.pl
mysql-test/r/commit_1innodb.result
mysql-test/r/derived.result
mysql-test/r/error_simulation.result
mysql-test/r/func_str.result
mysql-test/r/group_by.result
mysql-test/r/having.result
mysql-test/r/heap.result
mysql-test/r/index_merge_myisam.result
mysql-test/r/innodb_explain_non_select_all.result
mysql-test/r/innodb_explain_non_select_none.result
mysql-test/r/innodb_icp.result
mysql-test/r/innodb_icp_all.result
mysql-test/r/innodb_icp_none.result
mysql-test/r/innodb_mrr.result
mysql-test/r/innodb_mrr_all.result
mysql-test/r/innodb_mrr_cost.result
mysql-test/r/innodb_mrr_cost_all.result
mysql-test/r/innodb_mrr_cost_icp.result
mysql-test/r/innodb_mrr_icp.result
mysql-test/r/innodb_mrr_none.result
mysql-test/r/join_cache_bka.result
mysql-test/r/join_cache_bkaunique.result
mysql-test/r/join_cache_nojb.result
mysql-test/r/join_nested_bka.result
mysql-test/r/join_outer.result
mysql-test/r/join_outer_bka.result
mysql-test/r/myisam_explain_non_select_all.result
mysql-test/r/myisam_explain_non_select_none.result
mysql-test/r/myisam_icp.result
mysql-test/r/myisam_icp_all.result
mysql-test/r/myisam_icp_none.result
mysql-test/r/myisam_mrr.result
mysql-test/r/myisam_mrr_all.result
mysql-test/r/myisam_mrr_cost.result
mysql-test/r/myisam_mrr_cost_all.result
mysql-test/r/myisam_mrr_cost_icp.result
mysql-test/r/myisam_mrr_icp.result
mysql-test/r/myisam_mrr_none.result
mysql-test/r/mysqld--help-notwin.result
mysql-test/r/mysqld--help-win.result
mysql-test/r/mysqltest.result
mysql-test/r/optimizer_switch.result
mysql-test/r/partition.result
mysql-test/r/partition_innodb_plugin.result
mysql-test/r/partition_myisam.result
mysql-test/r/plugin_auth.result
mysql-test/r/select_all_bka.result
mysql-test/r/select_icp_mrr_bka.result
mysql-test/r/select_none_bka.result
mysql-test/r/show_check.result
mysql-test/r/subquery_all_bka.result
mysql-test/r/subquery_nomat_nosj.result
mysql-test/r/subquery_nomat_nosj_bka.result
mysql-test/r/subquery_none.result
mysql-test/r/subquery_none_bka.result
mysql-test/r/subquery_sj_all.result
mysql-test/r/subquery_sj_all_bka.result
mysql-test/r/subquery_sj_all_bkaunique.result
mysql-test/r/subquery_sj_dupsweed.result
mysql-test/r/subquery_sj_dupsweed_bka.result
mysql-test/r/subquery_sj_dupsweed_bkaunique.result
mysql-test/r/subquery_sj_firstmatch.result
mysql-test/r/subquery_sj_firstmatch_bka.result
mysql-test/r/subquery_sj_firstmatch_bkaunique.result
mysql-test/r/subquery_sj_innodb_all_bka.result
mysql-test/r/subquery_sj_innodb_all_bkaunique.result
mysql-test/r/subquery_sj_innodb_none_bka.result
mysql-test/r/subquery_sj_innodb_none_bkaunique.result
mysql-test/r/subquery_sj_loosescan.result
mysql-test/r/subquery_sj_loosescan_bka.result
mysql-test/r/subquery_sj_loosescan_bkaunique.result
mysql-test/r/subquery_sj_mat.result
mysql-test/r/subquery_sj_mat_bka.result
mysql-test/r/subquery_sj_mat_bkaunique.result
mysql-test/r/subquery_sj_mat_nosj.result
mysql-test/r/subquery_sj_none.result
mysql-test/r/subquery_sj_none_bka.result
mysql-test/r/subquery_sj_none_bkaunique.result
mysql-test/suite/binlog/r/binlog_stm_blackhole.result
mysql-test/suite/binlog/r/binlog_unsafe.result
mysql-test/suite/binlog/t/binlog_unsafe.test
mysql-test/suite/federated/federated_plugin-master.opt
mysql-test/suite/federated/federated_plugin.result
mysql-test/suite/federated/federated_plugin.test
mysql-test/suite/innodb/r/innodb_bug52745.result
mysql-test/suite/innodb/r/innodb_bug53591.result
mysql-test/suite/innodb/r/innodb_file_format.result
mysql-test/suite/innodb/r/innodb_index_large_prefix.result
mysql-test/suite/innodb/r/innodb_prefix_index_liftedlimit.result
mysql-test/suite/innodb/r/innodb_prefix_index_restart_server.result
mysql-test/suite/innodb/t/innodb-autoinc-44030.test
mysql-test/suite/innodb/t/innodb-autoinc.test
mysql-test/suite/innodb/t/innodb-create-options.test
mysql-test/suite/innodb/t/innodb-index.test
mysql-test/suite/innodb/t/innodb-zip.test
mysql-test/suite/innodb/t/innodb_bug36172.test
mysql-test/suite/innodb/t/innodb_bug52745.test
mysql-test/suite/innodb/t/innodb_bug53591.test
mysql-test/suite/innodb/t/innodb_bug56680.test
mysql-test/suite/innodb/t/innodb_file_format.test
mysql-test/suite/innodb/t/innodb_index_large_prefix.test
mysql-test/suite/innodb/t/innodb_prefix_index_liftedlimit.test
mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test
mysql-test/suite/opt_trace/include/general.inc
mysql-test/suite/opt_trace/include/general2.inc
mysql-test/suite/opt_trace/include/range.inc
mysql-test/suite/opt_trace/include/subquery.inc
mysql-test/suite/opt_trace/r/bugs_no_prot_all.result
mysql-test/suite/opt_trace/r/bugs_no_prot_none.result
mysql-test/suite/opt_trace/r/bugs_ps_prot_all.result
mysql-test/suite/opt_trace/r/bugs_ps_prot_none.result
mysql-test/suite/opt_trace/r/charset.result
mysql-test/suite/opt_trace/r/filesort_pq.result
mysql-test/suite/opt_trace/r/general2_no_prot.result
mysql-test/suite/opt_trace/r/general2_ps_prot.result
mysql-test/suite/opt_trace/r/general_no_prot_all.result
mysql-test/suite/opt_trace/r/general_no_prot_none.result
mysql-test/suite/opt_trace/r/general_ps_prot_all.result
mysql-test/suite/opt_trace/r/general_ps_prot_none.result
mysql-test/suite/opt_trace/r/range_no_prot.result
mysql-test/suite/opt_trace/r/range_ps_prot.result
mysql-test/suite/opt_trace/r/security_no_prot.result
mysql-test/suite/opt_trace/r/security_ps_prot.result
mysql-test/suite/opt_trace/r/subquery_no_prot.result
mysql-test/suite/opt_trace/r/subquery_ps_prot.result
mysql-test/suite/rpl/r/rpl_checksum.result
mysql-test/suite/rpl/r/rpl_insert_ignore.result
mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
mysql-test/suite/rpl/r/rpl_log_pos.result
mysql-test/suite/rpl/r/rpl_manual_change_index_file.result
mysql-test/suite/rpl/r/rpl_packet.result
mysql-test/suite/rpl/r/rpl_parallel_start_stop.result
mysql-test/suite/rpl/r/rpl_row_event_max_size.result
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
mysql-test/suite/rpl/t/rpl_packet.test
mysql-test/suite/rpl/t/rpl_row_event_max_size.test
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
mysql-test/suite/sys_vars/r/all_vars.result
mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
mysql-test/t/derived.test
mysql-test/t/error_simulation.test
mysql-test/t/func_str.test
mysql-test/t/group_by.test
mysql-test/t/heap.test
mysql-test/t/join_cache_bka.test
mysql-test/t/join_cache_bkaunique.test
mysql-test/t/join_cache_nojb.test
mysql-test/t/join_nested_bka.test
mysql-test/t/join_outer.test
mysql-test/t/join_outer_bka.test
mysql-test/t/mysql_plugin.test
mysql-test/t/mysqld--defaults-file.test
mysql-test/t/mysqltest.test
mysql-test/t/partition.test
mysql-test/t/partition_innodb_plugin.test
mysql-test/t/partition_myisam.test
mysql-test/t/plugin_auth.test
mysql-test/t/select_all_bka.test
mysql-test/t/select_icp_mrr_bka.test
mysql-test/t/select_none_bka.test
mysql-test/t/show_check.test
mysql-test/t/subquery_all_bka.test
mysql-test/t/subquery_nomat_nosj_bka.test
mysql-test/t/subquery_none_bka.test
mysql-test/t/subquery_sj_all_bka.test
mysql-test/t/subquery_sj_all_bkaunique.test
mysql-test/t/subquery_sj_dupsweed_bka.test
mysql-test/t/subquery_sj_dupsweed_bkaunique.test
mysql-test/t/subquery_sj_firstmatch.test
mysql-test/t/subquery_sj_firstmatch_bka.test
mysql-test/t/subquery_sj_firstmatch_bkaunique.test
mysql-test/t/subquery_sj_innodb_all_bka.test
mysql-test/t/subquery_sj_innodb_all_bkaunique.test
mysql-test/t/subquery_sj_innodb_none_bka.test
mysql-test/t/subquery_sj_innodb_none_bkaunique.test
mysql-test/t/subquery_sj_loosescan_bka.test
mysql-test/t/subquery_sj_loosescan_bkaunique.test
mysql-test/t/subquery_sj_mat_bka.test
mysql-test/t/subquery_sj_mat_bkaunique.test
mysql-test/t/subquery_sj_none_bka.test
mysql-test/t/subquery_sj_none_bkaunique.test
scripts/mysqld_safe.sh
sql/event_scheduler.cc
sql/ha_partition.cc
sql/ha_partition.h
sql/handler.cc
sql/handler.h
sql/item_buff.cc
sql/item_cmpfunc.cc
sql/item_func.cc
sql/item_subselect.cc
sql/item_subselect.h
sql/log_event.cc
sql/mysqld.cc
sql/opt_explain.cc
sql/opt_range.cc
sql/opt_trace.cc
sql/opt_trace.h
sql/opt_trace2server.cc
sql/rpl_master.cc
sql/rpl_rli_pdb.cc
sql/rpl_slave.cc
sql/share/errmsg-utf8.txt
sql/sp_head.cc
sql/sql_base.cc
sql/sql_class.cc
sql/sql_class.h
sql/sql_insert.cc
sql/sql_lex.cc
sql/sql_lex.h
sql/sql_list.h
sql/sql_parse.cc
sql/sql_prepare.cc
sql/sql_select.cc
sql/sql_select.h
sql/sql_show.cc
sql/sys_vars.cc
sql/table.cc
storage/heap/ha_heap.cc
storage/heap/hp_create.c
storage/heap/hp_info.c
storage/innobase/buf/buf0buf.c
storage/innobase/buf/buf0lru.c
storage/innobase/dict/dict0stats.c
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/i_s.cc
storage/innobase/include/btr0cur.h
storage/innobase/include/btr0cur.ic
storage/innobase/include/buf0buf.h
storage/innobase/include/buf0buf.ic
storage/innobase/include/buf0types.h
storage/innobase/include/sync0rw.h
storage/innobase/include/sync0rw.ic
storage/innobase/include/ut0crc32.h
storage/innobase/log/log0log.c
storage/innobase/os/os0file.c
storage/innobase/rem/rem0rec.c
storage/innobase/row/row0purge.c
storage/innobase/srv/srv0start.c
storage/innobase/sync/sync0rw.c
storage/innobase/ut/ut0crc32.c
storage/myisam/ha_myisam.cc
support-files/mysql.spec.sh
tests/mysql_client_test.c
unittest/gunit/opt_trace-t.cc
unittest/gunit/sql_list-t.cc
unittest/mysys/my_atomic-t.c
=== modified file 'include/my_pthread.h'
--- a/include/my_pthread.h 2011-08-19 13:04:28 +0000
+++ b/include/my_pthread.h 2011-10-06 14:33:18 +0000
@@ -542,8 +542,8 @@ void safe_mutex_end(FILE *file);
DBUG_ASSERT(! (mp)->count || \
! pthread_equal(pthread_self(), (mp)->thread))
#else
-#define safe_mutex_assert_owner(mp)
-#define safe_mutex_assert_not_owner(mp)
+#define safe_mutex_assert_owner(mp) do {} while (0)
+#define safe_mutex_assert_not_owner(mp) do {} while (0)
#endif /* SAFE_MUTEX */
#if defined(MY_PTHREAD_FASTMUTEX) && !defined(SAFE_MUTEX)
=== modified file 'mysql-test/collections/default.experimental'
--- a/mysql-test/collections/default.experimental 2011-10-04 10:55:09 +0000
+++ b/mysql-test/collections/default.experimental 2011-10-07 08:36:04 +0000
@@ -41,6 +41,6 @@ sys_vars.have_ndbcluster_basic
sys_vars.ndb_log_updated_only_basic
sys_vars.rpl_init_slave_func # Bug#12535301 2011-05-09 andrei sys_vars.rpl_init_slave_func mismatches in daily-5.5
-rpl.rpl_mixed_mts_rec_crash_safe @solaris # Bug 12902514 2011-08-19 andrei mts recovery tests are slow
-rpl.rpl_mixed_mts_rec_crash_safe_checksum @solaris # same as rpl_mixed_mts_rec_crash_safe
-rpl.rpl_mixed_mts_crash_safe @solaris # same as rpl_mixed_mts_rec_crash_safe
+rpl.rpl_mixed_mts_rec_crash_safe @solaris # Bug#12902514 2011-08-19 andrei mts recovery tests are slow
+rpl.rpl_mixed_mts_rec_crash_safe_checksum @solaris # Bug#12902514 2011-08-19 andrei same as rpl_mixed_mts_rec_crash_safe
+rpl.rpl_mixed_mts_crash_safe @solaris # Bug#12902514 2011-08-19 andrei same as rpl_mixed_mts_rec_crash_safe
=== modified file 'mysql-test/r/archive.result'
--- a/mysql-test/r/archive.result 2011-03-03 09:22:17 +0000
+++ b/mysql-test/r/archive.result 2011-10-06 13:51:28 +0000
@@ -12729,15 +12729,17 @@ id id name name
2 2 a b
DROP TABLE t1,t2;
SHOW CREATE TABLE t1;
-ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `col1` int(11) DEFAULT NULL,
+ `col2` varchar(20) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
SELECT * FROM t1;
-ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
+col1 col2
INSERT INTO t1 (col1, col2) VALUES (1, "value");
-ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
REPAIR TABLE t1;
Table Op Msg_type Msg_text
-test.t1 repair Error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
-test.t1 repair error Corrupt
+test.t1 repair status OK
DROP TABLE t1;
#
# BUG#48757 - missing .ARZ file causes server crash
@@ -12823,3 +12825,59 @@ a b c d e f
-1 b c d e 1
DROP TABLE t1;
SET sort_buffer_size=DEFAULT;
+#
+# BUG#11756687 - 48633: ARCHIVE TABLES ARE NOT UPGRADEABLE
+#
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` text,
+ `c` varchar(255) DEFAULT NULL,
+ `d` blob,
+ `e` blob
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+FLUSH TABLE t1;
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+INSERT INTO t1 VALUES(3, 'text', 'varchar', 'blob1', 'blob2');
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+3 text varchar blob1 blob2
+FLUSH TABLE t1;
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+3 text varchar blob1 blob2
+REPAIR TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+SELECT * FROM t1;
+a b c d e
+1 text varchar blob1 blob2
+2 text varchar blob1 blob2
+3 text varchar blob1 blob2
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+DROP TABLE t1;
=== modified file 'mysql-test/r/partition_innodb.result'
--- a/mysql-test/r/partition_innodb.result 2011-08-29 07:08:18 +0000
+++ b/mysql-test/r/partition_innodb.result 2011-10-07 08:30:01 +0000
@@ -1,5 +1,16 @@
drop table if exists t1, t2;
#
+# Bug#13007154: Crash in keys_to_use_for_scanning with ORDER BY
+# and PARTITIONING
+#
+CREATE TABLE t1 (a INT, KEY(a))
+ENGINE = InnoDB
+PARTITION BY KEY (a) PARTITIONS 1;
+SELECT 1 FROM t1 WHERE a > (SELECT LAST_INSERT_ID() FROM t1 LIMIT 0)
+ORDER BY a;
+1
+DROP TABLE t1;
+#
# Bug#56287: crash when using Partition datetime in sub in query
#
CREATE TABLE t1
=== modified file 'mysql-test/r/partition_myisam.result'
--- a/mysql-test/r/partition_myisam.result 2011-10-06 09:50:40 +0000
+++ b/mysql-test/r/partition_myisam.result 2011-10-07 14:20:21 +0000
@@ -1,5 +1,25 @@
DROP TABLE IF EXISTS t1, t2;
#
+# Bug#11763825/56590: PARTITIONS: FULLTEXT SEARCHES FAIL
+# (bad/confusing error message)
+CREATE TABLE t1
+(a INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
+b VARCHAR(200),
+c TEXT)
+ENGINE=MyISAM
+PARTITION BY HASH(a) PARTITIONS 1;
+CREATE FULLTEXT INDEX msg ON t1 (b, c);
+ERROR HY000: FULLTEXT index is not supported for partitioned tables.
+DROP TABLE t1;
+CREATE TABLE t1
+(a INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
+b VARCHAR(200),
+c TEXT,
+FULLTEXT (b, c))
+ENGINE=MyISAM
+PARTITION BY HASH(a) PARTITIONS 1;
+ERROR HY000: FULLTEXT index is not supported for partitioned tables.
+#
# BUG#11933226 - 60681: CHECKSUM TABLE RETURNS 0 FOR PARTITIONED TABLE
#
CREATE TABLE t1 (
=== added file 'mysql-test/std_data/bug11747887-bin.000002'
Binary files a/mysql-test/std_data/bug11747887-bin.000002 1970-01-01 00:00:00 +0000 and b/mysql-test/std_data/bug11747887-bin.000002 2011-10-10 06:22:13 +0000 differ
=== added file 'mysql-test/std_data/bug48633.ARM'
Binary files a/mysql-test/std_data/bug48633.ARM 1970-01-01 00:00:00 +0000 and b/mysql-test/std_data/bug48633.ARM 2011-10-06 13:51:28 +0000 differ
=== added file 'mysql-test/std_data/bug48633.ARZ'
Binary files a/mysql-test/std_data/bug48633.ARZ 1970-01-01 00:00:00 +0000 and b/mysql-test/std_data/bug48633.ARZ 2011-10-06 13:51:28 +0000 differ
=== added file 'mysql-test/std_data/bug48633.frm'
Binary files a/mysql-test/std_data/bug48633.frm 1970-01-01 00:00:00 +0000 and b/mysql-test/std_data/bug48633.frm 2011-10-06 13:51:28 +0000 differ
=== added file 'mysql-test/suite/rpl/r/binlog-hexdump.result'
--- a/mysql-test/suite/rpl/r/binlog-hexdump.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/binlog-hexdump.result 2011-10-10 06:22:13 +0000
@@ -0,0 +1,88 @@
+include/master-slave.inc
+[connection master]
+include/rpl_reset.inc
+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
+DELIMITER /*!*/;
+# at 4
+#110927 20:57:19 server id 1 end_log_pos 114
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 4 7f 0e 82 4e 0f 01 00 00 00 6e 00 00 00 72 00 00 00 00 00
+# 17 04 00 35 2e 36 2e 34 2d 6d 35 2d 64 65 62 75 67 |..5.6.4.m5.debug|
+# 27 2d 6c 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 |.log............|
+# 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+# 47 00 00 00 00 7f 0e 82 4e 13 38 0d 00 08 00 12 00 |.......N.8......|
+# 57 04 04 04 04 12 00 00 56 00 04 1a 08 00 00 00 08 |.......V........|
+# 67 08 08 02 00 00 00 00 93 fa cd dc |...........|
+# Start: binlog v 4, server v 5.6.4-m5-debug-log created 110927 20:57:19 at startup
+ROLLBACK/*!*/;
+BINLOG '
+fw6CTg8BAAAAbgAAAHIAAAAAAAQANS42LjQtbTUtZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAB/DoJOEzgNAAgAEgAEBAQEEgAAVgAEGggAAAAICAgCAAAAAJP6zdw=
+'/*!*/;
+# at 114
+#110927 20:57:23 server id 1 end_log_pos 231
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 72 83 0e 82 4e 02 01 00 00 00 75 00 00 00 e7 00 00 00 00 00
+# 85 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 95 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# a5 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# b5 73 74 00 63 72 65 61 74 65 20 74 61 62 6c 65 20 |st.create.table.|
+# c5 74 31 20 28 61 20 65 6e 75 6d 28 27 6f 6e 65 27 |t1..a.enum..one.|
+# d5 2c 20 27 74 77 6f 27 2c 20 27 74 68 72 65 65 27 |...two....three.|
+# e5 29 29 |..|
+# Query thread_id=1 exec_time=0 error_code=0
+use test/*!*/;
+SET TIMESTAMP=1317146243/*!*/;
+SET @@session.pseudo_thread_id=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C utf8 *//*!*/;
+SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+create table t1 (a enum('one', 'two', 'three'))
+/*!*/;
+# at 231
+#110927 20:57:25 server id 1 end_log_pos 306
+# Position Timestamp Type Master ID Size Master Pos Flags
+# e7 85 0e 82 4e 02 01 00 00 00 4b 00 00 00 32 01 00 00 08 00
+# fa 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 10a 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# 11a 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# 12a 73 74 00 42 45 47 49 4e |st.BEGIN|
+# Query thread_id=1 exec_time=0 error_code=0
+SET TIMESTAMP=1317146245/*!*/;
+BEGIN
+/*!*/;
+# at 306
+#110927 20:57:25 server id 1 end_log_pos 405
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 132 85 0e 82 4e 02 01 00 00 00 63 00 00 00 95 01 00 00 00 00
+# 145 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 155 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# 165 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# 175 73 74 00 69 6e 73 65 72 74 20 69 6e 74 6f 20 74 |st.insert.into.t|
+# 185 31 20 76 61 6c 75 65 73 20 28 27 74 77 6f 27 29 |1.values...two..|
+# Query thread_id=1 exec_time=0 error_code=0
+SET TIMESTAMP=1317146245/*!*/;
+insert into t1 values ('two')
+/*!*/;
+# at 405
+#110927 20:57:25 server id 1 end_log_pos 432
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 195 85 0e 82 4e 10 01 00 00 00 1b 00 00 00 b0 01 00 00 00 00
+# 1a8 07 00 00 00 00 00 00 00 |........|
+# Xid = 7
+COMMIT/*!*/;
+# at 432
+#110927 20:57:30 server id 1 end_log_pos 451
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 1b0 8a 0e 82 4e 03 01 00 00 00 13 00 00 00 c3 01 00 00 00 00
+# Stop
+DELIMITER ;
+# End of log file
+ROLLBACK /* added by mysqlbinlog */;
+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
+include/rpl_end.inc
=== added file 'mysql-test/suite/rpl/t/binlog-hexdump.test'
--- a/mysql-test/suite/rpl/t/binlog-hexdump.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/binlog-hexdump.test 2011-10-10 06:22:13 +0000
@@ -0,0 +1,15 @@
+#
+# Bug#11747887 - 34386: MYSQLBINLOG --HEXDUMP PRINTS LAST ROW OF HEXDUMP
+# INCORRECTLY
+#
+
+--source include/master-slave.inc
+--source include/rpl_reset.inc
+
+--sync_slave_with_master
+
+--let $MYSQLD_DATADIR= `select @@datadir`
+
+--exec $MYSQL_BINLOG --hexdump std_data/bug11747887-bin.000002
+
+--source include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/t/rpl_parallel_switch_sequential.test'
--- a/mysql-test/suite/rpl/t/rpl_parallel_switch_sequential.test 2011-08-19 13:04:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_switch_sequential.test 2011-10-07 08:36:04 +0000
@@ -40,6 +40,11 @@ let $slave_status= 0;
let $trx= 0;
let $alter= 0;
let $i= 200; # with bigger value test times out on some PB hosts
+if ($VALGRIND_TEST)
+{
+ # test may be slow on Valgrind
+ let $i=50;
+}
if (`select @@binlog_format like "STATEMENT"`) {
# relax mtr to scan unsafe warnings
let $i=50;
=== modified file 'mysql-test/t/archive.test'
--- a/mysql-test/t/archive.test 2011-03-03 09:22:17 +0000
+++ b/mysql-test/t/archive.test 2011-10-06 13:51:28 +0000
@@ -12,6 +12,7 @@ DROP TABLE if exists t1,t2,t3,t4,t5,t6;
--enable_warnings
SET default_storage_engine=ARCHIVE;
+let $MYSQLD_DATADIR= `SELECT @@datadir`;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
@@ -1641,18 +1642,14 @@ DROP TABLE t1,t2;
#
# BUG#47012 archive tables are not upgradeable, and server crashes on any access
#
-let $MYSQLD_DATADIR= `SELECT @@datadir`;
copy_file std_data/bug47012.frm $MYSQLD_DATADIR/test/t1.frm;
copy_file std_data/bug47012.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
copy_file std_data/bug47012.ARM $MYSQLD_DATADIR/test/t1.ARM;
---error ER_TABLE_NEEDS_UPGRADE
SHOW CREATE TABLE t1;
---error ER_TABLE_NEEDS_UPGRADE
SELECT * FROM t1;
---error ER_TABLE_NEEDS_UPGRADE
INSERT INTO t1 (col1, col2) VALUES (1, "value");
REPAIR TABLE t1;
@@ -1715,7 +1712,6 @@ CREATE TABLE t1 (a int) ENGINE=ARCHIVE;
SHOW CREATE TABLE t1;
INSERT INTO t1 VALUES (1);
OPTIMIZE TABLE t1;
-let $MYSQLD_DATADIR= `select @@datadir`;
remove_file $MYSQLD_DATADIR/test/t1.frm;
FLUSH TABLES;
INSERT INTO t1 VALUES (2);
@@ -1745,3 +1741,33 @@ INSERT INTO t1 SELECT t1.* FROM t1,t1 t2
SELECT * FROM t1 ORDER BY f LIMIT 1;
DROP TABLE t1;
SET sort_buffer_size=DEFAULT;
+
+--echo #
+--echo # BUG#11756687 - 48633: ARCHIVE TABLES ARE NOT UPGRADEABLE
+--echo #
+copy_file std_data/bug48633.frm $MYSQLD_DATADIR/test/t1.frm;
+copy_file std_data/bug48633.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
+copy_file std_data/bug48633.ARM $MYSQLD_DATADIR/test/t1.ARM;
+SHOW CREATE TABLE t1;
+# Test first table scan
+SELECT * FROM t1;
+# Test second table scan
+SELECT * FROM t1;
+# Test table close
+FLUSH TABLE t1;
+SELECT * FROM t1;
+# Test check
+CHECK TABLE t1;
+SELECT * FROM t1;
+# Test insert
+INSERT INTO t1 VALUES(3, 'text', 'varchar', 'blob1', 'blob2');
+SELECT * FROM t1;
+# Test table close after insert
+FLUSH TABLE t1;
+SELECT * FROM t1;
+# Test repair
+REPAIR TABLE t1;
+SELECT * FROM t1;
+# Test check table after upgrade
+CHECK TABLE t1;
+DROP TABLE t1;
=== modified file 'mysql-test/t/partition_innodb.test'
--- a/mysql-test/t/partition_innodb.test 2011-08-29 07:08:18 +0000
+++ b/mysql-test/t/partition_innodb.test 2011-10-07 08:30:01 +0000
@@ -9,6 +9,17 @@ drop table if exists t1, t2;
let $MYSQLD_DATADIR= `SELECT @@datadir`;
--echo #
+--echo # Bug#13007154: Crash in keys_to_use_for_scanning with ORDER BY
+--echo # and PARTITIONING
+--echo #
+CREATE TABLE t1 (a INT, KEY(a))
+ENGINE = InnoDB
+PARTITION BY KEY (a) PARTITIONS 1;
+SELECT 1 FROM t1 WHERE a > (SELECT LAST_INSERT_ID() FROM t1 LIMIT 0)
+ORDER BY a;
+DROP TABLE t1;
+
+--echo #
--echo # Bug#56287: crash when using Partition datetime in sub in query
--echo #
=== modified file 'mysql-test/t/partition_myisam.test'
--- a/mysql-test/t/partition_myisam.test 2011-10-06 09:50:40 +0000
+++ b/mysql-test/t/partition_myisam.test 2011-10-07 14:20:21 +0000
@@ -10,6 +10,27 @@ DROP TABLE IF EXISTS t1, t2;
let $MYSQLD_DATADIR= `SELECT @@datadir`;
--echo #
+--echo # Bug#11763825/56590: PARTITIONS: FULLTEXT SEARCHES FAIL
+--echo # (bad/confusing error message)
+CREATE TABLE t1
+(a INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
+ b VARCHAR(200),
+ c TEXT)
+ENGINE=MyISAM
+PARTITION BY HASH(a) PARTITIONS 1;
+--error ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING
+CREATE FULLTEXT INDEX msg ON t1 (b, c);
+DROP TABLE t1;
+--error ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING
+CREATE TABLE t1
+(a INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
+ b VARCHAR(200),
+ c TEXT,
+ FULLTEXT (b, c))
+ENGINE=MyISAM
+PARTITION BY HASH(a) PARTITIONS 1;
+
+--echo #
--echo # BUG#11933226 - 60681: CHECKSUM TABLE RETURNS 0 FOR PARTITIONED TABLE
--echo #
CREATE TABLE t1 (
=== modified file 'mysql-test/valgrind.supp'
--- a/mysql-test/valgrind.supp 2011-09-19 14:08:30 +0000
+++ b/mysql-test/valgrind.supp 2011-10-07 06:03:14 +0000
@@ -281,6 +281,16 @@
fun:do_flush
}
+{
+ libz deflate4
+ Memcheck:Param
+ write(buf)
+ fun:*
+ fun:my_write
+ fun:do_flush
+ fun:azclose
+}
+
#
# Warning from my_thread_init becasue mysqld dies before kill thread exists
#
=== modified file 'scripts/mysql_install_db.pl.in'
--- a/scripts/mysql_install_db.pl.in 2011-09-06 16:23:43 +0000
+++ b/scripts/mysql_install_db.pl.in 2011-10-10 06:59:58 +0000
@@ -538,7 +538,7 @@ else
"",
"Examine the logs in $opt->{ldata} for more information.",
"You can try to start the mysqld daemon with:",
- "$mysqld --skip-grant &",
+ "$mysqld --skip-grant-tables &",
"and use the command line tool",
"$bindir/mysql to connect to the mysql",
"database and look at the grant tables:",
=== modified file 'scripts/mysql_install_db.sh'
--- a/scripts/mysql_install_db.sh 2011-09-06 15:59:12 +0000
+++ b/scripts/mysql_install_db.sh 2011-10-10 06:59:58 +0000
@@ -410,7 +410,7 @@ else
echo
echo "You can try to start the mysqld daemon with:"
echo
- echo " shell> $mysqld --skip-grant &"
+ echo " shell> $mysqld --skip-grant-tables &"
echo
echo "and use the command line tool $bindir/mysql"
echo "to connect to the mysql database and look at the grant tables:"
=== modified file 'sql/ha_partition.cc'
--- a/sql/ha_partition.cc 2011-10-06 09:50:40 +0000
+++ b/sql/ha_partition.cc 2011-10-07 08:30:01 +0000
@@ -6474,23 +6474,19 @@ void ha_partition::late_extra_no_cache(u
MODULE optimiser support
****************************************************************************/
-/*
- Get keys to use for scanning
+/**
+ Get keys to use for scanning.
- SYNOPSIS
- keys_to_use_for_scanning()
+ @return key_map of keys usable for scanning
- RETURN VALUE
- key_map of keys usable for scanning
+ @note No need to use read_partitions here, since it does not depend on
+ which partitions is used, only which storage engine used.
*/
const key_map *ha_partition::keys_to_use_for_scanning()
{
- uint first_used_partition;
DBUG_ENTER("ha_partition::keys_to_use_for_scanning");
-
- first_used_partition= bitmap_get_first_set(&(m_part_info->read_partitions));
- DBUG_RETURN(m_file[first_used_partition]->keys_to_use_for_scanning());
+ DBUG_RETURN(m_file[0]->keys_to_use_for_scanning());
}
#define MAX_PARTS_FOR_OPTIMIZER_CALLS 10
=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc 2011-09-22 10:14:00 +0000
+++ b/sql/log_event.cc 2011-10-10 06:22:13 +0000
@@ -1677,6 +1677,11 @@ void Log_event::print_header(IO_CACHE* f
if (hex_string[0])
{
char emit_buf[256];
+ int pad_length= 48 - strlen(h);
+ DBUG_ASSERT(strlen(h) < 48);
+ for(int pad_done= 0; pad_done < pad_length; pad_done++)
+ *h++ = ' ';
+ *h= '\0';
size_t const bytes_written=
my_snprintf(emit_buf, sizeof(emit_buf),
"# %8.8lx %-48.48s |%s|\n",
=== modified file 'sql/rpl_info_file.cc'
--- a/sql/rpl_info_file.cc 2011-08-19 13:04:28 +0000
+++ b/sql/rpl_info_file.cc 2011-09-14 16:12:22 +0000
@@ -130,26 +130,14 @@ int Rpl_info_file::do_prepare_info_for_w
int Rpl_info_file::do_check_info(const ulong *uidx __attribute__((unused)),
const uint nidx __attribute__((unused)))
{
-#ifndef NO_DBUG
/*
- This function checks if the file exists and in other modules
- further actions are taken based on this. If the file exists
- but users do not have the appropriated rights to access it,
- other modules will assume that the file does not exist and
- will take the appropriate actions and most likely will fail
- safely after trying to create it.
+ This function is used by callers to check if the file exists.
- This is behavior is not a problem. However, in other modules,
- it is not possible to print out what is the root of the
- failure as a detailed error code is not returned. For that
- reason, we print out such information in here.
+ If the file exists but users do not have the appropriated
+ rights to access it, callers will assume that the file does
+ not exist taking the appropriate actions and failing when
+ trying to create the file.
*/
- if (my_access(info_fname, F_OK | R_OK | W_OK))
- sql_print_information("Info file %s cannot be accessed (errno %d)."
- " Most likely this is a new slave or you are"
- " changing the repository type.", info_fname,
- errno);
-#endif
return my_access(info_fname, F_OK);
}
=== modified file 'sql/rpl_rli_pdb.cc'
--- a/sql/rpl_rli_pdb.cc 2011-10-05 13:16:38 +0000
+++ b/sql/rpl_rli_pdb.cc 2011-10-06 15:32:21 +0000
@@ -692,12 +692,11 @@ Slave_worker *map_db_to_worker(const cha
Unless \exists the last assigned Worker, get a free worker based
on a policy described in the function get_least_occupied_worker().
*/
+ mysql_mutex_lock(&slave_worker_hash_lock);
+
entry->worker= (!last_worker) ?
get_least_occupied_worker(workers) : last_worker;
entry->worker->usage_partition++;
-
- mysql_mutex_lock(&slave_worker_hash_lock);
-
if (mapping_db_to_worker.records > mts_partition_hash_soft_max)
{
/* remove zero-usage (todo: rare or long ago scheduled) records */
=== modified file 'sql/share/errmsg-utf8.txt'
--- a/sql/share/errmsg-utf8.txt 2011-09-29 12:55:06 +0000
+++ b/sql/share/errmsg-utf8.txt 2011-10-07 14:20:21 +0000
@@ -6592,3 +6592,7 @@ ER_PLUGIN_NO_UNINSTALL
ER_PLUGIN_NO_INSTALL
eng "Plugin '%s' is marked as not dynamically installable. You have to stop the server to install it."
+
+ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING
+ eng "FULLTEXT index is not supported for partitioned tables."
+ swe "FULLTEXT index stöds ej för partitionerade tabeller."
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2011-08-30 04:28:18 +0000
+++ b/sql/sql_table.cc 2011-10-07 14:20:21 +0000
@@ -3457,6 +3457,15 @@ mysql_prepare_create_table(THD *thd, HA_
{
if (!(file->ha_table_flags() & HA_CAN_FULLTEXT))
{
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ if (file->ht == partition_hton)
+ {
+ my_message(ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING,
+ ER(ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING),
+ MYF(0));
+ DBUG_RETURN(TRUE);
+ }
+#endif
my_message(ER_TABLE_CANT_HANDLE_FT, ER(ER_TABLE_CANT_HANDLE_FT),
MYF(0));
DBUG_RETURN(TRUE);
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2011-09-26 13:48:06 +0000
+++ b/sql/table.cc 2011-10-07 06:03:14 +0000
@@ -1173,7 +1173,7 @@ static int open_binary_frm(THD *thd, TAB
}
else
#endif
- if (share->mysql_version >= 50110)
+ if (share->mysql_version >= 50110 && next_chunk < buff_end)
{
/* New auto_partitioned indicator introduced in 5.1.11 */
#ifdef WITH_PARTITION_STORAGE_ENGINE
=== modified file 'sql/udf_example.c'
--- a/sql/udf_example.c 2011-06-30 15:50:45 +0000
+++ b/sql/udf_example.c 2011-10-10 06:59:58 +0000
@@ -20,7 +20,7 @@
** The functions name, type and shared library is saved in the new system
** table 'func'. To be able to create new functions one must have write
** privilege for the database 'mysql'. If one starts MySQL with
-** --skip-grant, then UDF initialization will also be skipped.
+** --skip-grant-tables, then UDF initialization will also be skipped.
**
** Syntax for the new commands are:
** create function <function_name> returns {string|real|integer}
=== modified file 'storage/archive/azio.c'
--- a/storage/archive/azio.c 2011-06-03 07:49:05 +0000
+++ b/storage/archive/azio.c 2011-10-06 13:51:28 +0000
@@ -71,6 +71,7 @@ int az_open (azio_stream *s, const char
s->version = (unsigned char)az_magic[1]; /* this needs to be a define to version */
s->minor_version= (unsigned char) az_magic[2]; /* minor version */
s->dirty= AZ_STATE_CLEAN;
+ s->start= 0;
/*
We do our own version of append by nature.
@@ -169,6 +170,9 @@ int write_header(azio_stream *s)
char buffer[AZHEADER_SIZE + AZMETA_BUFFER_SIZE];
char *ptr= buffer;
+ if (s->version == 1)
+ return 0;
+
s->block_size= AZ_BUFSIZE_WRITE;
s->version = (unsigned char)az_magic[1];
s->minor_version = (unsigned char)az_magic[2];
@@ -290,9 +294,9 @@ void check_header(azio_stream *s)
/* Peek ahead to check the gzip magic header */
if ( s->stream.next_in[0] == gz_magic[0] && s->stream.next_in[1] == gz_magic[1])
{
+ read_header(s, s->stream.next_in);
s->stream.avail_in -= 2;
s->stream.next_in += 2;
- s->version= (unsigned char)2;
/* Check the rest of the gzip header */
method = get_byte(s);
@@ -321,7 +325,8 @@ void check_header(azio_stream *s)
for (len = 0; len < 2; len++) (void)get_byte(s);
}
s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;
- s->start = my_tell(s->file, MYF(0)) - s->stream.avail_in;
+ if (!s->start)
+ s->start= my_tell(s->file, MYF(0)) - s->stream.avail_in;
}
else if ( s->stream.next_in[0] == az_magic[0] && s->stream.next_in[1] == az_magic[1])
{
@@ -365,9 +370,11 @@ void read_header(azio_stream *s, unsigne
else if (buffer[0] == gz_magic[0] && buffer[1] == gz_magic[1])
{
/*
- Set version number to previous version (2).
+ Set version number to previous version (1).
*/
- s->version= (unsigned char) 2;
+ s->version= 1;
+ s->auto_increment= 0;
+ s->frm_length= 0;
} else {
/*
Unknown version.
=== modified file 'storage/archive/ha_archive.cc'
--- a/storage/archive/ha_archive.cc 2011-09-21 11:01:41 +0000
+++ b/storage/archive/ha_archive.cc 2011-10-08 17:18:28 +0000
@@ -93,6 +93,11 @@
inserts a lot faster, but would mean highly arbitrary reads.
-Brian
+
+ Archive file format versions:
+ <5.1.5 - v.1
+ 5.1.5-5.1.15 - v.2
+ >5.1.15 - v.3
*/
/* Variables for archive share methods */
@@ -104,6 +109,14 @@ static HASH archive_open_tables;
#define ARN ".ARN" // Files used during an optimize call
#define ARM ".ARM" // Meta file (deprecated)
+/* 5.0 compatibility */
+#define META_V1_OFFSET_CHECK_HEADER 0
+#define META_V1_OFFSET_VERSION 1
+#define META_V1_OFFSET_ROWS_RECORDED 2
+#define META_V1_OFFSET_CHECK_POINT 10
+#define META_V1_OFFSET_CRASHED 18
+#define META_V1_LENGTH 19
+
/*
uchar + uchar
*/
@@ -281,6 +294,106 @@ err:
DBUG_RETURN(1);
}
+
+/**
+ @brief Read version 1 meta file (5.0 compatibility routine).
+
+ @return Completion status
+ @retval 0 Success
+ @retval !0 Failure
+*/
+
+int ha_archive::read_v1_metafile()
+{
+ char file_name[FN_REFLEN];
+ uchar buf[META_V1_LENGTH];
+ File fd;
+ DBUG_ENTER("ha_archive::read_v1_metafile");
+
+ fn_format(file_name, share->data_file_name, "", ARM, MY_REPLACE_EXT);
+ if ((fd= my_open(file_name, O_RDONLY, MYF(0))) == -1)
+ DBUG_RETURN(-1);
+
+ if (my_read(fd, buf, sizeof(buf), MYF(0)) != sizeof(buf))
+ {
+ my_close(fd, MYF(0));
+ DBUG_RETURN(-1);
+ }
+
+ share->rows_recorded= uint8korr(buf + META_V1_OFFSET_ROWS_RECORDED);
+ share->crashed= buf[META_V1_OFFSET_CRASHED];
+ my_close(fd, MYF(0));
+ DBUG_RETURN(0);
+}
+
+
+/**
+ @brief Write version 1 meta file (5.0 compatibility routine).
+
+ @return Completion status
+ @retval 0 Success
+ @retval !0 Failure
+*/
+
+int ha_archive::write_v1_metafile()
+{
+ char file_name[FN_REFLEN];
+ uchar buf[META_V1_LENGTH];
+ File fd;
+ DBUG_ENTER("ha_archive::write_v1_metafile");
+
+ buf[META_V1_OFFSET_CHECK_HEADER]= ARCHIVE_CHECK_HEADER;
+ buf[META_V1_OFFSET_VERSION]= 1;
+ int8store(buf + META_V1_OFFSET_ROWS_RECORDED, share->rows_recorded);
+ int8store(buf + META_V1_OFFSET_CHECK_POINT, (ulonglong) 0);
+ buf[META_V1_OFFSET_CRASHED]= share->crashed;
+
+ fn_format(file_name, share->data_file_name, "", ARM, MY_REPLACE_EXT);
+ if ((fd= my_open(file_name, O_WRONLY, MYF(0))) == -1)
+ DBUG_RETURN(-1);
+
+ if (my_write(fd, buf, sizeof(buf), MYF(0)) != sizeof(buf))
+ {
+ my_close(fd, MYF(0));
+ DBUG_RETURN(-1);
+ }
+
+ my_close(fd, MYF(0));
+ DBUG_RETURN(0);
+}
+
+
+/**
+ @brief Pack version 1 row (5.0 compatibility routine).
+
+ @param[in] record the record to pack
+
+ @return Length of packed row
+*/
+
+unsigned int ha_archive::pack_row_v1(uchar *record)
+{
+ uint *blob, *end;
+ uchar *pos;
+ DBUG_ENTER("pack_row_v1");
+ memcpy(record_buffer->buffer, record, table->s->reclength);
+ pos= record_buffer->buffer + table->s->reclength;
+ for (blob= table->s->blob_field, end= blob + table->s->blob_fields;
+ blob != end; blob++)
+ {
+ uint32 length= ((Field_blob *) table->field[*blob])->get_length();
+ if (length)
+ {
+ uchar *data_ptr;
+ ((Field_blob *) table->field[*blob])->get_ptr(&data_ptr);
+ memcpy(pos, data_ptr, length);
+ pos+= length;
+ }
+ }
+ DBUG_RETURN(pos - record_buffer->buffer);
+}
+
+
/*
This method reads the header of a datafile and returns whether or not it was successful.
*/
@@ -390,12 +503,8 @@ ARCHIVE_SHARE *ha_archive::get_share(con
stats.auto_increment_value= archive_tmp.auto_increment + 1;
share->rows_recorded= (ha_rows)archive_tmp.rows;
share->crashed= archive_tmp.dirty;
- /*
- If archive version is less than 3, It should be upgraded before
- use.
- */
- if (archive_tmp.version < ARCHIVE_VERSION)
- *rc= HA_ERR_TABLE_NEEDS_UPGRADE;
+ if (archive_tmp.version == 1)
+ read_v1_metafile();
azclose(&archive_tmp);
(void) my_hash_insert(&archive_open_tables, (uchar*) share);
@@ -441,6 +550,8 @@ int ha_archive::free_share()
*/
if (share->archive_write_open)
{
+ if (share->archive_write.version == 1)
+ write_v1_metafile();
if (azclose(&(share->archive_write)))
rc= 1;
}
@@ -527,13 +638,7 @@ int ha_archive::open(const char *name, i
(open_options & HA_OPEN_FOR_REPAIR) ? "yes" : "no"));
share= get_share(name, &rc);
- /*
- Allow open on crashed table in repair mode only.
- Block open on 5.0 ARCHIVE table. Though we have almost all
- routines to access these tables, they were not well tested.
- For now we have to refuse to open such table to avoid
- potential data loss.
- */
+ /* Allow open on crashed table in repair mode only. */
switch (rc)
{
case 0:
@@ -541,8 +646,6 @@ int ha_archive::open(const char *name, i
case HA_ERR_CRASHED_ON_USAGE:
if (open_options & HA_OPEN_FOR_REPAIR)
break;
- /* fall through */
- case HA_ERR_TABLE_NEEDS_UPGRADE:
free_share();
/* fall through */
default:
@@ -610,11 +713,40 @@ int ha_archive::close(void)
}
+void ha_archive::frm_load(const char *name, azio_stream *dst)
+{
+ char name_buff[FN_REFLEN];
+ MY_STAT file_stat;
+ File frm_file;
+ uchar *frm_ptr;
+ DBUG_ENTER("ha_archive::frm_load");
+ fn_format(name_buff, name, "", ".frm", MY_REPLACE_EXT | MY_UNPACK_FILENAME);
+
+ /* Here is where we open up the frm and pass it to archive to store */
+ if ((frm_file= my_open(name_buff, O_RDONLY, MYF(0))) >= 0)
+ {
+ if (!mysql_file_fstat(frm_file, &file_stat, MYF(MY_WME)))
+ {
+ frm_ptr= (uchar *) my_malloc(sizeof(uchar) * file_stat.st_size, MYF(0));
+ if (frm_ptr)
+ {
+ if (my_read(frm_file, frm_ptr, file_stat.st_size, MYF(0)) ==
+ (size_t) file_stat.st_size)
+ azwrite_frm(dst, (char *) frm_ptr, file_stat.st_size);
+ my_free(frm_ptr);
+ }
+ }
+ my_close(frm_file, MYF(0));
+ }
+ DBUG_VOID_RETURN;
+}
+
+
/**
Copy a frm blob between streams.
- @param src The source stream.
- @param dst The destination stream.
+ @param[in] src The source stream.
+ @param[in] dst The destination stream.
@return Zero on success, non-zero otherwise.
*/
@@ -624,6 +756,13 @@ int ha_archive::frm_copy(azio_stream *sr
int rc= 0;
char *frm_ptr;
+ /* If there is no .frm in source stream, try to read .frm from file. */
+ if (!src->frm_length)
+ {
+ frm_load(table->s->normalized_path.str, dst);
+ return 0;
+ }
+
if (!(frm_ptr= (char *) my_malloc(src->frm_length, MYF(0))))
return HA_ERR_OUT_OF_MEM;
@@ -654,9 +793,7 @@ int ha_archive::create(const char *name,
char linkname[FN_REFLEN];
int error;
azio_stream create_stream; /* Archive file we are working with */
- File frm_file; /* File handler for readers */
MY_STAT file_stat; // Stat information for the data file
- uchar *frm_ptr;
DBUG_ENTER("ha_archive::create");
@@ -716,26 +853,8 @@ int ha_archive::create(const char *name,
if (linkname[0])
my_symlink(name_buff, linkname, MYF(0));
- fn_format(name_buff, name, "", ".frm",
- MY_REPLACE_EXT | MY_UNPACK_FILENAME);
- /*
- Here is where we open up the frm and pass it to archive to store
- */
- if ((frm_file= my_open(name_buff, O_RDONLY, MYF(0))) > 0)
- {
- if (!mysql_file_fstat(frm_file, &file_stat, MYF(MY_WME)))
- {
- frm_ptr= (uchar *)my_malloc(sizeof(uchar) * file_stat.st_size, MYF(0));
- if (frm_ptr)
- {
- my_read(frm_file, frm_ptr, file_stat.st_size, MYF(0));
- azwrite_frm(&create_stream, (char *)frm_ptr, file_stat.st_size);
- my_free(frm_ptr);
- }
- }
- my_close(frm_file, MYF(0));
- }
+ frm_load(name, &create_stream);
if (create_info->comment.str)
azwrite_comment(&create_stream, create_info->comment.str,
@@ -829,6 +948,9 @@ unsigned int ha_archive::pack_row(uchar
if (fix_rec_buff(max_row_length(record)))
DBUG_RETURN(HA_ERR_OUT_OF_MEM); /* purecov: inspected */
+ if (share->archive_write.version == 1)
+ DBUG_RETURN(pack_row_v1(record));
+
/* Copy null bits */
memcpy(record_buffer->buffer+ARCHIVE_ROW_HEADER_SIZE,
record, table->s->null_bytes);
@@ -1382,6 +1504,8 @@ int ha_archive::optimize(THD* thd, HA_CH
// now we close both our writer and our reader for the rename
if (share->archive_write_open)
{
+ if (share->archive_write.version == 1)
+ write_v1_metafile();
azclose(&(share->archive_write));
share->archive_write_open= FALSE;
}
@@ -1426,7 +1550,7 @@ int ha_archive::optimize(THD* thd, HA_CH
share->rows_recorded= 0;
stats.auto_increment_value= 1;
share->archive_write.auto_increment= 0;
- my_bitmap_map *org_bitmap= dbug_tmp_use_all_columns(table, table->read_set);
+ my_bitmap_map *org_bitmap= tmp_use_all_columns(table, table->read_set);
while (!(rc= get_row(&archive, table->record[0])))
{
@@ -1447,7 +1571,7 @@ int ha_archive::optimize(THD* thd, HA_CH
}
}
- dbug_tmp_restore_column_map(table->read_set, org_bitmap);
+ tmp_restore_column_map(table->read_set, org_bitmap);
share->rows_recorded= (ha_rows)writer.rows;
}
@@ -1664,6 +1788,29 @@ bool ha_archive::is_crashed() const
DBUG_RETURN(share->crashed);
}
+
+/**
+ @brief Check for upgrade
+
+ @param[in] check_opt check options
+
+ @return Completion status
+ @retval HA_ADMIN_OK No upgrade required
+ @retval HA_ADMIN_CORRUPT Cannot read meta-data
+ @retval HA_ADMIN_NEEDS_UPGRADE Upgrade required
+*/
+
+int ha_archive::check_for_upgrade(HA_CHECK_OPT *check_opt)
+{
+ DBUG_ENTER("ha_archive::check_for_upgrade");
+ if (init_archive_reader())
+ DBUG_RETURN(HA_ADMIN_CORRUPT);
+ if (archive.version < ARCHIVE_VERSION)
+ DBUG_RETURN(HA_ADMIN_NEEDS_UPGRADE);
+ DBUG_RETURN(HA_ADMIN_OK);
+}
+
+
/*
Simple scan of the tables to make sure everything is ok.
*/
@@ -1677,9 +1824,12 @@ int ha_archive::check(THD* thd, HA_CHECK
old_proc_info= thd_proc_info(thd, "Checking table");
/* Flush any waiting data */
- mysql_mutex_lock(&share->mutex);
- azflush(&(share->archive_write), Z_SYNC_FLUSH);
- mysql_mutex_unlock(&share->mutex);
+ if (share->archive_write_open)
+ {
+ mysql_mutex_lock(&share->mutex);
+ azflush(&(share->archive_write), Z_SYNC_FLUSH);
+ mysql_mutex_unlock(&share->mutex);
+ }
if (init_archive_reader())
DBUG_RETURN(HA_ADMIN_CORRUPT);
=== modified file 'storage/archive/ha_archive.h'
--- a/storage/archive/ha_archive.h 2011-06-30 15:50:45 +0000
+++ b/storage/archive/ha_archive.h 2011-10-07 06:03:14 +0000
@@ -72,6 +72,10 @@ class ha_archive: public handler
archive_record_buffer *create_record_buffer(unsigned int length);
void destroy_record_buffer(archive_record_buffer *r);
int frm_copy(azio_stream *src, azio_stream *dst);
+ void frm_load(const char *name, azio_stream *dst);
+ int read_v1_metafile();
+ int write_v1_metafile();
+ unsigned int pack_row_v1(uchar *record);
public:
ha_archive(handlerton *hton, TABLE_SHARE *table_arg);
@@ -139,6 +143,7 @@ public:
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
enum thr_lock_type lock_type);
bool is_crashed() const;
+ int check_for_upgrade(HA_CHECK_OPT *check_opt);
int check(THD* thd, HA_CHECK_OPT* check_opt);
bool check_and_repair(THD *thd);
uint32 max_row_length(const uchar *buf);
=== modified file 'storage/perfschema/table_ews_by_thread_by_event_name.cc'
--- a/storage/perfschema/table_ews_by_thread_by_event_name.cc 2011-08-16 03:57:30 +0000
+++ b/storage/perfschema/table_ews_by_thread_by_event_name.cc 2011-10-06 17:15:47 +0000
@@ -246,8 +246,8 @@ void table_ews_by_thread_by_event_name
*/
if (klass->is_deferred())
{
- /* Visit instances owned by this thread. Do not visit the class. */
- PFS_instance_wait_visitor inst_visitor;
+ /* Visit instances owned by this thread. Do not visit the class. */
+ PFS_instance_wait_visitor inst_visitor;
PFS_instance_iterator::visit_instances(klass, &inst_visitor,
thread, false);
/* Combine the deferred stats and global stats */
=== modified file 'storage/perfschema/table_socket_summary_by_event_name.cc'
--- a/storage/perfschema/table_socket_summary_by_event_name.cc 2011-03-28 23:37:10 +0000
+++ b/storage/perfschema/table_socket_summary_by_event_name.cc 2011-10-06 17:15:47 +0000
@@ -1,348 +1,348 @@
-/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
-
-/**
- @file storage/perfschema/table_socket_summary_by_event_name.cc
- Table SOCKET_EVENT_NAMES (implementation).
-*/
-
-#include "my_global.h"
-#include "my_pthread.h"
-#include "pfs_instr.h"
-#include "pfs_column_types.h"
-#include "pfs_column_values.h"
-#include "table_socket_summary_by_event_name.h"
-#include "pfs_global.h"
-#include "pfs_visitor.h"
-
-THR_LOCK table_socket_summary_by_event_name::m_table_lock;
-
-static const TABLE_FIELD_TYPE field_types[]=
-{
- {
- { C_STRING_WITH_LEN("EVENT_NAME") },
- { C_STRING_WITH_LEN("varchar(128)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("COUNT_STAR") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
-
- /** Read */
- {
- { C_STRING_WITH_LEN("COUNT_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
-
- /** Write */
- {
- { C_STRING_WITH_LEN("COUNT_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
-
- /** Misc */
- {
- { C_STRING_WITH_LEN("COUNT_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- }
-};
-
-TABLE_FIELD_DEF
-table_socket_summary_by_event_name::m_field_def=
-{ 23, field_types };
-
-PFS_engine_table_share
-table_socket_summary_by_event_name::m_share=
-{
- { C_STRING_WITH_LEN("socket_summary_by_event_name") },
- &pfs_readonly_acl,
- &table_socket_summary_by_event_name::create,
- NULL, /* write_row */
- table_socket_summary_by_event_name::delete_all_rows,
- NULL, /* get_row_count */
- 1000, /* records */
- sizeof(PFS_simple_index),
- &m_table_lock,
- &m_field_def,
- false /* checked */
-};
-
-PFS_engine_table* table_socket_summary_by_event_name::create(void)
-{
- return new table_socket_summary_by_event_name();
-}
-
-table_socket_summary_by_event_name::table_socket_summary_by_event_name()
- : PFS_engine_table(&m_share, &m_pos),
- m_row_exists(false), m_pos(1), m_next_pos(1)
-{}
-
-int table_socket_summary_by_event_name::delete_all_rows(void)
-{
- reset_socket_instance_io();
- reset_socket_class_io();
- return 0;
-}
-
-void table_socket_summary_by_event_name::reset_position(void)
-{
- m_pos.m_index= 1;
- m_next_pos.m_index= 1;
-}
-
-int table_socket_summary_by_event_name::rnd_next(void)
-{
- PFS_socket_class *socket_class;
-
- m_pos.set_at(&m_next_pos);
-
- socket_class= find_socket_class(m_pos.m_index);
- if (socket_class)
- {
- make_row(socket_class);
- m_next_pos.set_after(&m_pos);
- return 0;
- }
-
- return HA_ERR_END_OF_FILE;
-}
-
-int table_socket_summary_by_event_name::rnd_pos(const void *pos)
-{
- PFS_socket_class *socket_class;
-
- set_position(pos);
-
- socket_class= find_socket_class(m_pos.m_index);
- if (socket_class)
- {
- make_row(socket_class);
- return 0;
- }
-
- return HA_ERR_RECORD_DELETED;
-}
-
-void table_socket_summary_by_event_name::make_row(PFS_socket_class *socket_class)
-{
- m_row.m_event_name.make_row(socket_class);
-
- PFS_instance_socket_io_stat_visitor visitor;
- PFS_instance_iterator::visit_socket_instances(socket_class, &visitor);
-
- time_normalizer *normalizer= time_normalizer::get(wait_timer);
-
- /* Collect timer and byte count stats */
- m_row.m_io_stat.set(normalizer, &visitor.m_socket_io_stat);
- m_row_exists= true;
-}
-
-int table_socket_summary_by_event_name::read_row_values(TABLE *table,
- unsigned char *,
- Field **fields,
- bool read_all)
-{
- Field *f;
-
- if (unlikely(!m_row_exists))
- return HA_ERR_RECORD_DELETED;
-
- /* Set the null bits */
- DBUG_ASSERT(table->s->null_bytes == 0);
-
- for (; (f= *fields) ; fields++)
- {
- if (read_all || bitmap_is_set(table->read_set, f->field_index))
- {
- switch(f->field_index)
- {
- case 0: /* EVENT_NAME */
- m_row.m_event_name.set_field(f);
- break;
- case 1: /* COUNT_STAR */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_count);
- break;
- case 2: /* SUM_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_sum);
- break;
- case 3: /* MIN_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_min);
- break;
- case 4: /* AVG_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_avg);
- break;
- case 5: /* MAX_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_max);
- break;
-
- case 6: /* COUNT_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_count);
- break;
- case 7: /* SUM_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_sum);
- break;
- case 8: /* MIN_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_min);
- break;
- case 9: /* AVG_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_avg);
- break;
- case 10: /* MAX_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_max);
- break;
- case 11: /* SUM_NUMBER_OF_BYTES_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_bytes);
- break;
-
- case 12: /* COUNT_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_count);
- break;
- case 13: /* SUM_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_sum);
- break;
- case 14: /* MIN_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_min);
- break;
- case 15: /* AVG_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_avg);
- break;
- case 16: /* MAX_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_max);
- break;
- case 17: /* SUM_NUMBER_OF_BYTES_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_bytes);
- break;
-
- case 18: /* COUNT_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_count);
- break;
- case 19: /* SUM_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_sum);
- break;
- case 20: /* MIN_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_min);
- break;
- case 21: /* AVG_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_avg);
- break;
- case 22: /* MAX_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_max);
- break;
-
- default:
- DBUG_ASSERT(false);
- break;
- }
- } // if
- } // for
-
- return 0;
-}
-
+/* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
+
+/**
+ @file storage/perfschema/table_socket_summary_by_event_name.cc
+ Table SOCKET_EVENT_NAMES (implementation).
+*/
+
+#include "my_global.h"
+#include "my_pthread.h"
+#include "pfs_instr.h"
+#include "pfs_column_types.h"
+#include "pfs_column_values.h"
+#include "table_socket_summary_by_event_name.h"
+#include "pfs_global.h"
+#include "pfs_visitor.h"
+
+THR_LOCK table_socket_summary_by_event_name::m_table_lock;
+
+static const TABLE_FIELD_TYPE field_types[]=
+{
+ {
+ { C_STRING_WITH_LEN("EVENT_NAME") },
+ { C_STRING_WITH_LEN("varchar(128)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("COUNT_STAR") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+
+ /** Read */
+ {
+ { C_STRING_WITH_LEN("COUNT_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+
+ /** Write */
+ {
+ { C_STRING_WITH_LEN("COUNT_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+
+ /** Misc */
+ {
+ { C_STRING_WITH_LEN("COUNT_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ }
+};
+
+TABLE_FIELD_DEF
+table_socket_summary_by_event_name::m_field_def=
+{ 23, field_types };
+
+PFS_engine_table_share
+table_socket_summary_by_event_name::m_share=
+{
+ { C_STRING_WITH_LEN("socket_summary_by_event_name") },
+ &pfs_readonly_acl,
+ &table_socket_summary_by_event_name::create,
+ NULL, /* write_row */
+ table_socket_summary_by_event_name::delete_all_rows,
+ NULL, /* get_row_count */
+ 1000, /* records */
+ sizeof(PFS_simple_index),
+ &m_table_lock,
+ &m_field_def,
+ false /* checked */
+};
+
+PFS_engine_table* table_socket_summary_by_event_name::create(void)
+{
+ return new table_socket_summary_by_event_name();
+}
+
+table_socket_summary_by_event_name::table_socket_summary_by_event_name()
+ : PFS_engine_table(&m_share, &m_pos),
+ m_row_exists(false), m_pos(1), m_next_pos(1)
+{}
+
+int table_socket_summary_by_event_name::delete_all_rows(void)
+{
+ reset_socket_instance_io();
+ reset_socket_class_io();
+ return 0;
+}
+
+void table_socket_summary_by_event_name::reset_position(void)
+{
+ m_pos.m_index= 1;
+ m_next_pos.m_index= 1;
+}
+
+int table_socket_summary_by_event_name::rnd_next(void)
+{
+ PFS_socket_class *socket_class;
+
+ m_pos.set_at(&m_next_pos);
+
+ socket_class= find_socket_class(m_pos.m_index);
+ if (socket_class)
+ {
+ make_row(socket_class);
+ m_next_pos.set_after(&m_pos);
+ return 0;
+ }
+
+ return HA_ERR_END_OF_FILE;
+}
+
+int table_socket_summary_by_event_name::rnd_pos(const void *pos)
+{
+ PFS_socket_class *socket_class;
+
+ set_position(pos);
+
+ socket_class= find_socket_class(m_pos.m_index);
+ if (socket_class)
+ {
+ make_row(socket_class);
+ return 0;
+ }
+
+ return HA_ERR_RECORD_DELETED;
+}
+
+void table_socket_summary_by_event_name::make_row(PFS_socket_class *socket_class)
+{
+ m_row.m_event_name.make_row(socket_class);
+
+ PFS_instance_socket_io_stat_visitor visitor;
+ PFS_instance_iterator::visit_socket_instances(socket_class, &visitor);
+
+ time_normalizer *normalizer= time_normalizer::get(wait_timer);
+
+ /* Collect timer and byte count stats */
+ m_row.m_io_stat.set(normalizer, &visitor.m_socket_io_stat);
+ m_row_exists= true;
+}
+
+int table_socket_summary_by_event_name::read_row_values(TABLE *table,
+ unsigned char *,
+ Field **fields,
+ bool read_all)
+{
+ Field *f;
+
+ if (unlikely(!m_row_exists))
+ return HA_ERR_RECORD_DELETED;
+
+ /* Set the null bits */
+ DBUG_ASSERT(table->s->null_bytes == 0);
+
+ for (; (f= *fields) ; fields++)
+ {
+ if (read_all || bitmap_is_set(table->read_set, f->field_index))
+ {
+ switch(f->field_index)
+ {
+ case 0: /* EVENT_NAME */
+ m_row.m_event_name.set_field(f);
+ break;
+ case 1: /* COUNT_STAR */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_count);
+ break;
+ case 2: /* SUM_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_sum);
+ break;
+ case 3: /* MIN_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_min);
+ break;
+ case 4: /* AVG_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_avg);
+ break;
+ case 5: /* MAX_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_max);
+ break;
+
+ case 6: /* COUNT_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_count);
+ break;
+ case 7: /* SUM_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_sum);
+ break;
+ case 8: /* MIN_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_min);
+ break;
+ case 9: /* AVG_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_avg);
+ break;
+ case 10: /* MAX_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_max);
+ break;
+ case 11: /* SUM_NUMBER_OF_BYTES_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_bytes);
+ break;
+
+ case 12: /* COUNT_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_count);
+ break;
+ case 13: /* SUM_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_sum);
+ break;
+ case 14: /* MIN_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_min);
+ break;
+ case 15: /* AVG_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_avg);
+ break;
+ case 16: /* MAX_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_max);
+ break;
+ case 17: /* SUM_NUMBER_OF_BYTES_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_bytes);
+ break;
+
+ case 18: /* COUNT_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_count);
+ break;
+ case 19: /* SUM_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_sum);
+ break;
+ case 20: /* MIN_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_min);
+ break;
+ case 21: /* AVG_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_avg);
+ break;
+ case 22: /* MAX_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_max);
+ break;
+
+ default:
+ DBUG_ASSERT(false);
+ break;
+ }
+ } // if
+ } // for
+
+ return 0;
+}
+
=== modified file 'storage/perfschema/table_socket_summary_by_instance.cc'
--- a/storage/perfschema/table_socket_summary_by_instance.cc 2011-08-18 12:27:21 +0000
+++ b/storage/perfschema/table_socket_summary_by_instance.cc 2011-10-06 17:15:47 +0000
@@ -1,370 +1,370 @@
-/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
-
-/**
- @file storage/perfschema/table_socket_summary_by_instance.cc
- Table SOCKET_INSTANCES (implementation).
-*/
-
-#include "my_global.h"
-#include "my_pthread.h"
-#include "pfs_instr.h"
-#include "pfs_column_types.h"
-#include "pfs_column_values.h"
-#include "table_socket_summary_by_instance.h"
-#include "pfs_global.h"
-
-THR_LOCK table_socket_summary_by_instance::m_table_lock;
-
-static const TABLE_FIELD_TYPE field_types[]=
-{
- {
- { C_STRING_WITH_LEN("EVENT_NAME") },
- { C_STRING_WITH_LEN("varchar(128)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("OBJECT_INSTANCE_BEGIN") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("COUNT_STAR") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
-
- /** Read */
- {
- { C_STRING_WITH_LEN("COUNT_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_READ") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
-
- /** Write */
- {
- { C_STRING_WITH_LEN("COUNT_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_WRITE") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
-
- /** Misc */
- {
- { C_STRING_WITH_LEN("COUNT_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("SUM_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MIN_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("AVG_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- },
- {
- { C_STRING_WITH_LEN("MAX_TIMER_MISC") },
- { C_STRING_WITH_LEN("bigint(20)") },
- { NULL, 0}
- }
-};
-
-TABLE_FIELD_DEF
-table_socket_summary_by_instance::m_field_def=
-{ 24, field_types };
-
-PFS_engine_table_share
-table_socket_summary_by_instance::m_share=
-{
- { C_STRING_WITH_LEN("socket_summary_by_instance") },
- &pfs_readonly_acl,
- &table_socket_summary_by_instance::create,
- NULL, /* write_row */
- table_socket_summary_by_instance::delete_all_rows,
- NULL, /* get_row_count */
- 1000, /* records */
- sizeof(PFS_simple_index),
- &m_table_lock,
- &m_field_def,
- false /* checked */
-};
-
-PFS_engine_table* table_socket_summary_by_instance::create(void)
-{
- return new table_socket_summary_by_instance();
-}
-
-table_socket_summary_by_instance::table_socket_summary_by_instance()
- : PFS_engine_table(&m_share, &m_pos),
- m_row_exists(false), m_pos(0), m_next_pos(0)
-{}
-
-int table_socket_summary_by_instance::delete_all_rows(void)
-{
- reset_socket_instance_io();
- return 0;
-}
-
-void table_socket_summary_by_instance::reset_position(void)
-{
- m_pos.m_index= 0;
- m_next_pos.m_index= 0;
-}
-
-int table_socket_summary_by_instance::rnd_next(void)
-{
- PFS_socket *pfs;
-
- for (m_pos.set_at(&m_next_pos);
- m_pos.m_index < socket_max;
- m_pos.next())
- {
- pfs= &socket_array[m_pos.m_index];
- if (pfs->m_lock.is_populated())
- {
- make_row(pfs);
- m_next_pos.set_after(&m_pos);
- return 0;
- }
- }
-
- return HA_ERR_END_OF_FILE;
-}
-
-int table_socket_summary_by_instance::rnd_pos(const void *pos)
-{
- PFS_socket *pfs;
-
- set_position(pos);
- DBUG_ASSERT(m_pos.m_index < socket_max);
- pfs= &socket_array[m_pos.m_index];
-
- if (! pfs->m_lock.is_populated())
- return HA_ERR_RECORD_DELETED;
-
- make_row(pfs);
- return 0;
-}
-
-void table_socket_summary_by_instance::make_row(PFS_socket *pfs)
-{
- pfs_lock lock;
- PFS_socket_class *safe_class;
-
- m_row_exists= false;
-
- /* Protect this reader against a socket delete */
- pfs->m_lock.begin_optimistic_lock(&lock);
-
- safe_class= sanitize_socket_class(pfs->m_class);
- if (unlikely(safe_class == NULL))
- return;
-
- m_row.m_event_name.make_row(safe_class);
- m_row.m_identity= pfs->m_identity;
-
- time_normalizer *normalizer= time_normalizer::get(wait_timer);
-
- /* Collect timer and byte count stats */
- m_row.m_io_stat.set(normalizer, &pfs->m_socket_stat.m_io_stat);
-
- if (!pfs->m_lock.end_optimistic_lock(&lock))
- return;
-
- m_row_exists= true;
-}
-
-int table_socket_summary_by_instance::read_row_values(TABLE *table,
- unsigned char *,
- Field **fields,
- bool read_all)
-{
- Field *f;
-
- if (unlikely(!m_row_exists))
- return HA_ERR_RECORD_DELETED;
-
- /* Set the null bits */
- DBUG_ASSERT(table->s->null_bytes == 0);
-
- for (; (f= *fields) ; fields++)
- {
- if (read_all || bitmap_is_set(table->read_set, f->field_index))
- {
- switch(f->field_index)
- {
- case 0: /* EVENT_NAME */
- m_row.m_event_name.set_field(f);
- break;
- case 1: /* OBJECT_INSTANCE */
- set_field_ulonglong(f, (ulonglong)m_row.m_identity);
- break;
-
- case 2:/* COUNT_STAR */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_count);
- break;
- case 3:/* SUM_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_sum);
- break;
- case 4: /* MIN_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_min);
- break;
- case 5: /* AVG_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_avg);
- break;
- case 6: /* MAX_TIMER_WAIT */
- set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_max);
- break;
-
- case 7: /* COUNT_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_count);
- break;
- case 8: /* SUM_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_sum);
- break;
- case 9: /* MIN_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_min);
- break;
- case 10: /* AVG_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_avg);
- break;
- case 11: /* MAX_TIMER_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_max);
- break;
- case 12: /* SUM_NUMBER_OF_BYTES_READ */
- set_field_ulonglong(f, m_row.m_io_stat.m_read.m_bytes);
- break;
-
- case 13: /* COUNT_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_count);
- break;
- case 14: /* SUM_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_sum);
- break;
- case 15: /* MIN_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_min);
- break;
- case 16: /* AVG_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_avg);
- break;
- case 17: /* MAX_TIMER_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_max);
- break;
- case 18: /* SUM_NUMBER_OF_BYTES_WRITE */
- set_field_ulonglong(f, m_row.m_io_stat.m_write.m_bytes);
- break;
-
- case 19: /* COUNT_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_count);
- break;
- case 20: /* SUM_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_sum);
- break;
- case 21: /* MIN_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_min);
- break;
- case 22: /* AVG_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_avg);
- break;
- case 23: /* MAX_TIMER_MISC */
- set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_max);
- break;
- default:
- DBUG_ASSERT(false);
- break;
- }
- }
- }
-
- return 0;
-}
-
+/* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
+
+/**
+ @file storage/perfschema/table_socket_summary_by_instance.cc
+ Table SOCKET_SUMMARY_BY_INSTANCE (implementation).
+*/
+
+#include "my_global.h"
+#include "my_pthread.h"
+#include "pfs_instr.h"
+#include "pfs_column_types.h"
+#include "pfs_column_values.h"
+#include "table_socket_summary_by_instance.h"
+#include "pfs_global.h"
+
+THR_LOCK table_socket_summary_by_instance::m_table_lock;
+
+static const TABLE_FIELD_TYPE field_types[]=
+{
+ {
+ { C_STRING_WITH_LEN("EVENT_NAME") },
+ { C_STRING_WITH_LEN("varchar(128)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("OBJECT_INSTANCE_BEGIN") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("COUNT_STAR") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+
+ /** Read */
+ {
+ { C_STRING_WITH_LEN("COUNT_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_READ") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+
+ /** Write */
+ {
+ { C_STRING_WITH_LEN("COUNT_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_NUMBER_OF_BYTES_WRITE") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+
+ /** Misc */
+ {
+ { C_STRING_WITH_LEN("COUNT_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("SUM_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MIN_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("AVG_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ },
+ {
+ { C_STRING_WITH_LEN("MAX_TIMER_MISC") },
+ { C_STRING_WITH_LEN("bigint(20)") },
+ { NULL, 0}
+ }
+};
+
+TABLE_FIELD_DEF
+table_socket_summary_by_instance::m_field_def=
+{ 24, field_types };
+
+PFS_engine_table_share
+table_socket_summary_by_instance::m_share=
+{
+ { C_STRING_WITH_LEN("socket_summary_by_instance") },
+ &pfs_readonly_acl,
+ &table_socket_summary_by_instance::create,
+ NULL, /* write_row */
+ table_socket_summary_by_instance::delete_all_rows,
+ NULL, /* get_row_count */
+ 1000, /* records */
+ sizeof(PFS_simple_index),
+ &m_table_lock,
+ &m_field_def,
+ false /* checked */
+};
+
+PFS_engine_table* table_socket_summary_by_instance::create(void)
+{
+ return new table_socket_summary_by_instance();
+}
+
+table_socket_summary_by_instance::table_socket_summary_by_instance()
+ : PFS_engine_table(&m_share, &m_pos),
+ m_row_exists(false), m_pos(0), m_next_pos(0)
+{}
+
+int table_socket_summary_by_instance::delete_all_rows(void)
+{
+ reset_socket_instance_io();
+ return 0;
+}
+
+void table_socket_summary_by_instance::reset_position(void)
+{
+ m_pos.m_index= 0;
+ m_next_pos.m_index= 0;
+}
+
+int table_socket_summary_by_instance::rnd_next(void)
+{
+ PFS_socket *pfs;
+
+ for (m_pos.set_at(&m_next_pos);
+ m_pos.m_index < socket_max;
+ m_pos.next())
+ {
+ pfs= &socket_array[m_pos.m_index];
+ if (pfs->m_lock.is_populated())
+ {
+ make_row(pfs);
+ m_next_pos.set_after(&m_pos);
+ return 0;
+ }
+ }
+
+ return HA_ERR_END_OF_FILE;
+}
+
+int table_socket_summary_by_instance::rnd_pos(const void *pos)
+{
+ PFS_socket *pfs;
+
+ set_position(pos);
+ DBUG_ASSERT(m_pos.m_index < socket_max);
+ pfs= &socket_array[m_pos.m_index];
+
+ if (! pfs->m_lock.is_populated())
+ return HA_ERR_RECORD_DELETED;
+
+ make_row(pfs);
+ return 0;
+}
+
+void table_socket_summary_by_instance::make_row(PFS_socket *pfs)
+{
+ pfs_lock lock;
+ PFS_socket_class *safe_class;
+
+ m_row_exists= false;
+
+ /* Protect this reader against a socket delete */
+ pfs->m_lock.begin_optimistic_lock(&lock);
+
+ safe_class= sanitize_socket_class(pfs->m_class);
+ if (unlikely(safe_class == NULL))
+ return;
+
+ m_row.m_event_name.make_row(safe_class);
+ m_row.m_identity= pfs->m_identity;
+
+ time_normalizer *normalizer= time_normalizer::get(wait_timer);
+
+ /* Collect timer and byte count stats */
+ m_row.m_io_stat.set(normalizer, &pfs->m_socket_stat.m_io_stat);
+
+ if (!pfs->m_lock.end_optimistic_lock(&lock))
+ return;
+
+ m_row_exists= true;
+}
+
+int table_socket_summary_by_instance::read_row_values(TABLE *table,
+ unsigned char *,
+ Field **fields,
+ bool read_all)
+{
+ Field *f;
+
+ if (unlikely(!m_row_exists))
+ return HA_ERR_RECORD_DELETED;
+
+ /* Set the null bits */
+ DBUG_ASSERT(table->s->null_bytes == 0);
+
+ for (; (f= *fields) ; fields++)
+ {
+ if (read_all || bitmap_is_set(table->read_set, f->field_index))
+ {
+ switch(f->field_index)
+ {
+ case 0: /* EVENT_NAME */
+ m_row.m_event_name.set_field(f);
+ break;
+ case 1: /* OBJECT_INSTANCE */
+ set_field_ulonglong(f, (ulonglong)m_row.m_identity);
+ break;
+
+ case 2:/* COUNT_STAR */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_count);
+ break;
+ case 3:/* SUM_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_sum);
+ break;
+ case 4: /* MIN_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_min);
+ break;
+ case 5: /* AVG_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_avg);
+ break;
+ case 6: /* MAX_TIMER_WAIT */
+ set_field_ulonglong(f, m_row.m_io_stat.m_all.m_waits.m_max);
+ break;
+
+ case 7: /* COUNT_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_count);
+ break;
+ case 8: /* SUM_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_sum);
+ break;
+ case 9: /* MIN_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_min);
+ break;
+ case 10: /* AVG_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_avg);
+ break;
+ case 11: /* MAX_TIMER_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_waits.m_max);
+ break;
+ case 12: /* SUM_NUMBER_OF_BYTES_READ */
+ set_field_ulonglong(f, m_row.m_io_stat.m_read.m_bytes);
+ break;
+
+ case 13: /* COUNT_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_count);
+ break;
+ case 14: /* SUM_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_sum);
+ break;
+ case 15: /* MIN_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_min);
+ break;
+ case 16: /* AVG_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_avg);
+ break;
+ case 17: /* MAX_TIMER_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_waits.m_max);
+ break;
+ case 18: /* SUM_NUMBER_OF_BYTES_WRITE */
+ set_field_ulonglong(f, m_row.m_io_stat.m_write.m_bytes);
+ break;
+
+ case 19: /* COUNT_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_count);
+ break;
+ case 20: /* SUM_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_sum);
+ break;
+ case 21: /* MIN_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_min);
+ break;
+ case 22: /* AVG_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_avg);
+ break;
+ case 23: /* MAX_TIMER_MISC */
+ set_field_ulonglong(f, m_row.m_io_stat.m_misc.m_waits.m_max);
+ break;
+ default:
+ DBUG_ASSERT(false);
+ break;
+ }
+ }
+ }
+
+ return 0;
+}
+
=== modified file 'storage/perfschema/table_socket_summary_by_instance.h'
--- a/storage/perfschema/table_socket_summary_by_instance.h 2011-02-25 21:12:43 +0000
+++ b/storage/perfschema/table_socket_summary_by_instance.h 2011-10-06 17:15:47 +0000
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+/* Copyright (c) 2008, 2011, 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
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-trunk-wl5863 branch (marc.alff:3412 to 3414) | Marc Alff | 10 Oct |