summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/perfschema/t/statement_program_concurrency.test
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:07:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:07:14 +0000
commita175314c3e5827eb193872241446f2f8f5c9d33c (patch)
treecd3d60ca99ae00829c52a6ca79150a5b6e62528b /mysql-test/suite/perfschema/t/statement_program_concurrency.test
parentInitial commit. (diff)
downloadmariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.tar.xz
mariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.zip
Adding upstream version 1:10.5.12.upstream/1%10.5.12upstream
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.test130
1 files changed, 130 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..75261254
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/statement_program_concurrency.test
@@ -0,0 +1,130 @@
+#----------------------------------------------------------
+# 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;
+--source include/wait_until_connected_again.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