Skip to content

Commit 09c666e

Browse files
committedMar 20, 2025
MDEV-34621 Fix division by zero in mariadb-slap when iterations=0
mariadb-slap crashes with a floating point exception when run with -iterations=0 due to division by zero in generate_stats(). This occurs when calculating average timing by dividing by the number of iterations. To fix this, the solution checks if iterations == 0 before performing the division, and returns early from the function in such cases.
1 parent 38e420b commit 09c666e

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed
 

‎client/mysqlslap.c

+7-4
Original file line numberDiff line numberDiff line change
@@ -2219,6 +2219,13 @@ generate_stats(conclusions *con, option_string *eng, stats *sptr)
22192219
stats *ptr;
22202220
unsigned int x;
22212221

2222+
if (eng && eng->string)
2223+
con->engine= eng->string;
2224+
2225+
/* Early return when iterations is 0 to avoid accessing uninitialized sptr */
2226+
if (iterations == 0)
2227+
return;
2228+
22222229
con->min_timing= sptr->timing;
22232230
con->max_timing= sptr->timing;
22242231
con->min_rows= sptr->rows;
@@ -2240,10 +2247,6 @@ generate_stats(conclusions *con, option_string *eng, stats *sptr)
22402247
}
22412248
con->avg_timing= con->avg_timing/iterations;
22422249

2243-
if (eng && eng->string)
2244-
con->engine= eng->string;
2245-
else
2246-
con->engine= NULL;
22472250
}
22482251

22492252
void

‎mysql-test/main/mysqlslap.result

+3
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,6 @@ DROP TABLE t1;
260260
#
261261
# Bug MDEV-15789 (Upstream: #80329): MYSQLSLAP OPTIONS --AUTO-GENERATE-SQL-GUID-PRIMARY and --AUTO-GENERATE-SQL-SECONDARY-INDEXES DONT WORK
262262
#
263+
#
264+
# Bug MDEV-34621: Fix division by zero in mariadb-slap when iterations=0
265+
#

‎mysql-test/main/mysqlslap.test

+6
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,9 @@ DROP TABLE t1;
8888
--exec $MYSQL_SLAP --concurrency=1 --silent --iterations=1 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql --auto-generate-sql-guid-primary --create-schema=slap
8989

9090
--exec $MYSQL_SLAP --concurrency=1 --silent --iterations=1 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql --auto-generate-sql-secondary-indexes=1 --create-schema=slap
91+
92+
--echo #
93+
--echo # Bug MDEV-34621: Fix division by zero in mariadb-slap when iterations=0
94+
--echo #
95+
96+
--exec $MYSQL_SLAP -i0 --only-print

0 commit comments

Comments
 (0)