Commit 5c243d4c authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.5 into 10.6

parents e2379259 7573fe8b
...@@ -39,6 +39,9 @@ commit work; ...@@ -39,6 +39,9 @@ commit work;
SET GLOBAL innodb_fast_shutdown = 0; SET GLOBAL innodb_fast_shutdown = 0;
let $shutdown_timeout=; let $shutdown_timeout=;
--source include/restart_mysqld.inc --source include/restart_mysqld.inc
# Ensure that buf_flush_page_cleaner() has woken up from its
# first my_cond_timedwait() and gone idle.
sleep 1;
--source ../include/no_checkpoint_start.inc --source ../include/no_checkpoint_start.inc
connect (dml,localhost,root,,); connect (dml,localhost,root,,);
XA START 'x'; XA START 'x';
......
...@@ -658,7 +658,7 @@ then ...@@ -658,7 +658,7 @@ then
then then
echo echo
echo "You can start the MariaDB daemon with:" echo "You can start the MariaDB daemon with:"
echo "cd '$basedir' ; $bindir/mariadb-safe --datadir='$ldata'" echo "cd '$basedir' ; $bindir/mariadbd-safe --datadir='$ldata'"
echo echo
echo "You can test the MariaDB daemon with mysql-test-run.pl" echo "You can test the MariaDB daemon with mysql-test-run.pl"
echo "cd '$basedir/@INSTALL_MYSQLTESTDIR@' ; perl mariadb-test-run.pl" echo "cd '$basedir/@INSTALL_MYSQLTESTDIR@' ; perl mariadb-test-run.pl"
......
...@@ -4875,16 +4875,20 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file) ...@@ -4875,16 +4875,20 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file)
for (const page_t *page : pages) for (const page_t *page : pages)
{ {
uint32_t space_id= page_get_space_id(page); uint32_t space_id= page_get_space_id(page);
byte *read_page= nullptr;
if (page_get_page_no(page) > 0 || space_id == 0) if (page_get_page_no(page) > 0 || space_id == 0)
{
next_page: next_page:
aligned_free(read_page);
continue; continue;
}
uint32_t flags= mach_read_from_4( uint32_t flags= mach_read_from_4(
FSP_HEADER_OFFSET + FSP_SPACE_FLAGS + page); FSP_HEADER_OFFSET + FSP_SPACE_FLAGS + page);
page_id_t page_id(space_id, 0); page_id_t page_id(space_id, 0);
size_t page_size= fil_space_t::physical_size(flags); size_t page_size= fil_space_t::physical_size(flags);
if (file_size < 4 * page_size) if (file_size < 4 * page_size)
goto next_page; goto next_page;
byte *read_page= read_page=
static_cast<byte*>(aligned_malloc(3 * page_size, page_size)); static_cast<byte*>(aligned_malloc(3 * page_size, page_size));
/* Read 3 pages from the file and match the space id /* Read 3 pages from the file and match the space id
with the space id which is stored in with the space id which is stored in
...@@ -4896,7 +4900,10 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file) ...@@ -4896,7 +4900,10 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file)
{ {
byte *cur_page= read_page + j * page_size; byte *cur_page= read_page + j * page_size;
if (buf_is_zeroes(span<const byte>(cur_page, page_size))) if (buf_is_zeroes(span<const byte>(cur_page, page_size)))
return 0; {
space_id= 0;
goto early_exit;
}
if (mach_read_from_4(cur_page + FIL_PAGE_OFFSET) != j + 1 || if (mach_read_from_4(cur_page + FIL_PAGE_OFFSET) != j + 1 ||
memcmp(cur_page + FIL_PAGE_SPACE_ID, memcmp(cur_page + FIL_PAGE_SPACE_ID,
page + FIL_PAGE_SPACE_ID, 4) || page + FIL_PAGE_SPACE_ID, 4) ||
...@@ -4904,7 +4911,11 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file) ...@@ -4904,7 +4911,11 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file)
goto next_page; goto next_page;
} }
if (!restore_first_page(space_id, name, file)) if (!restore_first_page(space_id, name, file))
{
early_exit:
aligned_free(read_page);
return space_id; return space_id;
}
break; break;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment