[1/2] Testsuite verification for 8.4.9

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.
This commit is contained in:
Michal Schorm 2026-05-06 13:07:27 +02:00
parent bde8c91075
commit b902c8209b
2 changed files with 14 additions and 1 deletions

View File

@ -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

View File

@ -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