From b902c8209b898c82662932fd3611d783c37ad3fa Mon Sep 17 00:00:00 2001 From: Michal Schorm Date: Wed, 6 May 2026 13:07:27 +0200 Subject: [PATCH] [1/2] Testsuite verification for 8.4.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skip 8 InnoDB compressed table tests on s390x: innodb.zlob_geom, innodb_zip.{4k,8k,bug52745,index_large_prefix, index_large_prefix_4k,index_large_prefix_8k,prefix_index_liftedlimit} Root cause: Bug#39129182 (in 8.0.46/8.4.9/9.7.0) rewrote get_field_max_size() to be stricter about row size estimation for ROW_FORMAT=COMPRESSED tables. On s390x with zlib-ng (Fedora 40+, RHEL 10), the DFLTCC hardware-accelerated deflate makes compressBound() return ~300 bytes more than classic zlib for small inputs. InnoDB's page_zip_empty_size() calls compressBound() to compute usable space on compressed pages — the inflated return value reduces max row size by ~315 bytes per page, causing tables with KEY_BLOCK_SIZE=1 or 2 to be rejected with ER_TOO_BIG_ROWSIZE. compressBound formulas: classic zlib: n + (n>>12) + (n>>14) + (n>>25) + 13 DFLTCC zlib-ng: ((2308 + n*16) >> 3) + 18 For n=8 (typical column directory): 21 bytes vs 322 bytes. Neither factor alone causes failure — the stricter estimation pushes tables closer to the limit, DFLTCC overhead pushes them over. x86_64 is unaffected (no DFLTCC). Previous MySQL releases are unaffected (looser row size estimation absorbed the overhead). KEY_BLOCK_SIZE=8 (the default for compressed tables) is effectively safe — the ~315-byte loss is only 4% of ~8120 bytes of usable space. --- mysql8.4.spec | 2 +- rh-skipped-tests-list-s390.list | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mysql8.4.spec b/mysql8.4.spec index f46b77f..4899f80 100644 --- a/mysql8.4.spec +++ b/mysql8.4.spec @@ -21,7 +21,7 @@ ExcludeArch: %{ix86} # The last version on which the full testsuite has been run # In case of further rebuilds of that version, don't require full testsuite to be run # run only "main" suite -%global last_tested_version 8.4.8 +%global last_tested_version 8.4.9 # Set to 1 to force run the testsuite even if it was already tested in current version %global force_run_testsuite 0 diff --git a/rh-skipped-tests-list-s390.list b/rh-skipped-tests-list-s390.list index 3c01fef..91d3f1d 100644 --- a/rh-skipped-tests-list-s390.list +++ b/rh-skipped-tests-list-s390.list @@ -11,3 +11,16 @@ test_services.test_event_tracking_consumer : BUG#0 # Fails since MySQL 8.4.4 perfschema.threads_innodb : BUG#0 + +# Fails since 8.0.46 / 8.4.9 / 9.7.0 on s390x +# Bug#39129182 tightened InnoDB row size estimation in get_field_max_size(). +# Combined with zlib-ng DFLTCC compressBound() overhead on s390x, +# compressed tables with small KEY_BLOCK_SIZE exceed row size limits. +innodb.zlob_geom : BUG#0 +innodb_zip.4k : BUG#0 +innodb_zip.8k : BUG#0 +innodb_zip.bug52745 : BUG#0 +innodb_zip.index_large_prefix : BUG#0 +innodb_zip.index_large_prefix_4k : BUG#0 +innodb_zip.index_large_prefix_8k : BUG#0 +innodb_zip.prefix_index_liftedlimit : BUG#0