| Server IP : 88.99.149.37 / Your IP : 216.73.216.141 Web Server : nginx/1.31.2 System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64 User : muralimurth ( 1015) PHP Version : 8.4.23 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/local/mysql/mysql-test/suite/sys_vars/t/ |
Upload File : |
######################################################################################
# #
# 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 #
# Modified: HHunger 2009-02-27 Replaced sleeps, beautifications #
# #
# 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 #
# #
######################################################################################
--echo ** Setup **
--echo
#
# Setup
#
--source include/not_embedded.inc
# disabled due to differences in the result
--disable_ps_protocol
#
# Save initial value
#
connect (con0,localhost,root,,);
connect (con1, localhost, root,,);
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;
SET GLOBAL query_cache_type= ON;
SET LOCAL query_cache_type= ON;
connection con1;
SET LOCAL query_cache_type= ON;
connection con0;
#
# 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
connection con0;
SET SESSION query_cache_wlock_invalidate = ON;
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;
connection con1;
SELECT * FROM t1;
connection con0;
LOCK TABLE t1 WRITE;
connection con1;
--echo ** Asynchronous Execution **
send SELECT * FROM t1;
connection con0;
--echo wait until table is locked
let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist
WHERE state= 'Waiting for table metadata lock';
--source include/wait_condition.inc
UNLOCK TABLES;
connection con1;
--echo ** Asynchronous Result **
reap;
#
# Testing for value OFF
#
--echo Testing for value OFF
connection con0;
SET SESSION query_cache_wlock_invalidate = OFF;
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 0 Expected
--echo '#----------------------------FN_DYNVARS_136_04---------------------#'
#
# Testing for blockage of access
#
SELECT * FROM t1;
SHOW STATUS LIKE 'Qcache_queries_in_cache';
--echo 1 Expected
connection con1;
SELECT * FROM t1;
connection con0;
LOCK TABLE t1 WRITE;
connection con1;
--echo ** Should not be blocked **
SELECT * FROM t1;
SELECT * FROM t1;
SELECT * FROM t1;
connection con0;
UNLOCK TABLES;
connection con1;
--echo '#----------------------------FN_DYNVARS_136_05------------------------#'
#
# Session data integrity check & GLOBAL Value check
#
SET GLOBAL query_cache_wlock_invalidate = OFF;
connect (con_int1,localhost,root,,);
connection con_int1;
SELECT @@SESSION.query_cache_wlock_invalidate;
--echo Expected Value : 0 / OFF;
SET SESSION query_cache_wlock_invalidate = ON;
connect (con_int2,localhost,root,,);
connection con_int2;
SELECT @@SESSION.query_cache_wlock_invalidate;
--echo Expected Value : 0 / OFF;
SET SESSION query_cache_wlock_invalidate = OFF;
connection con_int1;
SELECT @@SESSION.query_cache_wlock_invalidate;
--echo Expected Value : 1 / ON;
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;
connection default;
disconnect con_int1;
disconnect con_int2;
#
# Cleanup
#
--echo
--echo CLEANUP
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;
connection default;
disconnect con0;
disconnect con1;
DROP TABLE t1;
--enable_ps_protocol