From: Marc Alff Date: June 28 2010 11:48pm Subject: bzr push into mysql-next-mr-bugfixing branch (marc.alff:3272) List-Archive: http://lists.mysql.com/commits/112396 Message-Id: <201006282349.o5SLfjst026943@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5718803504967424003==" --===============5718803504967424003== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3272 Marc Alff 2010-06-28 [merge] local merge removed: mysql-test/suite/manual/ mysql-test/suite/manual/r/ mysql-test/suite/manual/r/rpl_replication_delay.result mysql-test/suite/manual/t/ mysql-test/suite/manual/t/rpl_replication_delay-slave.opt mysql-test/suite/manual/t/rpl_replication_delay.test sql/sql_repl.cc sql/sql_repl.h added: mysql-test/collections/mysql-next-mr-rpl-merge.push mysql-test/extra/rpl_tests/delayed_slave_wait_on_query.inc mysql-test/include/save_master_pos.inc mysql-test/include/show_delayed_slave_state.inc mysql-test/include/show_slave_hosts.inc mysql-test/include/sync_with_master.inc mysql-test/r/server_uuid.result mysql-test/std_data/old-format-relay-log-win.info mysql-test/std_data/old-format-relay-log.info mysql-test/suite/rpl/extension/ mysql-test/suite/rpl/extension/README mysql-test/suite/rpl/extension/README.bhs mysql-test/suite/rpl/extension/bhs/ mysql-test/suite/rpl/extension/bhs.pl mysql-test/suite/rpl/extension/bhs/default.rules mysql-test/suite/rpl/extension/bhs/disabled.def mysql-test/suite/rpl/extension/bhs/master-slave-bhs.inc mysql-test/suite/rpl/extension/bhs/master-slave.inc mysql-test/suite/rpl/extension/bhs/my.cnf mysql-test/suite/rpl/extension/bhs/rpl_1slave_base.cnf mysql-test/suite/rpl/extension/bhs/update_test_cases mysql-test/suite/rpl/r/rpl_delayed_slave.result mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result mysql-test/suite/rpl/r/rpl_row_event_max_size.result mysql-test/suite/rpl/r/rpl_savepoint.result mysql-test/suite/rpl/r/rpl_seconds_behind_master.result mysql-test/suite/rpl/r/rpl_server_uuid.result mysql-test/suite/rpl/t/rpl_delayed_slave.test mysql-test/suite/rpl/t/rpl_read_old_relay_log_info.test mysql-test/suite/rpl/t/rpl_row_event_max_size-master.opt mysql-test/suite/rpl/t/rpl_row_event_max_size-slave.opt mysql-test/suite/rpl/t/rpl_row_event_max_size.test mysql-test/suite/rpl/t/rpl_savepoint.test mysql-test/suite/rpl/t/rpl_seconds_behind_master.test mysql-test/suite/rpl/t/rpl_server_uuid.cnf mysql-test/suite/rpl/t/rpl_server_uuid.test mysql-test/suite/sys_vars/r/server_uuid_basic.result mysql-test/suite/sys_vars/t/server_uuid_basic.test mysql-test/t/server_uuid.test sql/binlog.cc sql/binlog.h sql/rpl_master.cc sql/rpl_master.h renamed: sql/slave.cc => sql/rpl_slave.cc sql/slave.h => sql/rpl_slave.h modified: BUILD-CMAKE CMakeLists.txt client/client_priv.h client/mysqlbinlog.cc client/mysqltest.cc cmake/os/Windows.cmake cmake/os/WindowsCache.cmake cmake/package_name.cmake libmysqld/CMakeLists.txt libmysqld/Makefile.am mysql-test/collections/default.experimental mysql-test/include/mtr_warnings.sql mysql-test/include/sync_slave_io_with_master.inc mysql-test/include/wait_for_slave_sql_error.inc mysql-test/mysql-test-run.pl mysql-test/r/merge.result mysql-test/suite/binlog/r/binlog_unsafe.result mysql-test/suite/engines/funcs/r/rpl_000015.result mysql-test/suite/engines/funcs/t/rpl_000015.test mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result mysql-test/suite/rpl/r/rpl_show_slave_hosts.result mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test mysql-test/suite/rpl/t/rpl_show_slave_hosts.test mysql-test/suite/rpl/t/rpl_show_slave_running.test mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test mysql-test/t/merge.test mysql-test/t/sp_trans_log.test mysys/default.c mysys/my_delete.c mysys/my_mmap.c packaging/WiX/CMakeLists.txt packaging/WiX/CPackWixConfig.cmake packaging/WiX/ca/CMakeLists.txt packaging/WiX/create_msi.cmake.in packaging/WiX/mysql_server.wxs.in sql/CMakeLists.txt sql/Makefile.am sql/field.cc sql/ha_ndbcluster_binlog.cc sql/ha_partition.cc sql/item_func.cc sql/item_strfunc.h sql/lex.h sql/log.cc sql/log.h sql/log_event.cc sql/log_event.h sql/log_event_old.cc sql/mysqld.cc sql/mysqld.h sql/repl_failsafe.cc sql/repl_failsafe.h sql/rpl_handler.cc sql/rpl_injector.cc sql/rpl_mi.cc sql/rpl_mi.h sql/rpl_record.cc sql/rpl_rli.cc sql/rpl_rli.h sql/set_var.h sql/share/errmsg-utf8.txt sql/sql_binlog.cc sql/sql_class.cc sql/sql_class.h sql/sql_db.cc sql/sql_insert.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_load.cc sql/sql_parse.cc sql/sql_parse.h sql/sql_select.cc sql/sql_servers.h sql/sql_table.cc sql/sql_yacc.yy sql/structs.h sql/sys_vars.cc sql/transaction.cc storage/heap/CMakeLists.txt storage/myisam/mi_check.c storage/myisammrg/ha_myisammrg.cc sql/rpl_slave.cc sql/rpl_slave.h === added file 'mysql-test/suite/perfschema/r/thread_cache.result' --- a/mysql-test/suite/perfschema/r/thread_cache.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/perfschema/r/thread_cache.result 2010-06-25 07:56:10 +0000 @@ -0,0 +1,34 @@ +SET @saved_thread_cache_size = @@global.thread_cache_size; +set global thread_cache_size = 0; +show variables like "thread_cache_size"; +Variable_name Value +thread_cache_size 0 +select @id_increment; +@id_increment +1 +select @thread_id_increment; +@thread_id_increment +1 +select @id_increment; +@id_increment +1 +select @thread_id_increment; +@thread_id_increment +1 +set global thread_cache_size = 100; +show variables like "thread_cache_size"; +Variable_name Value +thread_cache_size 100 +select @id_increment; +@id_increment +1 +select @thread_id_increment; +@thread_id_increment +1 +select @id_increment; +@id_increment +1 +select @thread_id_increment; +@thread_id_increment +1 +set global thread_cache_size = @saved_thread_cache_size; === added file 'mysql-test/suite/perfschema/t/thread_cache.test' --- a/mysql-test/suite/perfschema/t/thread_cache.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/perfschema/t/thread_cache.test 2010-06-25 07:56:10 +0000 @@ -0,0 +1,134 @@ +# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + +# Tests for PERFORMANCE_SCHEMA + +--source include/not_embedded.inc +--source include/have_perfschema.inc + +# Setup + +SET @saved_thread_cache_size = @@global.thread_cache_size; + +set global thread_cache_size = 0; + +show variables like "thread_cache_size"; + +connect (con1, localhost, root, , ); + +let $con1_ID=`select connection_id()`; + +let $con1_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST + where ID = connection_id()`; + +connect (con2, localhost, root, , ); + +let $con2_ID=`select connection_id()`; + +let $con2_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST + where ID = connection_id()`; + +connection default; + +--disable_query_log +eval select ($con2_ID - $con1_ID) into @id_increment; +eval select ($con2_THREAD_ID - $con1_THREAD_ID) into @thread_id_increment; +--enable_query_log + +# Expect 1, connection_id() is incremented for each new connection +select @id_increment; +# Expect 1, THREAD_ID is incremented for each new connection +select @thread_id_increment; + +disconnect con2; + +connect (con3, localhost, root, , ); + +let $con3_ID=`select connection_id()`; + +let $con3_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST + where ID = connection_id()`; + +disconnect con3; +disconnect con1; + +connection default; + +--disable_query_log +eval select ($con3_ID - $con2_ID) into @id_increment; +eval select ($con3_THREAD_ID - $con2_THREAD_ID) into @thread_id_increment; +--enable_query_log + +select @id_increment; +select @thread_id_increment; + +set global thread_cache_size = 100; + +show variables like "thread_cache_size"; + +connect (con1, localhost, root, , ); + +let $con1_ID=`select connection_id()`; + +let $con1_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST + where ID = connection_id()`; + +connect (con2, localhost, root, , ); + +let $con2_ID=`select connection_id()`; + +let $con2_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST + where ID = connection_id()`; + +connection default; + +--disable_query_log +eval select ($con2_ID - $con1_ID) into @id_increment; +eval select ($con2_THREAD_ID - $con1_THREAD_ID) into @thread_id_increment; +--enable_query_log + +select @id_increment; +select @thread_id_increment; + +disconnect con2; + +connect (con3, localhost, root, , ); + +let $con3_ID=`select connection_id()`; + +let $con3_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST + where ID = connection_id()`; + +disconnect con3; +disconnect con1; + +connection default; + +--disable_query_log +eval select ($con3_ID - $con2_ID) into @id_increment; +eval select ($con3_THREAD_ID - $con2_THREAD_ID) into @thread_id_increment; +--enable_query_log + +# When caching threads, the pthread that executed con2 was parked in the +# cache on disconnect, and then picked up con3. + +# Still expect a new connection_id() +select @id_increment; + +# And expect a new instrumentation: the THREAD_ID of old connections should not be reused. +select @thread_id_increment; + +set global thread_cache_size = @saved_thread_cache_size; + === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2010-06-23 09:56:24 +0000 +++ b/sql/mysqld.cc 2010-06-28 23:45:29 +0000 @@ -2145,6 +2145,16 @@ static bool cache_thread() /* Don't kill the thread, just put it in cache for reuse */ DBUG_PRINT("info", ("Adding thread to cache")); cached_thread_count++; + +#ifdef HAVE_PSI_INTERFACE + /* + Delete the instrumentation for the job that just completed, + before parking this pthread in the cache (blocked on COND_thread_cache). + */ + if (likely(PSI_server != NULL)) + PSI_server->delete_current_thread(); +#endif + while (!abort_loop && ! wake_thread && ! kill_cached_threads) mysql_cond_wait(&COND_thread_cache, &LOCK_thread_count); cached_thread_count--; @@ -2157,6 +2167,21 @@ static bool cache_thread() thd= thread_cache.get(); thd->thread_stack= (char*) &thd; // For store_globals (void) thd->store_globals(); + +#ifdef HAVE_PSI_INTERFACE + /* + Create new instrumentation for the new THD job, + and attach it to this running pthread. + */ + if (likely(PSI_server != NULL)) + { + PSI_thread *psi= PSI_server->new_thread(key_thread_one_connection, + thd, thd->thread_id); + if (likely(psi != NULL)) + PSI_server->set_thread(psi); + } +#endif + /* THD::mysys_var::abort is associated with physical thread rather than with THD object. So we need to reset this flag before using --===============5718803504967424003== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marc.alff@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-\ # 54782/ # testament_sha1: a19f4151aa1a8845cd394e23448f3d799468b3dc # timestamp: 2010-06-28 17:49:01 -0600 # base_revision_id: alik@stripped # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWeNF1e0ABsBfgFUwfHf//3/n 36D////6YA6D7yKG20A6AoB1PWF3uUdVtjWmmqoKpSgKUU4ShTTSp+E0mkbYE1Mp4U9NMUAZNMEZ DQGh6QSSqe0p6TyNME1B6mgA0AAyHqZAAAAGlI0P1I0ADQaAAAMmgAAAB6gCook0VT/KU/0k3qp+ 1GQm1TMmSbSbKNDQHqeoD1PU2UbKDjRkyMIxAMJoMAmg0DJk0ZMhhAYSRAQCYgJo0CaTNBT0xE8k IeiMj9U0b1JkeAdAXdIvV08GiCnE8HLfj7vFZohFRlHiHd29YsxjieGbRmzuBIIN8gQn252bLlzQ s926GBzdnOJGkGGaJqbWTOKsD1/w/weQ7GBwY27wKRHAVUw76sKX4RpFOTLvYJ1cETGDTkQGGOdC /n7rCwkzta90BKO7j9+G9scNL+PQ0zcW1h0v0+QJpBWuJPe9up6XNVVVVJiyb/BOafLU4fsHoO/3 N2MVWRp5/kZCwkTo7DECMjlwgcbeNoSGicm+dL3aRzdh6Qt3eFs5zft4FANothmLzBj0EBwgDB+u 1dc950zlRjm0FT+OBmwR/kthAVyayWSfnbDLd/VdK2DdG/4XTSd72csvf82fnuHk/7rv+nhtu3HR rlpjH6Oh+G/dzrWv1U0OGAz48BSFS+28MWewm7Tjk8wkESBBz7/AlwmKomp7mcGJDYsx7ANN3Bmh 6J/fjfpGULg3C1me4KWG4dtndtva7pGVOy64KRtbMXGIQ6neDvMWWwUYkAOuEFIC9/vR6/hu2L8Y runmZWb4M5fKBK6cpaNgEoEihYcNLYFrqMbT3CR4b00b1emrz7G5Dinm0i7IvQ3TjXb4N3mHSbNc kcT0pHcpgfzUqhhhhhFqS8h0Dsnf8F8ZX+oB/+VjYLZZJC+h8Od8OnGZOGV4lYlD1a1VS0sIBJY9 rbnSIFQJ4EtAOeU/ehgZJHAmJdfMNo+xdh3K1bGPWB4cDEPYFx5kryhYXn1ENw8Y9bdTH8H2lfSL kJExZaKwSZMAylGAon8Dw8OgSro6d3Kl9rHf7jXd+srkKE/FigScAl1xUPzgDl4wgP3lUgKhAGGY c3ELLXvKfMGIAxAnerhqXHepyvACWAgtkgtwKzRNlNGFWboQqfGhIiYSMxpdLBbPSA4iMXN42fzL 77RLdAQExgxz/OAa9Ycb/SRsmXdF5lTqtPQGyxiWRbtxk107SJlPbbYR4AN1K7NSGOIkLDw+xDE8 SzFA4t2RKvIejivOKnTBPCjMKAYDIxriakzi4bjUVoX4vra9pcZ41YthAQEzq42zmlMbeW1lcqFw mEjpTeTyVphaXiVigwuR0LRVqfQtOWBsoLBBoJdptgZbeSNpph5ZjhBWY7cCCkPfvLimQUojMei1 cU5m7XEoMOGIxpz58CZYdcKLDQRJGxjcOpbQhGhAwVsdhCMM9ll9SAEV7RKpCZ0agoK6pCDBgnXO OAnNKjSM2KETFXkNnDhQomKK0W8luKf4Ny6yqswvL6yca1JNSIH3EzpaKoSBKkJykGHiyW9MgTpO WghT61nmHeYCUrNaUfauGVYSqDmhJmDjxthNq6DRVhrlvkWjXiVMC2hKTiSsukVNE9gypwcwa1o6 mKWki3Q1u4Bmdss7Gv0bLLCijoGBx7M6VfW84CtWORoYkjLeF+aQVtqXWTgMO2A8g3GIGZIykV7V cZBYIiJdv5CV4lhulsCKsbIwlSImGH2KPHOOraXtpcR2FSBUiWXHHwXdG0kJwa8oYG/FbibbGDq3 LcKVgW3sWXmpMYedDUuuIMUPgHIPonPGcsR0OcmgoXGQ5qTGkSmJ1yIioUIAVquxNYbdVd37Ivhf Fqr8TYw+xVVVa5LSI7MCobxxSkfHL9I+0XWI/3Xa4rDGYzDFV+W3Kpbb9xOP65b5eKze/y8/QZJw 8SRgxNJoZJ6vcxHr9r9oaff/TX1fD8NjQc52pS2WerfhPAmEAkKwHKEu7YiJVIgQMAB1s9g1AAHx woggqGCN8GOLeq2RituKh8RlKkfdXNOfdxvDL+ri1dVDi17cDdwxeo3+FNPQWzA13TUv4i0Pscpf 35ujZhZpcAMo3i1mbXwl1kwJColqK5KAoFepRlYDjCL4EYplqyshdef0MCKae8h+J+B+wYPMgODj kCAsDNRIknZmGHPNAvA9ji8hJqxMrWQlh7BWLD+vswnCNTCFMNW1qALHGC9gWElRv3GeGSaUjBYi Ewqc7qxujr7WqOYrCsGD3HR5Cq0+QAfb6IiELhEwKgCRKbOHz0piWIL2V/+QOAHyEiArAzs+pqJW JhWlOsCJ+NAzh1ptP0KCR6FwEsDQHIRTW81C1MXG8xfC5VWKsIjCHNUYizqq4LDIxcmM7BiQB48j O/cZm39sbjt+yxEmD68szy/n+phIoP5HqEvIkrzbe4REjkdssyGxRP5mD7DQyX0ZgEy5JNd6xWFp 3GJqBhyNQ7NRiBVTJOkl3IGHMWdJGMjBJOplzV8RcKwTDEwO8m+TKYOWAxGsEBdgkkF/2pAKDRb/ p6QcaDwgUFFyLO2NGIxotJVxyt62mbdUurh2nj1+vp8CvnaeHimeFyXS28DsIniVEWgCYAGyC8kd NCUjIlL7xigJ90kbn/NHHGJw5Q8YkU6x4DvCLWGs4jEW3pdsx59R5WSpeK+LdjTJnLsVtq3ZX1/L sVibnpSLztCBZaJDi5uDVOZph03euhKJWr0hj220XhiEmDcErRs2Bn63tCxAxcwG0WYg6i9LvZDM gFBpMeB+D7SIF4uI4Aw4nBMkE1BPekZL1bLAr7nDn11ME1k4dcJdnyU00F0zDElhrqOGHv2bSfoV wd9+JHBy7v7g8iIXgg/KduxcUebkgwnRfKe5/ecj6BtUSxZNqYFXeDp8+04K8X+tALNJ2RIC9YHo CR4mFSCY/dBSBUFwbKAePUE+8D1OI0AcTF4jlgYnsZeZkNAGcNbsprNEBvW+ltmoSQ1h69vHGSmB EQYmDTbfNSRSgus9jCRIVe8/yHQOwKse87A5HI6SQaHaA63DAP2KMTKAKYHixwDMwTILJG1VLif6 dt9Xanid6ciuovjJ9s0m/24NlWxLYqFtm6R3kfsw6UHPUMuSs6CqRYGEkuA/WIgY77E7Jnqk288M T2mPC7N3oiOpSbirS0oMDCcrEtP7fX9+fyJJYFUjohcLfBgqSZOvd2GXbBWYc9k5dOnp/M2xP3fS 7G9/xODfUlKoMJMMUCwZMjVIy+IiUCQevdtPFiP4ndxC0MBIvgGolJbRWFicXoUz1hmmDGJgQW+/ igngL2C5ZBzVBmYS2/ohyIGoEhzaJhE/YxQWzIGEhgqMHtEQoCBw5gnPI/4MASpNRgHENq4yjWhW wwPUB23Cs4AW2US1MiJeqk7lVOVkTFZh3R9T0FnGKwuPmWaRKgmAC5DGUjAOZ2F57yZYUFEpaesb 5LbM9nyNTc3XjS3GGItLvzMMx0JmYQlsggHYJbzEJFBDAgbkwOgqqFeiSCTkFRL63FQJMOUpFJBW hv6jUkXBRWocCrCRcDCWjOE7Dn9CMJPK+3res2po8QaYbEfmeVwTAkpMl3oAsSgwMwpMEBCGFNMA cfoVkkgiVS9TEP6Z3MjgMugkYIMoJLzZTen8O/1pV6ff59XudtzdekeGdDRO541KKyK/3BADqgeg hJa2OQVT3H37AiHvD91xvPLhmkchLIzA/QPSWCPSw55stRg9X2kklBYL2nZ5WgLkMTFRTh1iSXl2 8S08dsRAUFewE/mm6HxHFiIkJqm/lLxmZoXMr1lnNbErBXQLN1U6tqikRSiJwI+oWjuoB1VgDRfA l8/N+0JzBz1hgZC2SSoWhkTA2gH3Bb52IiL9ndJDNELakw3K3qkImJGxaMmYrmrjvPaMOc0HdwWh tWT9QqcOjPKGGsbDuppyNBoTrHZU4VDThgstzgCjOomICmuqdBTlAUM5ECw9Y0AZJFhNwiA1drUI Ia26soUHiTGlChseHaoAXHaG8zP3vhiJM9eDkxLjHydVW+BoaKyYcGU7OIBGHyMjfv6Hw5g648Tq EVBmTADQAtO0LBEBe8StgQZG5uy6IFkjn4KORAMT+S/VdXiaZ+S7g+AHx8jdsyTG5ahtQ4onCDno gRgYttifK6LSWvO0TUam/yL1drBnka9SbI25RzPWnPZolkH7U+iqaBZxFAS1PJ/MPgtfcHxftwCA QPAS7xfYkJRD3h0x3Gungu0iCszDTSnFB1B1B4BEJc+fvKcSJgaMqC9cDEf4u5IpwoSHGi6vaA== --===============5718803504967424003==--