From 4ee9e0664250ec1d6d2c0ea4ac6652c8b114fec0 Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Mon, 23 Aug 2021 16:47:25 +0600 Subject: [PATCH 1/5] fix clang build --- storage/maria/ma_rt_test.c | 3 --- storage/myisam/rt_test.c | 3 --- 2 files changed, 6 deletions(-) diff --git a/storage/maria/ma_rt_test.c b/storage/maria/ma_rt_test.c index 5af941b78c8..f7e38af3dce 100644 --- a/storage/maria/ma_rt_test.c +++ b/storage/maria/ma_rt_test.c @@ -133,7 +133,6 @@ static int run_test(const char *filename) int key_length=8; int null_fields=0; int nrecords=sizeof(rt_data)/(sizeof(double)*4);/* 40 */ - int rec_length=0; int uniques=0; int i, max_i; int error; @@ -153,7 +152,6 @@ static int run_test(const char *filename) recinfo[0].type=FIELD_NORMAL; recinfo[0].length=1; /* For NULL bits */ - rec_length=1; /* Define 2*ndims columns for coordinates*/ @@ -161,7 +159,6 @@ static int run_test(const char *filename) { recinfo[i].type=FIELD_NORMAL; recinfo[i].length=key_length; - rec_length+=key_length; } /* Define a key with 2*ndims segments */ diff --git a/storage/myisam/rt_test.c b/storage/myisam/rt_test.c index 78deb80064a..07310039fd0 100644 --- a/storage/myisam/rt_test.c +++ b/storage/myisam/rt_test.c @@ -103,7 +103,6 @@ static int run_test(const char *filename) int key_length=8; int null_fields=0; int nrecords=sizeof(rt_data)/(sizeof(double)*4);/* 3000;*/ - int rec_length=0; int uniques=0; int i, max_i; int error; @@ -123,14 +122,12 @@ static int run_test(const char *filename) recinfo[0].type=FIELD_NORMAL; recinfo[0].length=1; /* For NULL bits */ - rec_length=1; /* Define 2*ndims columns for coordinates*/ for (i=1; i<=2*ndims ;i++){ recinfo[i].type=FIELD_NORMAL; recinfo[i].length=key_length; - rec_length+=key_length; } /* Define a key with 2*ndims segments */ From 1f1d5606e08c928e3da98bfeb13a7cccc307105d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 23 Aug 2021 15:14:54 +0300 Subject: [PATCH 2/5] Disable 2 commonly failing innodb_gis tests --- mysql-test/suite/innodb_gis/disabled.def | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/suite/innodb_gis/disabled.def b/mysql-test/suite/innodb_gis/disabled.def index 8cae44a3607..bf500c1cb93 100644 --- a/mysql-test/suite/innodb_gis/disabled.def +++ b/mysql-test/suite/innodb_gis/disabled.def @@ -10,3 +10,5 @@ # ############################################################################## +rtree_concurrent_srch : MDEV-15284 COUNT(*) mismatch +rtree_recovery : MDEV-15284 COUNT(*) mismatch From c0a84fb9b0367b4cbd0a8e36d7cb219eb5f919e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 23 Aug 2021 17:00:01 +0300 Subject: [PATCH 3/5] MDEV-26465 Race condition in trx_purge_rseg_get_next_history_log() trx_purge_rseg_get_next_history_log(): Fix a race condition that was introduced in commit e46f76c9749d7758765ba274a212cfc2dcf3eeb8 (MDEV-15912). The buffer pool page contents must not be accessed while not holding a page latch. The page latch was released by mtr_t::commit(). This race resulted in an ASAN heap-use-after-poison during a stress test. --- storage/innobase/trx/trx0purge.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc index 59d60d204d8..c8f471f1f7a 100644 --- a/storage/innobase/trx/trx0purge.cc +++ b/storage/innobase/trx/trx0purge.cc @@ -1155,15 +1155,16 @@ static void trx_purge_rseg_get_next_history_log( trx_no = mach_read_from_8(log_hdr + TRX_UNDO_TRX_NO); ut_ad(mach_read_from_2(log_hdr + TRX_UNDO_NEEDS_PURGE) <= 1); + const byte needs_purge = log_hdr[TRX_UNDO_NEEDS_PURGE + 1]; - mtr_commit(&mtr); + mtr.commit(); mutex_enter(&purge_sys.rseg->mutex); purge_sys.rseg->last_page_no = static_cast( prev_log_addr.page); purge_sys.rseg->set_last_commit(prev_log_addr.boffset, trx_no); - purge_sys.rseg->needs_purge = log_hdr[TRX_UNDO_NEEDS_PURGE + 1] != 0; + purge_sys.rseg->needs_purge = needs_purge != 0; /* Purge can also produce events, however these are already ordered in the rollback segment and any user generated event will be greater From 497b69493620eaa4cb1f2240a10be85e08a59793 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Tue, 24 Aug 2021 23:05:21 +0300 Subject: [PATCH 4/5] Fixed compile errors when compiling with HAVE_valgrind --- sql/field.cc | 2 +- storage/innobase/include/srv0mon.h | 2 +- storage/innobase/page/page0cur.cc | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index eaa829cd361..cba6df52b62 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -7692,7 +7692,7 @@ my_decimal *Field_varstring::val_decimal(my_decimal *decimal_value) #ifdef HAVE_valgrind void Field_varstring::mark_unused_memory_as_defined() { - uint used_length= get_length(); + uint used_length __attribute__((unused)) = get_length(); MEM_MAKE_DEFINED(get_data() + used_length, field_length - used_length); } #endif diff --git a/storage/innobase/include/srv0mon.h b/storage/innobase/include/srv0mon.h index eaf47789486..3721840f022 100644 --- a/storage/innobase/include/srv0mon.h +++ b/storage/innobase/include/srv0mon.h @@ -656,7 +656,7 @@ Use MONITOR_DEC if appropriate mutex protection exists. #ifdef HAVE_valgrind # define MONITOR_CHECK_DEFINED(value) do { \ - mon_type_t m = value; \ + mon_type_t m __attribute__((unused))= value; \ MEM_CHECK_DEFINED(&m, sizeof m); \ } while (0) #else /* HAVE_valgrind */ diff --git a/storage/innobase/page/page0cur.cc b/storage/innobase/page/page0cur.cc index e4007fca83b..a90195a1b67 100644 --- a/storage/innobase/page/page0cur.cc +++ b/storage/innobase/page/page0cur.cc @@ -1299,9 +1299,9 @@ page_cur_insert_rec_low( #ifdef HAVE_valgrind { - const void* rec_start + const void* rec_start __attribute__((unused)) = rec - rec_offs_extra_size(offsets); - ulint extra_size + ulint extra_size __attribute__((unused)) = rec_offs_extra_size(offsets) - (rec_offs_comp(offsets) ? REC_N_NEW_EXTRA_BYTES @@ -1530,9 +1530,9 @@ page_cur_insert_rec_zip( #ifdef HAVE_valgrind { - const void* rec_start + const void* rec_start __attribute__((unused)) = rec - rec_offs_extra_size(offsets); - ulint extra_size + ulint extra_size __attribute__((unused)) = rec_offs_extra_size(offsets) - (rec_offs_comp(offsets) ? REC_N_NEW_EXTRA_BYTES From ece30d47ca939944cdbb5bd2c12193c3c750fd01 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Thu, 8 Jul 2021 21:47:38 +1000 Subject: [PATCH 5/5] MDEV-26109: s390x detected as 32bit in mtr tests Currently @@version_compile_machine is used by mtr to determine if the compiled executable is 32 or 64 bits. We extend that logic by ensuring that if the DEFAUT_MACHINE name doesn't have "64" in its string, "-64bits" is appended to ensure these test pass. --- cmake/package_name.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/package_name.cmake b/cmake/package_name.cmake index 8acf52f1bb3..b93641109c3 100644 --- a/cmake/package_name.cmake +++ b/cmake/package_name.cmake @@ -110,7 +110,11 @@ IF(NOT VERSION) SET(DEFAULT_MACHINE "x86") ENDIF() ENDIF() - + + IF(NOT DEFAULT_MACHINE MATCHES "64" AND 64BIT) + SET(DEFAULT_MACHINE "${DEFAULT_MACHINE}-64bit") + ENDIF() + IF(NOT PLATFORM) SET(PLATFORM ${DEFAULT_PLATFORM}) ENDIF()