diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
commit | 06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/perfschema/t/statement_program_concurrency.test | |
parent | Initial commit. (diff) | |
download | mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/perfschema/t/statement_program_concurrency.test')
-rw-r--r-- | mysql-test/suite/perfschema/t/statement_program_concurrency.test | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/t/statement_program_concurrency.test b/mysql-test/suite/perfschema/t/statement_program_concurrency.test new file mode 100644 index 00000000..8229223c --- /dev/null +++ b/mysql-test/suite/perfschema/t/statement_program_concurrency.test @@ -0,0 +1,132 @@ +#---------------------------------------------------------- +# Concurrency check for instrumentation of stored programs +#---------------------------------------------------------- + + +--source include/big_test.inc +--source include/not_embedded.inc +--source include/have_perfschema.inc +--source include/no_protocol.inc + +TRUNCATE TABLE performance_schema.events_statements_summary_by_program; +TRUNCATE TABLE performance_schema.events_statements_history; + +--echo # concurrency check through multi connections + +# Save the initial number of concurrent sessions +--source include/count_sessions.inc + +CREATE DATABASE db1; +CREATE DATABASE db2; +CREATE DATABASE db3; + +# connection 1 +connect (con1,localhost,root,,db1); + +USE db1; + +CREATE TABLE t1( + i INT NOT NULL +); + +LOAD DATA INFILE '../../std_data/wl5766_data.txt' INTO TABLE t1; + +DELIMITER |; +CREATE PROCEDURE proc() +BEGIN + INSERT INTO t1 SELECT * FROM t1; +END| +DELIMITER ;| + +--send CALL proc(); + +# connection 2 +connect (con2,localhost,root,,db2); + +USE db2; + +CREATE TABLE t2( + i INT NOT NULL +); + +LOAD DATA INFILE '../../std_data/wl5766_data.txt' INTO TABLE t2; +DELIMITER |; +CREATE FUNCTION addition(x INT, y INT) RETURNS INT +BEGIN + INSERT INTO t2 SELECT * FROM t2; + RETURN x+y; +END| +DELIMITER ;| + +--send SELECT addition(1234,9876); + +# connection 3 +connect (con3,localhost,root,,db3); + +USE db3; + +CREATE TABLE t( + i INT NOT NULL, + j INT +); + +CREATE TABLE t3( + i INT NOT NULL +); + +LOAD DATA INFILE '../../std_data/wl5766_data.txt' INTO TABLE t3; +INSERT INTO t VALUES ( 10,1000 ); +CREATE TRIGGER trg AFTER INSERT ON t FOR EACH ROW + INSERT INTO t3 SELECT * FROM t3; + +--send INSERT INTO t VALUES ( 20,2000); + +connection con1; +--reap; + +connection con2; +--reap; + +connection con3; +--reap; + +connection default; + +--let $wait_condition=select count(*)=3 from information_schema.processlist where command='sleep'; +--source include/wait_condition.inc + +SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS + FROM performance_schema.events_statements_summary_by_program + WHERE OBJECT_SCHEMA='db1' OR OBJECT_SCHEMA='db2' OR OBJECT_SCHEMA='db3' + ORDER BY OBJECT_SCHEMA, OBJECT_NAME; + +SELECT EVENT_NAME, SQL_TEXT, CURRENT_SCHEMA, OBJECT_TYPE, OBJECT_SCHEMA, + OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL FROM + performance_schema.events_statements_history WHERE CURRENT_SCHEMA='db1' + OR CURRENT_SCHEMA='db2' OR CURRENT_SCHEMA='db3' + ORDER BY CURRENT_SCHEMA, OBJECT_NAME; + +TRUNCATE TABLE performance_schema.events_statements_summary_by_program; +TRUNCATE TABLE performance_schema.events_statements_history; + +--echo # Clean-up + +DROP PROCEDURE db1.proc; +DROP FUNCTION db2.addition; +DROP TRIGGER db3.trg; + +DROP TABLE db1.t1; +DROP TABLE db2.t2; +DROP TABLE db3.t3; +DROP TABLE db3.t; + +DROP DATABASE db1; +DROP DATABASE db2; +DROP DATABASE db3; + +disconnect con1; +disconnect con2; +disconnect con3; + +# Wait till all disconnects are completed +--source include/wait_until_count_sessions.inc |