From: Dmitry Lenev Date: May 3 2012 10:23am Subject: bzr push into mysql-trunk branch (Dmitry.Lenev:3888 to 3889) WL#5772 List-Archive: http://lists.mysql.com/commits/143728 Message-Id: <20120503102323.601D6420643@jubjub> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3889 Dmitry Lenev 2012-05-03 WL#5772 "Add partitioned Table Definition Cache to avoid using LOCK_open and its derivatives in DML queries". Review changes #1: - polish test case for table-open-cache-instances variable. - update results for mysqld--help-*.test modified: mysql-test/r/mysqld--help-notwin.result mysql-test/r/mysqld--help-win.result mysql-test/suite/sys_vars/r/table_open_cache_instances_basic.result mysql-test/suite/sys_vars/t/table_open_cache_instances_basic.test 3888 Mikael Ronstrom 2012-04-27 [merge] merge removed: mysql-test/suite/sys_vars/r/innodb_analyze_is_persistent_basic.result mysql-test/suite/sys_vars/t/innodb_analyze_is_persistent_basic.test added: mysql-test/lib/My/Memcache.pm mysql-test/r/func_group_innodb_16k.result mysql-test/suite/innodb/include/innodb_dict.inc mysql-test/suite/innodb/include/innodb_stats_table_flag.inc mysql-test/suite/innodb/include/innodb_stats_table_flag_analyze.inc mysql-test/suite/innodb/r/innodb-alter-debug.result mysql-test/suite/innodb/r/innodb-alter.result mysql-test/suite/innodb/r/innodb_bug13867871.result mysql-test/suite/innodb/r/innodb_stats_create_on_corrupted.result mysql-test/suite/innodb/r/innodb_stats_create_table.result mysql-test/suite/innodb/r/innodb_stats_fetch.result mysql-test/suite/innodb/r/innodb_stats_fetch_corrupted.result mysql-test/suite/innodb/r/innodb_stats_fetch_nonexistent.result mysql-test/suite/innodb/r/innodb_stats_flag_global_off.result mysql-test/suite/innodb/r/innodb_stats_flag_global_on.result mysql-test/suite/innodb/r/innodb_upd_stats_if_needed_not_inited.result mysql-test/suite/innodb/r/innodb_ut_format_name.result mysql-test/suite/innodb/t/innodb-alter-debug.test mysql-test/suite/innodb/t/innodb-alter.test mysql-test/suite/innodb/t/innodb_bug13867871.test mysql-test/suite/innodb/t/innodb_stats_create_on_corrupted.test mysql-test/suite/innodb/t/innodb_stats_create_table.test mysql-test/suite/innodb/t/innodb_stats_fetch.test mysql-test/suite/innodb/t/innodb_stats_fetch_corrupted.test mysql-test/suite/innodb/t/innodb_stats_fetch_nonexistent.test mysql-test/suite/innodb/t/innodb_stats_flag_global_off-master.opt mysql-test/suite/innodb/t/innodb_stats_flag_global_off.test mysql-test/suite/innodb/t/innodb_stats_flag_global_on-master.opt mysql-test/suite/innodb/t/innodb_stats_flag_global_on.test mysql-test/suite/innodb/t/innodb_upd_stats_if_needed_not_inited.test mysql-test/suite/innodb/t/innodb_ut_format_name.test mysql-test/suite/rpl/r/rpl_auto_increment_bug45679.result mysql-test/suite/rpl/r/rpl_parallel_show_binlog_events_purge_logs.result mysql-test/suite/rpl/t/rpl_auto_increment_bug45679.test mysql-test/suite/rpl/t/rpl_parallel_show_binlog_events_purge_logs.test mysql-test/suite/rpl/t/rpl_report_port-master.opt mysql-test/suite/sys_vars/r/innodb_stats_persistent_basic.result mysql-test/suite/sys_vars/t/innodb_stats_persistent_basic.test mysql-test/t/func_group_innodb_16k.test storage/innobase/include/dict0stats.ic modified: configure.cmake include/my_base.h mysql-test/collections/default.experimental mysql-test/extra/rpl_tests/rpl_loaddata.test mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test mysql-test/include/handler.inc mysql-test/include/subquery.inc mysql-test/lib/My/ConfigFactory.pm mysql-test/lib/mtr_cases.pm mysql-test/mysql-test-run.pl mysql-test/r/alter_table.result mysql-test/r/archive.result mysql-test/r/bug12427262.result mysql-test/r/cast.result mysql-test/r/ctype_utf8mb4.result mysql-test/r/explain.result mysql-test/r/fulltext.result mysql-test/r/func_time.result mysql-test/r/get_diagnostics.result mysql-test/r/group_by.result mysql-test/r/handler_innodb.result mysql-test/r/handler_myisam.result mysql-test/r/information_schema.result mysql-test/r/innodb_explain_json_non_select_all.result mysql-test/r/innodb_explain_json_non_select_none.result mysql-test/r/innodb_explain_non_select_all.result mysql-test/r/innodb_explain_non_select_none.result mysql-test/r/myisam_explain_json_non_select_all.result mysql-test/r/myisam_explain_json_non_select_none.result mysql-test/r/myisam_explain_non_select_all.result mysql-test/r/myisam_explain_non_select_none.result mysql-test/r/olap.result mysql-test/r/partition_error.result mysql-test/r/partition_exchange.result mysql-test/r/read_only_innodb.result mysql-test/r/sp-destruct.result mysql-test/r/subquery_all.result mysql-test/r/subquery_all_bka.result mysql-test/r/subquery_all_bka_nixbnl.result mysql-test/r/subquery_nomat_nosj.result mysql-test/r/subquery_nomat_nosj_bka.result mysql-test/r/subquery_nomat_nosj_bka_nixbnl.result mysql-test/r/subquery_none.result mysql-test/r/subquery_none_bka.result mysql-test/r/subquery_none_bka_nixbnl.result mysql-test/r/type_time.result mysql-test/r/variables.result mysql-test/suite/binlog/r/binlog_rewrite.result mysql-test/suite/innodb/include/innodb_stats.inc mysql-test/suite/innodb/r/innodb-index-online.result mysql-test/suite/innodb/r/innodb-index.result mysql-test/suite/innodb/r/innodb_bug11933790.result mysql-test/suite/innodb/r/innodb_bug12429573.result mysql-test/suite/innodb/r/innodb_bug21704.result mysql-test/suite/innodb/r/innodb_stats.result mysql-test/suite/innodb/r/innodb_stats_drop_locked.result mysql-test/suite/innodb/t/innodb-blob.test mysql-test/suite/innodb/t/innodb-index-online.test mysql-test/suite/innodb/t/innodb-index.test mysql-test/suite/innodb/t/innodb_bug11933790.test mysql-test/suite/innodb/t/innodb_bug12429573.test mysql-test/suite/innodb/t/innodb_bug21704.test mysql-test/suite/innodb/t/innodb_stats.test mysql-test/suite/innodb/t/innodb_stats_drop_locked.test mysql-test/suite/innodb_fts/r/innodb_fts_misc.result mysql-test/suite/innodb_fts/t/innodb_fts_misc.test mysql-test/suite/perfschema/r/digest_table_full.result mysql-test/suite/perfschema/r/statement_digest.result mysql-test/suite/perfschema/r/statement_digest_consumers.result mysql-test/suite/perfschema/r/statement_digest_long_query.result mysql-test/suite/rpl/r/rpl_alter_repository.result mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result mysql-test/suite/rpl/r/rpl_loaddata.result mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result mysql-test/suite/rpl/r/rpl_parallel_start_stop.result mysql-test/suite/rpl/r/rpl_report_port.result mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result mysql-test/suite/rpl/r/rpl_stm_EE_err2.result mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result mysql-test/suite/rpl/t/rpl_alter_repository.test mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test mysql-test/suite/rpl/t/rpl_parallel_change_master.test mysql-test/suite/rpl/t/rpl_parallel_start_stop.test mysql-test/suite/rpl/t/rpl_report_port.test mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic.result mysql-test/suite/sys_vars/r/max_binlog_stmt_cache_size_basic.result mysql-test/t/archive.test mysql-test/t/bug12427262.test mysql-test/t/cast.test mysql-test/t/ctype_utf8mb4.test mysql-test/t/fulltext.test mysql-test/t/func_time.test mysql-test/t/group_by.test mysql-test/t/handler_myisam.test mysql-test/t/information_schema.test mysql-test/t/olap.test scripts/mysql_system_tables.sql sql/binlog.cc sql/field.h sql/handler.h sql/item.h sql/item_buff.cc sql/item_cmpfunc.h sql/item_func.h sql/item_timefunc.cc sql/lex.h sql/log_event.cc sql/log_event.h sql/opt_range.cc sql/opt_sum.cc sql/rpl_rli.cc sql/rpl_rli.h sql/rpl_rli_pdb.cc sql/rpl_slave.cc sql/rpl_utility.cc sql/rpl_utility.h sql/share/errmsg-utf8.txt sql/sql_base.cc sql/sql_class.cc sql/sql_class.h sql/sql_handler.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_parse.cc sql/sql_show.cc sql/sql_table.cc sql/sql_yacc.yy storage/archive/ha_archive.cc storage/innobase/api/api0api.cc storage/innobase/btr/btr0cur.cc storage/innobase/buf/buf0flu.cc storage/innobase/dict/dict0dict.cc storage/innobase/dict/dict0load.cc storage/innobase/dict/dict0mem.cc storage/innobase/dict/dict0stats.cc storage/innobase/fil/fil0fil.cc storage/innobase/fts/fts0ast.cc storage/innobase/fts/fts0fts.cc storage/innobase/fts/fts0opt.cc storage/innobase/fts/fts0que.cc storage/innobase/handler/ha_innodb.cc storage/innobase/handler/ha_innodb.h storage/innobase/handler/handler0alter.cc storage/innobase/handler/i_s.cc storage/innobase/include/dict0dict.h storage/innobase/include/dict0dict.ic storage/innobase/include/dict0mem.h storage/innobase/include/dict0stats.h storage/innobase/include/fts0ast.h storage/innobase/include/fts0priv.h storage/innobase/include/read0read.h storage/innobase/include/read0read.ic storage/innobase/include/row0merge.h storage/innobase/include/row0upd.ic storage/innobase/include/srv0srv.h storage/innobase/include/ut0ut.h storage/innobase/pars/pars0pars.cc storage/innobase/read/read0read.cc storage/innobase/row/row0ftsort.cc storage/innobase/row/row0ins.cc storage/innobase/row/row0log.cc storage/innobase/row/row0merge.cc storage/innobase/row/row0mysql.cc storage/innobase/row/row0sel.cc storage/innobase/row/row0upd.cc storage/innobase/srv/srv0srv.cc storage/innobase/srv/srv0start.cc storage/innobase/trx/trx0trx.cc storage/innobase/ut/ut0ut.cc unittest/gunit/stdcxx-t.cc === modified file 'mysql-test/r/mysqld--help-notwin.result' --- a/mysql-test/r/mysqld--help-notwin.result 2012-03-21 21:19:11 +0000 +++ b/mysql-test/r/mysqld--help-notwin.result 2012-05-03 10:22:18 +0000 @@ -853,6 +853,8 @@ The following options may be given as th The number of cached table definitions --table-open-cache=# The number of cached open tables + --table-open-cache-instances=# + The number of table cache instances --tc-heuristic-recover=name Decision to use in heuristic recover process. Possible values are COMMIT or ROLLBACK. @@ -1155,6 +1157,7 @@ sysdate-is-now FALSE table-cache 400 table-definition-cache 400 table-open-cache 400 +table-open-cache-instances 1 tc-heuristic-recover COMMIT thread-cache-size 0 thread-handling one-thread-per-connection === modified file 'mysql-test/r/mysqld--help-win.result' --- a/mysql-test/r/mysqld--help-win.result 2012-03-21 21:19:11 +0000 +++ b/mysql-test/r/mysqld--help-win.result 2012-05-03 10:22:18 +0000 @@ -861,6 +861,8 @@ The following options may be given as th The number of cached table definitions --table-open-cache=# The number of cached open tables + --table-open-cache-instances=# + The number of table cache instances --tc-heuristic-recover=name Decision to use in heuristic recover process. Possible values are COMMIT or ROLLBACK. @@ -1166,6 +1168,7 @@ sysdate-is-now FALSE table-cache 400 table-definition-cache 400 table-open-cache 400 +table-open-cache-instances 1 tc-heuristic-recover COMMIT thread-cache-size 0 thread-handling one-thread-per-connection === modified file 'mysql-test/suite/sys_vars/r/table_open_cache_instances_basic.result' --- a/mysql-test/suite/sys_vars/r/table_open_cache_instances_basic.result 2012-04-25 07:15:04 +0000 +++ b/mysql-test/suite/sys_vars/r/table_open_cache_instances_basic.result 2012-05-03 10:22:18 +0000 @@ -1,50 +1,51 @@ -'#---------------------BS_STVARS_004_01----------------------#' -SELECT COUNT(@@GLOBAL.table_open_cache_instances); -COUNT(@@GLOBAL.table_open_cache_instances) -1 -1 Expected -'#---------------------BS_STVARS_004_02----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT @@GLOBAL.table_open_cache_instances; +@@GLOBAL.table_open_cache_instances +1 +#################################################################### +# Check that value cannot be set (this variable is settable only # +# at start-up). # +#################################################################### SET @@GLOBAL.table_open_cache_instances=1; ERROR HY000: Variable 'table_open_cache_instances' is a read only variable -Expected error 'Read only variable' -SELECT COUNT(@@GLOBAL.table_open_cache_instances); -COUNT(@@GLOBAL.table_open_cache_instances) +SELECT @@GLOBAL.table_open_cache_instances; +@@GLOBAL.table_open_cache_instances 1 -1 Expected -'#---------------------BS_STVARS_004_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# SELECT @@GLOBAL.table_open_cache_instances = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='table_open_cache_instances'; @@GLOBAL.table_open_cache_instances = VARIABLE_VALUE 1 -1 Expected -SELECT COUNT(@@GLOBAL.table_open_cache_instances); -COUNT(@@GLOBAL.table_open_cache_instances) +SELECT @@GLOBAL.table_open_cache_instances; +@@GLOBAL.table_open_cache_instances 1 -1 Expected -SELECT COUNT(VARIABLE_VALUE) +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='table_open_cache_instances'; -COUNT(VARIABLE_VALUE) +VARIABLE_VALUE 1 -1 Expected -'#---------------------BS_STVARS_004_04----------------------#' +###################################################################### +# Check if accessing variable with and without GLOBAL point to same # +# variable # +###################################################################### SELECT @@table_open_cache_instances = @@GLOBAL.table_open_cache_instances; @@table_open_cache_instances = @@GLOBAL.table_open_cache_instances 1 -1 Expected -'#---------------------BS_STVARS_004_05----------------------#' -SELECT COUNT(@@table_open_cache_instances); -COUNT(@@table_open_cache_instances) +###################################################################### +# Check if variable has only the GLOBAL scope # +###################################################################### +SELECT @@table_open_cache_instances; +@@table_open_cache_instances +1 +SELECT @@GLOBAL.table_open_cache_instances; +@@GLOBAL.table_open_cache_instances 1 -1 Expected -SELECT COUNT(@@local.table_open_cache_instances); +SELECT @@local.table_open_cache_instances; ERROR HY000: Variable 'table_open_cache_instances' is a GLOBAL variable -Expected error 'Variable is a GLOBAL variable' -SELECT COUNT(@@SESSION.table_open_cache_instances); +SELECT @@SESSION.table_open_cache_instances; ERROR HY000: Variable 'table_open_cache_instances' is a GLOBAL variable -Expected error 'Variable is a GLOBAL variable' -SELECT COUNT(@@GLOBAL.table_open_cache_instances); -COUNT(@@GLOBAL.table_open_cache_instances) -1 -1 Expected === modified file 'mysql-test/suite/sys_vars/t/table_open_cache_instances_basic.test' --- a/mysql-test/suite/sys_vars/t/table_open_cache_instances_basic.test 2012-04-25 07:15:04 +0000 +++ b/mysql-test/suite/sys_vars/t/table_open_cache_instances_basic.test 2012-05-03 10:22:18 +0000 @@ -1,95 +1,73 @@ - - ######### mysql-test\t\table_open_cache_instances_basic.test ################## # # # Variable Name: table_open_cache_instances # # Scope: Global # # Access Type: Static # -# Data Type: filename # +# Data Type: Integer # # # # # # Creation Date: 2012-04-25 # # Author : Mikael Ronstrom # # # # # -# -# Description:Test Cases of Static System Variable table_open_cache_instances# -# that checks the behavior of this variable in the following ways # -# * Value Check # -# * Scope Check # # # -# Reference: http://dev.mysql.com/doc/refman/6.0/en/ # -# server-system-variables.html # +# Description: # +# Test case for static system variable table_open_cache_instances, # +# Checks the behavior of this variable in the following ways: # +# * Value Check # +# * Scope Check # +# # # # ############################################################################### ---echo '#---------------------BS_STVARS_004_01----------------------#' -#################################################################### -# Displaying default value # -#################################################################### -SELECT COUNT(@@GLOBAL.table_open_cache_instances); ---echo 1 Expected +--echo #################################################################### +--echo # Displaying default value # +--echo #################################################################### +SELECT @@GLOBAL.table_open_cache_instances; ---echo '#---------------------BS_STVARS_004_02----------------------#' -#################################################################### -# Check if Value can set # -#################################################################### +--echo #################################################################### +--echo # Check that value cannot be set (this variable is settable only # +--echo # at start-up). # +--echo #################################################################### --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@GLOBAL.table_open_cache_instances=1; ---echo Expected error 'Read only variable' - -SELECT COUNT(@@GLOBAL.table_open_cache_instances); ---echo 1 Expected - +SELECT @@GLOBAL.table_open_cache_instances; ---echo '#---------------------BS_STVARS_004_03----------------------#' -################################################################# -# Check if the value in GLOBAL Table matches value in variable # -################################################################# - +--echo ################################################################# +--echo # Check if the value in GLOBAL Table matches value in variable # +--echo ################################################################# SELECT @@GLOBAL.table_open_cache_instances = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='table_open_cache_instances'; ---echo 1 Expected -SELECT COUNT(@@GLOBAL.table_open_cache_instances); ---echo 1 Expected +SELECT @@GLOBAL.table_open_cache_instances; -SELECT COUNT(VARIABLE_VALUE) +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='table_open_cache_instances'; ---echo 1 Expected - ---echo '#---------------------BS_STVARS_004_04----------------------#' -################################################################################ -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################ +--echo ###################################################################### +--echo # Check if accessing variable with and without GLOBAL point to same # +--echo # variable # +--echo ###################################################################### SELECT @@table_open_cache_instances = @@GLOBAL.table_open_cache_instances; ---echo 1 Expected - ---echo '#---------------------BS_STVARS_004_05----------------------#' -################################################################################ -# Check if server_uuid can be accessed with and without @@ sign # -################################################################################ +--echo ###################################################################### +--echo # Check if variable has only the GLOBAL scope # +--echo ###################################################################### -SELECT COUNT(@@table_open_cache_instances); ---echo 1 Expected +SELECT @@table_open_cache_instances; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT COUNT(@@local.table_open_cache_instances); ---echo Expected error 'Variable is a GLOBAL variable' +SELECT @@GLOBAL.table_open_cache_instances; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT COUNT(@@SESSION.table_open_cache_instances); ---echo Expected error 'Variable is a GLOBAL variable' +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.table_open_cache_instances; -SELECT COUNT(@@GLOBAL.table_open_cache_instances); ---echo 1 Expected +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@SESSION.table_open_cache_instances; No bundle (reason: useless for push emails).