maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #06432
Preparing MDEV-4506, Parallel replication, for 10.0.5 release
Hi Monty,
I was asked to prepare MDEV-4506, parallel replication, for release of 10.0.5
on Monday.
For this, I did merge to 10.0-base and then to 10.0. I have pushed the results
here:
lp:~maria-captains/maria/mdev-4506-base # for 10.0-base merge
lp:~maria-captains/maria/mdev-4506 # for 10.0 merge
However, I had problems with a couple of your changes, to temporary tables and
innodb log file size. The code that you modified in 10.0-base does not seem to
exist in 10.0 (or at least I couldn't find it easily).
Can you take a look at this and see if you can complete the merge? The missing
bits are just the few hunks appended at the end of this mail, so I assume it
should be easy for someone who knows what the patches are supposed to do.
The tree lp:~maria-captains/maria/mdev-4506 currently has a lot of test
failures, but it looks like most of them will be fixed by completing the last
bits of the merge.
- Kristian.
-----------------------------------------------------------------------
sql/sql_base.cc:
<<<<<<< TREE
if (table_list->mdl_request.type >= MDL_SHARED_WRITE &&
thd->tx_read_only &&
!(flags & (MYSQL_LOCK_LOG_TABLE | MYSQL_OPEN_HAS_MDL_LOCK)))
||||||| BASE-REVISION
if (table_list->open_type != OT_BASE_ONLY &&
! (flags & MYSQL_OPEN_SKIP_TEMPORARY))
=======
if (table_list->open_type != OT_BASE_ONLY &&
! (flags & MYSQL_OPEN_SKIP_TEMPORARY) && thd->have_temporary_tables())
>>>>>>> MERGE-SOURCE
{
<<<<<<< TREE
my_error(ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION, MYF(0));
DBUG_RETURN(true);
||||||| BASE-REVISION
for (table= thd->temporary_tables; table ; table=table->next)
{
if (table->s->table_cache_key.length == key_length +
TMP_TABLE_KEY_EXTRA &&
!memcmp(table->s->table_cache_key.str, key,
key_length + TMP_TABLE_KEY_EXTRA))
{
/*
We're trying to use the same temporary table twice in a query.
Right now we don't support this because a temporary table
is always represented by only one TABLE object in THD, and
it can not be cloned. Emit an error for an unsupported behaviour.
*/
if (table->query_id)
{
DBUG_PRINT("error",
("query_id: %lu server_id: %u pseudo_thread_id: %lu",
(ulong) table->query_id, (uint) thd->variables.server_id,
(ulong) thd->variables.pseudo_thread_id));
my_error(ER_CANT_REOPEN_TABLE, MYF(0), table->alias.c_ptr());
DBUG_RETURN(TRUE);
}
table->query_id= thd->query_id;
thd->thread_specific_used= TRUE;
DBUG_PRINT("info",("Using temporary table"));
goto reset;
}
}
=======
if ((table= find_temporary_table(thd, key,
key_length + TMP_TABLE_KEY_EXTRA)))
{
/*
Check if we're trying to use the same temporary table twice in a query.
Right now we don't support this because a temporary table
is always represented by only one TABLE object in THD, and
it can not be cloned. Emit an error for an unsupported behaviour.
*/
if (table->query_id)
{
DBUG_PRINT("error",
("query_id: %lu server_id: %u pseudo_thread_id: %lu",
(ulong) table->query_id, (uint) thd->variables.server_id,
(ulong) thd->variables.pseudo_thread_id));
my_error(ER_CANT_REOPEN_TABLE, MYF(0), table->alias.c_ptr());
DBUG_RETURN(TRUE);
}
table->query_id= thd->query_id;
thd->thread_specific_used= TRUE;
DBUG_PRINT("info",("Using temporary table"));
goto reset;
}
>>>>>>> MERGE-SOURCE
sql/slave.cc:
<<<<<<< TREE
static void set_thd_in_use_temporary_tables(Relay_log_info *rli)
{
TABLE *table;
for (table= rli->save_temporary_tables ; table ; table= table->next)
{
table->in_use= rli->sql_thd;
if (table->file != NULL)
{
/*
Since we are stealing opened temporary tables from one thread to another,
we need to let the performance schema know that,
for aggregates per thread to work properly.
*/
table->file->unbind_psi();
table->file->rebind_psi();
}
}
}
||||||| BASE-REVISION
static void set_thd_in_use_temporary_tables(Relay_log_info *rli)
{
TABLE *table;
for (table= rli->save_temporary_tables ; table ; table= table->next)
table->in_use= rli->sql_thd;
}
=======
>>>>>>> MERGE-SOURCE
=== modified file 'storage/innobase/srv/srv0start.c'
--- storage/innobase/srv/srv0start.c 2013-09-06 20:31:30 +0000
+++ storage/innobase/srv/srv0start.c 2013-11-01 08:17:06 +0000
@@ -621,7 +621,7 @@ open_or_create_log_file(
|| size_high != srv_calc_high32(srv_log_file_size)) {
fprintf(stderr,
- "InnoDB: Error: log file %s is"
+ "InnoDB: Warning: log file %s is"
" of different size %lu %lu bytes\n"
"InnoDB: than specified in the .cnf"
" file %lu %lu bytes!\n",
@@ -629,7 +629,8 @@ open_or_create_log_file(
(ulong) srv_calc_high32(srv_log_file_size),
(ulong) srv_calc_low32(srv_log_file_size));
- return(DB_ERROR);
+ srv_log_file_size= size +
+ (((longlong) size_high) << 32);
}
} else {
*log_file_created = TRUE;
Follow ups