mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
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
This commit is contained in:
@@ -2243,7 +2243,9 @@ int mysql_rm_table_no_locks(THD *thd, TABLE_LIST *tables, bool if_exists,
|
||||
uint32 comment_len;
|
||||
|
||||
built_query.set_charset(thd->charset());
|
||||
built_query.append("DROP TABLE ");
|
||||
built_query.append("DROP ");
|
||||
built_query.append(object_to_drop);
|
||||
built_query.append(' ');
|
||||
if (if_exists)
|
||||
built_query.append("IF EXISTS ");
|
||||
|
||||
@@ -5556,9 +5558,8 @@ int mysql_discard_or_import_tablespace(THD *thd,
|
||||
error= trans_commit_stmt(thd);
|
||||
if (trans_commit_implicit(thd))
|
||||
error=1;
|
||||
if (error)
|
||||
goto err;
|
||||
error= write_bin_log(thd, FALSE, thd->query(), thd->query_length());
|
||||
if (!error)
|
||||
error= write_bin_log(thd, FALSE, thd->query(), thd->query_length());
|
||||
|
||||
err:
|
||||
thd->tablespace_op=FALSE;
|
||||
|
||||
Reference in New Issue
Block a user