1# Check if the plugin is present 2# initialize the version token plugin 3INSTALL PLUGIN version_tokens SONAME 'version_token.so'; 4CREATE FUNCTION version_tokens_set RETURNS STRING SONAME 'version_token.so'; 5CREATE FUNCTION version_tokens_show RETURNS STRING SONAME 'version_token.so'; 6CREATE FUNCTION version_tokens_edit RETURNS STRING SONAME 'version_token.so'; 7CREATE FUNCTION version_tokens_delete RETURNS STRING SONAME 'version_token.so'; 8CREATE FUNCTION version_tokens_lock_shared RETURNS INT SONAME 'version_token.so'; 9CREATE FUNCTION version_tokens_lock_exclusive RETURNS INT SONAME 'version_token.so'; 10CREATE FUNCTION version_tokens_unlock RETURNS INT SONAME 'version_token.so'; 11# Initialize performance_schema 12UPDATE performance_schema.setup_instruments SET enabled = 'NO', timed = 'YES'; 13UPDATE performance_schema.setup_instruments SET enabled = 'YES' 14WHERE name IN ('wait/io/table/sql/handler', 15'wait/lock/table/sql/handler', 16'wait/lock/metadata/sql/mdl'); 17INSERT INTO performance_schema.setup_objects (object_type, object_schema, object_name, enabled, timed) 18VALUES ('TABLE', 'mtr', '%', 'NO', 'NO'); 19# 20# Bug 21280801: VERSION TOKEN LOCKING DOES NOT WORK 21# 22DO version_tokens_set('vt1=11;vt2=22;vt3=33;vt4=44;vt5=55'); 23SELECT version_tokens_show(); 24version_tokens_show() 25vt1=11;vt2=22;vt5=55;vt4=44;vt3=33; 26DO version_tokens_lock_exclusive('vt3', 'vt5', 'vt1', 0); 27# Must return 3 rows 28SELECT OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS 29FROM performance_schema.metadata_locks 30WHERE OBJECT_NAME in ('vt1','vt3','vt5') AND 31LOCK_TYPE='EXCLUSIVE' 32 ORDER BY OBJECT_NAME; 33OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS 34vt1 EXCLUSIVE EXPLICIT GRANTED 35vt3 EXCLUSIVE EXPLICIT GRANTED 36vt5 EXCLUSIVE EXPLICIT GRANTED 37DO version_tokens_lock_exclusive('vt3', 'vt5', 'vt1', 4); 38ERROR HY000: Service lock wait timeout exceeded. 39DO version_tokens_unlock(); 40# Must return 0 rows 41SELECT OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS 42FROM performance_schema.metadata_locks 43WHERE OBJECT_NAME in ('vt1','vt3','vt5') AND 44LOCK_TYPE='EXCLUSIVE' 45 ORDER BY OBJECT_NAME; 46OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS 47# End of 5.7 tests 48# Cleanup 49# wait for all sessions to disconnect 50# Cleanup performance schema 51UPDATE performance_schema.setup_instruments SET enabled = 'YES', timed = 'YES'; 52DELETE FROM performance_schema.setup_objects WHERE object_schema='mtr'; 53# clean up version token plugin 54UNINSTALL PLUGIN version_tokens; 55Warnings: 56Warning 1620 Plugin is busy and will be uninstalled on shutdown 57DROP FUNCTION version_tokens_set; 58DROP FUNCTION version_tokens_show; 59DROP FUNCTION version_tokens_edit; 60DROP FUNCTION version_tokens_delete; 61DROP FUNCTION version_tokens_lock_shared; 62DROP FUNCTION version_tokens_lock_exclusive; 63DROP FUNCTION version_tokens_unlock; 64# Cleanup done 65