diff --git a/mysql-test/include/have_aria_used_for_temp_tables.inc b/mysql-test/include/have_aria_used_for_temp_tables.inc
new file mode 100644
index 0000000000000000000000000000000000000000..c921ba91d22f3b02eb71a193202e32444bbffd00
--- /dev/null
+++ b/mysql-test/include/have_aria_used_for_temp_tables.inc
@@ -0,0 +1,4 @@
+if (!`SELECT @@aria_used_for_temp_tables`)
+{
+  skip Need Aria to be used for temporary tables;
+}
diff --git a/mysql-test/main/information_schema.test b/mysql-test/main/information_schema.test
index 1f72d0b61299789155ac1ded9496492297772fca..2b318f5f1aa212ee54c2b1a29b4e470f00f282bd 100644
--- a/mysql-test/main/information_schema.test
+++ b/mysql-test/main/information_schema.test
@@ -8,6 +8,10 @@
 # on the presence of the log tables (which are CSV-based).
 --source include/have_csv.inc
 
+# Without aria_used_for_temp_tables some I_S tables will be MyISAM,
+# while the test expects them to be Aria
+-- source include/have_aria_used_for_temp_tables.inc
+
 -- source include/have_innodb.inc
 
 # Save the initial number of concurrent sessions
diff --git a/mysql-test/suite/sys_vars/t/aria_used_for_temp_tables_basic.test b/mysql-test/suite/sys_vars/t/aria_used_for_temp_tables_basic.test
index e962dcf178df89afc7ddfb21f63239f5bb6b9d9b..07f0c4311384ff3f9b470c3e90afee4b4ff00792 100644
--- a/mysql-test/suite/sys_vars/t/aria_used_for_temp_tables_basic.test
+++ b/mysql-test/suite/sys_vars/t/aria_used_for_temp_tables_basic.test
@@ -1,5 +1,6 @@
 # bool readonly
 
+--source include/have_aria_used_for_temp_tables.inc
 --source include/have_maria.inc
 #
 # show the global and session values;
diff --git a/mysql-test/suite/sys_vars/t/sysvars_aria.test b/mysql-test/suite/sys_vars/t/sysvars_aria.test
index 5ff5c0d4b2bcde229d1d80506e3ce620e8524a4a..67fb0baa4f1367e81692f51e8ad5f5aa64681465 100644
--- a/mysql-test/suite/sys_vars/t/sysvars_aria.test
+++ b/mysql-test/suite/sys_vars/t/sysvars_aria.test
@@ -1,4 +1,5 @@
 --source include/have_aria.inc
+--source include/have_aria_used_for_temp_tables.inc
 --source include/word_size.inc
 
 --vertical_results
diff --git a/mysql-test/suite/sys_vars/t/tmp_disk_table_size_func.test b/mysql-test/suite/sys_vars/t/tmp_disk_table_size_func.test
index bf93b4646d95ac6a90c0d734bd32cfc25ca4a630..9c1e596d3e4b3d47a6276b5007df36542219dd91 100644
--- a/mysql-test/suite/sys_vars/t/tmp_disk_table_size_func.test
+++ b/mysql-test/suite/sys_vars/t/tmp_disk_table_size_func.test
@@ -1,5 +1,7 @@
 ###################### tmp_memory_table_size_func.test ########################
 
+--source include/have_aria_used_for_temp_tables.inc
+
 --source include/load_sysvars.inc
 --source include/have_sequence.inc
 
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index 890761c1932b8e3ca72f561cb1cec26bec0ca1d1..afcd907948066e63a70e89eb524b65fe02f6ab09 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -232,9 +232,8 @@ static void recv_addr_trim(ulint space_id, unsigned pages, lsn_t lsn)
 		hash_cell_t* const cell = hash_get_nth_cell(
 			recv_sys->addr_hash, i);
 		for (recv_addr_t* addr = static_cast<recv_addr_t*>(cell->node),
-			     *prev = NULL, *next;
-		     addr;
-		     prev = addr, addr = next) {
+			     *next;
+		     addr; addr = next) {
 			next = static_cast<recv_addr_t*>(addr->addr_hash);
 
 			if (addr->space != space_id || addr->page_no < pages) {
@@ -256,22 +255,6 @@ static void recv_addr_trim(ulint space_id, unsigned pages, lsn_t lsn)
 				}
 				recv = n;
 			}
-
-			if (UT_LIST_GET_LEN(addr->rec_list)) {
-				DBUG_PRINT("ib_log",
-					   ("preserving " ULINTPF
-					    " records for page %u:%u",
-					    UT_LIST_GET_LEN(addr->rec_list),
-					    addr->space, addr->page_no));
-			} else {
-				ut_ad(recv_sys->n_addrs);
-				--recv_sys->n_addrs;
-				if (addr == cell->node) {
-					cell->node = next;
-				} else {
-					prev->addr_hash = next;
-				}
-			}
 		}
 	}
 	if (fil_space_t* space = fil_space_get(space_id)) {
@@ -2119,8 +2102,7 @@ static ulint recv_read_in_area(const page_id_t page_id)
 /** Apply the hash table of stored log records to persistent data pages.
 @param[in]	last_batch	whether the change buffer merge will be
 				performed as part of the operation */
-void
-recv_apply_hashed_log_recs(bool last_batch)
+void recv_apply_hashed_log_recs(bool last_batch)
 {
 	ut_ad(srv_operation == SRV_OPERATION_NORMAL
 	      || srv_operation == SRV_OPERATION_RESTORE
@@ -2183,7 +2165,8 @@ recv_apply_hashed_log_recs(bool last_batch)
 				continue;
 			}
 
-			if (recv_addr->state == RECV_DISCARDED) {
+			if (recv_addr->state == RECV_DISCARDED
+			    || !UT_LIST_GET_LEN(recv_addr->rec_list)) {
 				ut_a(recv_sys->n_addrs);
 				recv_sys->n_addrs--;
 				continue;