1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 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
|