MDEV-32901: innodb.mdev-14846 fails in 11.0

InnoDB could return off-by-1 estimates for the involved tables.
This would cause off-by-many difference in join output cardinality
for the top-level SELECT, and so different query plan for the subquery.

The fix: Introduce mysql-test/include/innodb_stable_estimates.{inc,opt}
which disables InnoDB's background statistics collection, and use it.
This commit is contained in:
Sergei Petrunia 2023-12-04 15:55:53 +03:00
parent 5c4c1844bf
commit bd23b3dc06
3 changed files with 15 additions and 0 deletions

View file

@ -0,0 +1,12 @@
#
# Include this file in your .test file if your testcase uses InnoDB tables
# requiring stable query plans, which likely requires that InnoDB produces
# stable estimates for #records in tables.
#
# How it works:
# Unstable InnoDB estimates are caused by InnoDB's background statistics
# collection. When you include this file, MTR will use server options from
# include/innodb_stable_estimates.opt, which disables background statistics
# collection.
# (and no, InnoDB team objects to using this configuration for all MTR tests)
#

View file

@ -0,0 +1 @@
--innodb_stats_auto_recalc=0

View file

@ -2,6 +2,8 @@
--source include/count_sessions.inc
--source include/have_debug_sync.inc
--source include/innodb_stable_estimates.inc
CREATE TABLE t1 (
pk INT,
f1 VARCHAR(10) NOT NULL,