From 6a779a6d28fa69be4c89b72205a11398859f07ca Mon Sep 17 00:00:00 2001 From: Monty Date: Tue, 23 May 2017 17:18:31 +0300 Subject: Make SEQUENCE working with replication - Old sequence code forced row based replication for any statements that refered to a sequence table. What is new is that row based replication is now sequence aware: - NEXT VALUE is now generating a short row based event with only next_value and round being replicated. - Short row based events are now on the slave updated as trough SET_VALUE(sequence_name) - Full row based events are on the slave updated with a full insert, which is practically same as ALTER SEQUENCE. - INSERT on a SEQUENCE table does now a EXCLUSIVE LOCK to ensure that it is logged in binary log before any following NEXT VALUE calls. - Enable all sequence tests and fixed found bugs - ALTER SEQUENCE doesn't anymore allow changes that makes the next_value outside of allowed range - SEQUENCE changes are done with TL_WRITE_ALLOW_WRITE. Because of this one can generate a statement for MyISAM with both TL_WRITE_CONCURRENT_INSERT and TL_WRITE_ALLOW_WRITE. To fix a warning I had to add an extra test in thr_lock.c for this. - Removed UPDATE of SEQUENCE (no need to support this as we have ALTER SEQUENCE, which takes the EXCLUSIVE lock properly. - Removed DBUG_ASSERT() in MDL_context::upgrade_shared_lock. This was removed upstream in MySQL 5.6 in 72f823de453. - Simplified test in decided_logging_format() by using sql_command_flags() - Fix that we log DROP SEQUENCE correctly. - Fixed that Aria works with SEQUENCE --- sql/mdl.cc | 6 ------ 1 file changed, 6 deletions(-) (limited to 'sql/mdl.cc') diff --git a/sql/mdl.cc b/sql/mdl.cc index f1a505f3d84..f751a8e298e 100644 --- a/sql/mdl.cc +++ b/sql/mdl.cc @@ -2320,12 +2320,6 @@ MDL_context::upgrade_shared_lock(MDL_ticket *mdl_ticket, if (mdl_ticket->has_stronger_or_equal_type(new_type)) DBUG_RETURN(FALSE); - /* Only allow upgrades from SHARED_UPGRADABLE/NO_WRITE/NO_READ_WRITE/READ */ - DBUG_ASSERT(mdl_ticket->m_type == MDL_SHARED_UPGRADABLE || - mdl_ticket->m_type == MDL_SHARED_NO_WRITE || - mdl_ticket->m_type == MDL_SHARED_NO_READ_WRITE || - mdl_ticket->m_type == MDL_SHARED_READ); - mdl_xlock_request.init(&mdl_ticket->m_lock->key, new_type, MDL_TRANSACTION); -- cgit v1.2.1