# 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.THREADS where PROCESSLIST_ID = connection_id()`; connect (con2, localhost, root, , ); let $con2_ID=`select connection_id()`; let $con2_THREAD_ID=`select thread_id from performance_schema.THREADS where PROCESSLIST_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.THREADS where PROCESSLIST_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.THREADS where PROCESSLIST_ID = connection_id()`; connect (con2, localhost, root, , ); let $con2_ID=`select connection_id()`; let $con2_THREAD_ID=`select thread_id from performance_schema.THREADS where PROCESSLIST_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.THREADS where PROCESSLIST_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;