EVOLUTION-MANAGER
Edit File: select_for_update.test
# # SELECT .. FOR UPDATE # # If the engine has its own lock timeouts, # it makes sense to set them to minimum to decrease # the duration of the test. --source ../have_engine.inc --source support_transactions.inc --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings --source include/count_sessions.inc --source ../create_table.inc INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'a'); --connect (con1,localhost,root,,) BEGIN; --sorted_result SELECT a,b FROM t1 WHERE b='a' FOR UPDATE; if ($mysql_errname) { --let $functionality = SELECT .. FOR UPDATE --source ../unexpected_result.inc } --connection default SET lock_wait_timeout = 1; # Should still be able to select --sorted_result SELECT a,b FROM t1 WHERE b='a'; if ($mysql_errname) { --let $functionality = SELECT .. FOR UPDATE or locking --source ../unexpected_result.inc } # ... but not with LOCK IN SHARE MODE --sorted_result --let $error_codes = ER_LOCK_WAIT_TIMEOUT SELECT a,b FROM t1 WHERE b='a' LOCK IN SHARE MODE; --source ../check_errors.inc if ($mysql_errname != ER_LOCK_WAIT_TIMEOUT) { --let $functionality = SELECT .. FOR UPDATE or LOCK IN SHARE MODE --source ../unexpected_result.inc } --let $error_codes = ER_LOCK_WAIT_TIMEOUT UPDATE t1 SET b='c' WHERE b='a'; --source ../check_errors.inc if ($mysql_errname != ER_LOCK_WAIT_TIMEOUT) { --let $functionality = UPDATE or SELECT .. FOR UPDATE --source ../unexpected_result.inc } --connection con1 COMMIT; --sorted_result SELECT a,b FROM t1; --disconnect con1 --connection default # Now it can be updated all right UPDATE t1 SET b='c' WHERE b='a'; if ($mysql_errname) { --let $functionality = UPDATE --source ../unexpected_result.inc } --sorted_result SELECT a,b FROM t1; DROP TABLE t1; --source include/wait_until_count_sessions.inc --source ../cleanup_engine.inc