mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
c92b9b7315
for general use. mysql-test/Makefile.am: Adding directories of additional test suites mysql-test/mysql-stress-test.pl: Adding check for additional errors checking during test run
115 lines
3.2 KiB
Text
115 lines
3.2 KiB
Text
#
|
|
# Specify storage engine to use. Variable $engine is set in wrapper test.
|
|
#
|
|
eval SET @@storage_engine = $engine;
|
|
if (`SELECT @@storage_engine LIKE 'InnoDB' AND @@version LIKE '%6.%'`)
|
|
{
|
|
# Need this due to Bug#43447 - Crash when executing SELECT ... LIMIT n FOR UPDATE query
|
|
# Hopefully temporary...
|
|
# Not applicable to 5.1 server or earlier.
|
|
--disable_query_log
|
|
SET GLOBAL optimizer_use_mrr='disable';
|
|
SET GLOBAL engine_condition_pushdown=off;
|
|
--enable_query_log
|
|
}
|
|
|
|
if (`SELECT @@storage_engine LIKE 'PBXT' AND @@version LIKE '%5.1%'`)
|
|
{
|
|
--disable_query_log
|
|
SET SESSION binlog_format = 'MIXED';
|
|
SET GLOBAL binlog_format = 'MIXED';
|
|
--enable_query_log
|
|
}
|
|
|
|
# Verify default storage engine.
|
|
SHOW VARIABLES LIKE 'storage_engine';
|
|
|
|
# Verify default isolation level
|
|
SHOW VARIABLES LIKE 'tx_isolation';
|
|
|
|
#
|
|
# Create table for keeping track of test metadata/statistics (counters etc.).
|
|
# (Need a data structure that will hold across tests, clients, sessions).
|
|
# Expand/modify if needeed, but take care of test files using it.
|
|
#
|
|
# Columns:
|
|
# deadlocks - keeps track of the total number of deadlocks so far.
|
|
#
|
|
# Using default storage engine (see above).
|
|
CREATE TABLE statistics (
|
|
tx_errors INTEGER NOT NULL
|
|
);
|
|
|
|
# Initialize statistics table.
|
|
INSERT INTO statistics (tx_errors) VALUES (0);
|
|
|
|
#
|
|
# Create main test / data table. Some notes:
|
|
# * timestamp is automatically DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
# * BOOLEAN is TINYINT(1)
|
|
# * `is_consistent` means that the sum of int1* and int2* columns in that row
|
|
# is = 0. NOTE: Do not change meaning unless you take care to
|
|
# change test cases that rely on it (e.g. rr_id_900).
|
|
# Set `is_consistent` = 0 if changing a row's sum to non-zero.
|
|
#
|
|
# TODO: Get TID (thread_id) from mysql-stress-test.pl somehow.
|
|
#
|
|
|
|
CREATE TABLE t1 (
|
|
`pk` INTEGER AUTO_INCREMENT NOT NULL,
|
|
`id` INTEGER NOT NULL,
|
|
`int1` INTEGER,
|
|
`int1_key` INTEGER,
|
|
`int1_unique` INTEGER,
|
|
`int2` INTEGER,
|
|
`int2_key` INTEGER,
|
|
`int2_unique` INTEGER,
|
|
`for_update` BOOLEAN DEFAULT 0,
|
|
`timestamp` TIMESTAMP,
|
|
`connection_id` INTEGER,
|
|
`thread_id` INTEGER DEFAULT 0,
|
|
`is_uncommitted` BOOLEAN DEFAULT 0,
|
|
`is_consistent` BOOLEAN DEFAULT 0,
|
|
KEY (`id`),
|
|
KEY (`int1_key`),
|
|
KEY (`int2_key`),
|
|
UNIQUE (`int1_unique`),
|
|
UNIQUE (`int2_unique`),
|
|
PRIMARY KEY (`pk`)
|
|
);
|
|
|
|
# Check that the table was really created with the intended storage engine.
|
|
SHOW CREATE TABLE t1;
|
|
|
|
## Procedure for inserting the value 1000 into integer fieds, "rows" times.
|
|
|
|
--delimiter //
|
|
|
|
eval CREATE PROCEDURE insertRows(rows INT)
|
|
BEGIN
|
|
SET @n = 1;
|
|
REPEAT
|
|
INSERT INTO t1 (`id`, `int1`, `int1_key`, `int1_unique`,
|
|
`int2`, `int2_key`, `int2_unique`,
|
|
`for_update`, `connection_id`, `thread_id`,
|
|
`is_uncommitted`, `is_consistent`)
|
|
VALUES (0, 1000, 1000, @n,
|
|
-1000, -1000, -@n,
|
|
0, CONNECTION_ID(), 0,
|
|
0, 1);
|
|
SET @n = @n + 1;
|
|
UNTIL @n > rows
|
|
END REPEAT;
|
|
END;
|
|
//
|
|
|
|
--delimiter ;
|
|
|
|
## Insert 1000 rows.
|
|
CALL insertRows(1000);
|
|
|
|
## Check the sum of all int columns
|
|
SELECT SUM(`int1` + `int1_key` + `int1_unique`
|
|
+ `int2` + `int2_key` + `int2_unique`)
|
|
AS TotalSum
|
|
FROM t1;
|