2008-04-22 15:04:10 +02:00
|
|
|
############# mysql-test\t\query_cache_wlock_invalidate_func.test ####################
|
|
|
|
# #
|
|
|
|
# Variable Name: query_cache_wlock_invalidate #
|
|
|
|
# Scope: GLOBAL & SESSION #
|
|
|
|
# Access Type: Dynamic #
|
|
|
|
# Data Type: boolean #
|
|
|
|
# Default Value: FALSE #
|
|
|
|
# Values: TRUE / 1, FALSE / 0 #
|
|
|
|
# #
|
|
|
|
# #
|
|
|
|
# Creation Date: 2008-02-21 #
|
|
|
|
# Author: Sharique Abdullah #
|
|
|
|
# #
|
|
|
|
# Description: Test Cases of Dynamic System Variable "query_cache_wlock_invalidate" #
|
|
|
|
# that checks behavior of this variable in the following ways #
|
|
|
|
# * Default Value #
|
|
|
|
# * Valid & Invalid values #
|
|
|
|
# * Scope & Access method #
|
|
|
|
# * Cache behaviors #
|
|
|
|
# #
|
|
|
|
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
|
|
|
|
# server-system-variables.html#option_mysqld_query_cache_wlock_invalidate #
|
|
|
|
# #
|
|
|
|
######################################################################################
|
|
|
|
|
|
|
|
--echo ** Setup **
|
|
|
|
--echo
|
|
|
|
#
|
|
|
|
# Setup
|
|
|
|
#
|
|
|
|
|
|
|
|
# disabled due to differences in the result
|
|
|
|
--disable_ps_protocol
|
|
|
|
#
|
|
|
|
# Save initial value
|
|
|
|
#
|
|
|
|
--echo ** Connecting con0 using root **
|
|
|
|
connect (con0,localhost,root,,);
|
|
|
|
--echo ** Connecting con1 using root **
|
|
|
|
connect (con1, localhost, root,,);
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
SET @start_global_value = @@GLOBAL.query_cache_wlock_invalidate;
|
|
|
|
SET @start_session_value = @@SESSION.query_cache_wlock_invalidate;
|
|
|
|
|
|
|
|
SET @old_cache_size = @@GLOBAL.query_cache_size;
|
|
|
|
SET @old_cache_type = @@GLOBAL.query_cache_type;
|
|
|
|
|
|
|
|
#
|
|
|
|
# Creating test table
|
|
|
|
#
|
|
|
|
|
|
|
|
CREATE TABLE t1(id int, value varchar(10));
|
|
|
|
|
|
|
|
INSERT INTO t1 VALUES(1, 'val1');
|
|
|
|
INSERT INTO t1 VALUES(2, 'val2');
|
|
|
|
INSERT INTO t1 VALUES(3, 'val3');
|
|
|
|
|
|
|
|
#
|
|
|
|
# Clearing the query cache and setting up cache size
|
|
|
|
#
|
|
|
|
|
|
|
|
SET GLOBAL query_cache_size = 131072;
|
|
|
|
|
|
|
|
--echo FLUSHING CACHE
|
|
|
|
SET GLOBAL query_cache_size = 0;
|
|
|
|
SET GLOBAL query_cache_size = 131072;
|
|
|
|
|
|
|
|
SET GLOBAL query_cache_type = ON;
|
|
|
|
|
|
|
|
#
|
|
|
|
# Testing for value ON
|
|
|
|
#
|
|
|
|
--echo Testing for value ON
|
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
SET SESSION query_cache_wlock_invalidate = ON;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
|
|
|
SET SESSION query_cache_wlock_invalidate = ON;
|
|
|
|
|
|
|
|
--echo '#----------------------------FN_DYNVARS_136_01--------------#'
|
|
|
|
#
|
|
|
|
# Testing for cache invalidation
|
|
|
|
#
|
|
|
|
|
|
|
|
--echo Testing for cache invalidation
|
|
|
|
|
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
SHOW STATUS LIKE 'Qcache_queries_in_cache';
|
|
|
|
--echo 1 Expected
|
|
|
|
|
|
|
|
LOCK TABLE t1 WRITE;
|
|
|
|
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
|
|
|
SHOW STATUS LIKE 'Qcache_queries_in_cache';
|
|
|
|
--echo 0 Expected
|
|
|
|
|
|
|
|
--echo '#----------------------------FN_DYNVARS_136_02-----------------------#'
|
|
|
|
#
|
|
|
|
# Testing for blockage of access
|
|
|
|
#
|
|
|
|
|
|
|
|
disable_result_log;
|
|
|
|
|
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
SHOW STATUS LIKE 'Qcache_queries_in_cache';
|
|
|
|
|
|
|
|
enable_result_log;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
LOCK TABLE t1 WRITE;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
|
|
|
--echo ** Asynchronous Execution **
|
2008-05-06 16:17:23 +02:00
|
|
|
send SELECT * FROM t1;
|
2008-04-22 15:04:10 +02:00
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
--echo Sleeping 2 Seconds before unlock
|
|
|
|
--sleep 2
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
--echo ** Asynchronous Result **
|
|
|
|
reap;
|
|
|
|
|
|
|
|
#
|
|
|
|
# Testing for value OFF
|
|
|
|
#
|
|
|
|
--echo Testing for value OFF
|
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
SET SESSION query_cache_wlock_invalidate = OFF;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
|
|
|
SET SESSION query_cache_wlock_invalidate = OFF;
|
|
|
|
|
|
|
|
--echo '#----------------------------FN_DYNVARS_136_03------------------#'
|
|
|
|
#
|
|
|
|
# Testing for cache invalidation
|
|
|
|
#
|
|
|
|
|
|
|
|
--echo Testing for cache invalidation
|
|
|
|
|
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
SHOW STATUS LIKE 'Qcache_queries_in_cache';
|
|
|
|
--echo 1 Expected
|
|
|
|
|
|
|
|
LOCK TABLE t1 WRITE;
|
|
|
|
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
|
|
|
SHOW STATUS LIKE 'Qcache_queries_in_cache';
|
|
|
|
--echo 1 Expected
|
|
|
|
|
|
|
|
--echo '#----------------------------FN_DYNVARS_136_04---------------------#'
|
|
|
|
#
|
|
|
|
# Testing for blockage of access
|
|
|
|
#
|
|
|
|
|
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
SHOW STATUS LIKE 'Qcache_queries_in_cache';
|
2008-05-06 16:17:23 +02:00
|
|
|
--echo 1 Expected
|
2008-04-22 15:04:10 +02:00
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
LOCK TABLE t1 WRITE;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
2008-05-06 16:17:23 +02:00
|
|
|
--echo ** Should not be blocked **
|
2008-04-22 15:04:10 +02:00
|
|
|
SELECT * FROM t1;
|
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
--echo Sleeping 2 Seconds before unlock
|
|
|
|
--sleep 2
|
|
|
|
UNLOCK TABLES;
|
|
|
|
|
|
|
|
--echo ** Connection con1 **
|
|
|
|
connection con1;
|
|
|
|
|
|
|
|
--echo '#----------------------------FN_DYNVARS_136_05------------------------#'
|
|
|
|
#
|
|
|
|
# Session data integrity check & GLOBAL Value check
|
|
|
|
#
|
|
|
|
|
|
|
|
SET GLOBAL query_cache_wlock_invalidate = OFF;
|
|
|
|
|
|
|
|
--echo ** Connecting con_int1 using root **
|
|
|
|
connect (con_int1,localhost,root,,);
|
|
|
|
--echo ** Connection con_int1 **
|
|
|
|
connection con_int1;
|
|
|
|
|
|
|
|
SELECT @@SESSION.query_cache_wlock_invalidate;
|
|
|
|
--echo Expected Value : 0 / OFF;
|
|
|
|
SET SESSION query_cache_wlock_invalidate = ON;
|
|
|
|
|
|
|
|
--echo ** Connecting con_int2 using root **
|
|
|
|
connect (con_int2,localhost,root,,);
|
|
|
|
--echo ** Connection con_int2 **
|
|
|
|
connection con_int2;
|
|
|
|
|
|
|
|
SELECT @@SESSION.query_cache_wlock_invalidate;
|
|
|
|
--echo Expected Value : 0 / OFF;
|
|
|
|
|
|
|
|
SET SESSION query_cache_wlock_invalidate = OFF;
|
|
|
|
|
|
|
|
--echo ** Connection con_int1 **
|
|
|
|
connection con_int1;
|
|
|
|
SELECT @@SESSION.query_cache_wlock_invalidate;
|
|
|
|
--echo Expected Value : 1 / ON;
|
|
|
|
|
|
|
|
--echo ** Connection con_int2 **
|
|
|
|
connection con_int2;
|
|
|
|
SELECT @@SESSION.query_cache_wlock_invalidate;
|
|
|
|
--echo Expected Value : 0 / OFF;
|
|
|
|
|
|
|
|
SELECT @@GLOBAL.query_cache_wlock_invalidate;
|
|
|
|
--echo Expected Value : 0 / OFF;
|
|
|
|
|
|
|
|
--echo ** Connection default **
|
|
|
|
connection default;
|
|
|
|
--echo Disconnecting Connections con_int1, con_int2
|
|
|
|
disconnect con_int1;
|
|
|
|
disconnect con_int2;
|
|
|
|
|
|
|
|
#
|
|
|
|
# Cleanup
|
|
|
|
#
|
|
|
|
--echo
|
|
|
|
--echo CLEANUP
|
|
|
|
|
|
|
|
--echo ** Connection con0 **
|
|
|
|
connection con0;
|
|
|
|
|
|
|
|
SET @@GLOBAL.query_cache_wlock_invalidate = @start_global_value;
|
|
|
|
SET @@SESSION.query_cache_wlock_invalidate = @start_session_value ;
|
|
|
|
SET @@GLOBAL.query_cache_size = @old_cache_size;
|
|
|
|
SET @@GLOBAL.query_cache_type = @old_cache_type;
|
|
|
|
|
|
|
|
--echo ** Connection default **
|
|
|
|
connection default;
|
|
|
|
--echo Disconnecting Connections con0, con1
|
|
|
|
disconnect con0;
|
|
|
|
disconnect con1;
|
|
|
|
|
|
|
|
DROP TABLE t1;
|
|
|
|
|
|
|
|
--enable_ps_protocol
|
|
|
|
|