Skip to content

Commit 8192b45

Browse files
committed
MDEV-34621: Fix division by zero in mariadb-slap when iterations=0
The mariadb-slap tool crashes with a floating point exception when run with -i0 due to division by zero in the generate_stats() function. Initial attempts to fix this by changing the minimum value in the option definition caused unexpected warning messages even with valid values. This fix adds a simple safety check that prevents division by zero when iterations=0, setting the average timing to 0 instead of attempting the division. This approach avoids both the crash and the unexpected warnings.
1 parent 38e420b commit 8192b45

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

client/mysqlslap.c

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

2222+
/* Early return when iterations is 0 to avoid accessing uninitialized sptr */
2223+
if (iterations == 0)
2224+
{
2225+
if (eng && eng->string)
2226+
con->engine= eng->string;
2227+
else
2228+
con->engine= NULL;
2229+
return;
2230+
}
2231+
22222232
con->min_timing= sptr->timing;
22232233
con->max_timing= sptr->timing;
22242234
con->min_rows= sptr->rows;
@@ -2238,6 +2248,7 @@ generate_stats(conclusions *con, option_string *eng, stats *sptr)
22382248
if (ptr->timing < con->min_timing)
22392249
con->min_timing= ptr->timing;
22402250
}
2251+
22412252
con->avg_timing= con->avg_timing/iterations;
22422253

22432254
if (eng && eng->string)

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

+8
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,11 @@ 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
97+
98+
--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=0 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed

0 commit comments

Comments
 (0)