summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/perfschema/include/transaction_setup.inc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/perfschema/include/transaction_setup.inc
parentInitial commit. (diff)
downloadmariadb-upstream.tar.xz
mariadb-upstream.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/perfschema/include/transaction_setup.inc')
-rw-r--r--mysql-test/suite/perfschema/include/transaction_setup.inc231
1 files changed, 231 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/include/transaction_setup.inc b/mysql-test/suite/perfschema/include/transaction_setup.inc
new file mode 100644
index 00000000..78697425
--- /dev/null
+++ b/mysql-test/suite/perfschema/include/transaction_setup.inc
@@ -0,0 +1,231 @@
+# Tests for the performance schema
+
+# ==========================================
+# HELPER include/transaction_setup.inc
+# ==========================================
+
+#
+# UTILITY QUERIES
+#
+let $get_thread_id=
+ SELECT thread_id INTO @my_thread_id
+ FROM performance_schema.threads
+ WHERE processlist_id = connection_id();
+
+let $disable_instruments=
+ UPDATE performance_schema.setup_instruments
+ SET enabled='no', timed='no'
+ WHERE name IN ('transaction');
+
+let $enable_instruments=
+ UPDATE performance_schema.setup_instruments
+ SET enabled='yes', timed='yes'
+ WHERE name IN ('transaction');
+
+let $def_count = -1;
+
+--disable_warnings
+DROP PROCEDURE IF EXISTS clear_transaction_tables;
+--enable_warnings
+
+--disable_result_log
+
+DELIMITER $$;
+CREATE PROCEDURE clear_transaction_tables()
+BEGIN
+ truncate table performance_schema.events_transactions_current;
+ truncate table performance_schema.events_transactions_history;
+ truncate table performance_schema.events_transactions_history_long;
+ truncate table performance_schema.events_transactions_summary_by_thread_by_event_name;
+ truncate table performance_schema.events_transactions_summary_by_account_by_event_name;
+ truncate table performance_schema.events_transactions_summary_by_host_by_event_name;
+ truncate table performance_schema.events_transactions_summary_by_user_by_event_name;
+ truncate table performance_schema.events_transactions_summary_global_by_event_name;
+END$$
+
+CREATE PROCEDURE clear_transaction_history()
+BEGIN
+ truncate table performance_schema.events_transactions_current;
+ truncate table performance_schema.events_transactions_history;
+ truncate table performance_schema.events_transactions_history_long;
+END$$
+
+CREATE PROCEDURE clear_statement_history()
+BEGIN
+ truncate table performance_schema.events_statements_current;
+ truncate table performance_schema.events_statements_history;
+ truncate table performance_schema.events_statements_history_long;
+END$$
+
+CREATE PROCEDURE clear_history()
+BEGIN
+ truncate table performance_schema.events_statements_current;
+ truncate table performance_schema.events_statements_history;
+ truncate table performance_schema.events_statements_history_long;
+ truncate table performance_schema.events_transactions_current;
+ truncate table performance_schema.events_transactions_history;
+ truncate table performance_schema.events_transactions_history_long;
+END$$
+
+CREATE PROCEDURE transaction_verifier(IN i_table INT,
+ IN i_thread_id INT,
+ IN i_event_name VARCHAR(64),
+ IN i_state VARCHAR(32),
+ IN i_xid_format_id INT,
+ IN i_xid_gtrid VARCHAR(130),
+ IN i_xid_bqual VARCHAR(130),
+ IN i_xa_state VARCHAR(64),
+ IN i_gtid VARCHAR(64),
+ IN i_access_mode VARCHAR(32),
+ IN i_isolation_level VARCHAR(64),
+ IN i_autocommit VARCHAR(16),
+ IN i_savepoints INT,
+ IN i_rb_savepoint INT,
+ IN i_rel_savepoint INT,
+ IN i_expected INT)
+BEGIN
+ DECLARE table_name VARCHAR(64);
+ SET @thread_id = i_thread_id;
+ SET @event_id = 0;
+ SET @event_name = i_event_name;
+ SET @state = i_state;
+ SET @xid_format_id = i_xid_format_id;
+ SET @xid_gtrid = i_xid_gtrid;
+ SET @xid_bqual = i_xid_bqual;
+ SET @xa_state = i_xa_state;
+ SET @gtid = i_gtid;
+ SET @access_mode = i_access_mode;
+ SET @isolation_level = i_isolation_level;
+ SET @autocommit = i_autocommit;
+ SET @savepoints = i_savepoints;
+ SET @rb_savepoint = i_rb_savepoint;
+ SET @rel_savepoint = i_rel_savepoint;
+ SET @expected = i_expected;
+
+ #
+ # Build verification query based upon input parameters
+ #
+
+ IF i_table = 0 THEN
+ SET table_name = 'performance_schema.events_transactions_current';
+ ELSEIF i_table = 1 THEN
+ SET table_name = 'performance_schema.events_transactions_history';
+ ELSEIF i_table = 2 THEN
+ SET table_name = 'performance_schema.events_transactions_history_long';
+ ELSE
+ SET table_name = 'performance_schema.events_transactions_history';
+ END IF;
+
+ SET @query = CONCAT('SELECT COUNT(*) INTO @actual FROM ', table_name, ' WHERE');
+
+ IF i_thread_id != 0 THEN
+ SET @query = CONCAT(@query, ' (thread_id = @thread_id)');
+ END IF;
+ IF i_event_name != '' THEN
+ SET @query = CONCAT(@query, ' AND (event_name = @event_name)');
+ END IF;
+ IF i_state != '' THEN
+ SET @query = CONCAT(@query, ' AND (state = @state)');
+ END IF;
+ IF i_xid_format_id != '' THEN
+ SET @query = CONCAT(@query, ' AND (xid_format_id = @xid_format_id)');
+ END IF;
+ IF i_xid_gtrid != '' THEN
+ SET @query = CONCAT(@query, ' AND (xid_gtrid = @xid_gtrid)');
+ END IF;
+ IF i_xid_bqual != '' THEN
+ SET @query = CONCAT(@query, ' AND (xid_bqual = @xid_bqual)');
+ END IF;
+ IF i_xa_state != '' THEN
+ SET @query = CONCAT(@query, ' AND (xa_state = @xa_state)');
+ END IF;
+ IF i_gtid = 'NULL' THEN
+ SET @query = CONCAT(@query, ' AND (gtid IS NULL)');
+ ELSEIF i_gtid != '' THEN
+ SET @query = CONCAT(@query, ' AND (gtid = @gtid)');
+ END IF;
+ IF i_access_mode != '' THEN
+ SET @query = CONCAT(@query, ' AND (access_mode = @access_mode)');
+ END IF;
+ IF i_isolation_level != '' THEN
+ SET @query = CONCAT(@query, ' AND (isolation_level = @isolation_level)');
+ END IF;
+ IF i_autocommit != '' THEN
+ SET @query = CONCAT(@query, ' AND (autocommit = @autocommit)');
+ END IF;
+ IF i_savepoints != 0 THEN
+ SET @query = CONCAT(@query, ' AND (number_of_savepoints = @savepoints)');
+ END IF;
+ IF i_rb_savepoint != 0 THEN
+ SET @query = CONCAT(@query, ' AND (number_of_rollback_to_savepoint = @rb_savepoint)');
+ END IF;
+ IF i_rel_savepoint != 0 THEN
+ SET @query = CONCAT(@query, ' AND (number_of_release_savepoint = @rel_savepoint)');
+ END IF;
+
+ SET @query = CONCAT(@query, ' ORDER BY event_id;');
+
+ ## DEBUG ## SELECT * FROM performance_schema.events_transactions_history ORDER BY event_id;
+ ## SELECT @query AS "QUERY";
+ PREPARE stmt1 FROM @query;
+ EXECUTE stmt1;
+ DEALLOCATE PREPARE stmt1;
+
+ SELECT LPAD(@actual, 6, ' ') AS "ACTUAL", LPAD(@expected, 8, ' ') AS "EXPECTED";
+
+ IF @actual != @expected THEN
+ SELECT "" AS "ERROR: Row count mismatch";
+ SELECT @query AS "VERIFIER QUERY:";
+ SELECT "";
+
+ SET @columns = ' LPAD(@thread_id, 9, " ") AS thread_id,';
+ SET @columns = CONCAT(@columns, ' LPAD(@event_id, 10, " ") AS "..event_id",');
+ SET @columns = CONCAT(@columns, ' RPAD(@event_name, 11, " ") AS "event_name ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@state, 11, " ") AS "state ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@xid_format_id, 15, " ") AS "xid_format_id ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@xid_gtrid, 15, " ") AS "xid_gtrid ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@xid_bqual, 15, " ") AS "xid_bqual ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@xa_state, 12, " ") AS "xa_state ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@gtid, 38, " ") AS "gtid ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@access_mode, 11, " ") AS access_mode,');
+ SET @columns = CONCAT(@columns, ' RPAD(@isolation_level, 16, " ") AS "isolation_level ",');
+ SET @columns = CONCAT(@columns, ' RPAD(@autocommit, 10, " ") AS autocommit,');
+ SET @columns = CONCAT(@columns, ' LPAD(@savepoints, 10, " ") AS savepoints,');
+ SET @columns = CONCAT(@columns, ' LPAD(@rb_savepoint, 21, " ") AS rollback_to_savepoint,');
+ SET @columns = CONCAT(@columns, ' LPAD(@rel_savepoint, 17, " ") AS release_savepoint');
+ SET @query2 = CONCAT('SELECT', ' LPAD(@expected, 13, " ") AS ROWS_EXPECTED, ', @columns, ';');
+# SET @query2 = CONCAT('SELECT " " AS EXPECTED, ', @columns, ';');
+ PREPARE stmt2 FROM @query2;
+ EXECUTE stmt2;
+ DEALLOCATE PREPARE stmt2;
+
+ SET @columns = ' LPAD(thread_id, 9, " ") AS thread_id,';
+ SET @columns = CONCAT(@columns, ' LPAD(event_id, 10, " ") AS "..event_id",');
+ SET @columns = CONCAT(@columns, ' RPAD(event_name, 11, " ") AS "event_name ",');
+ SET @columns = CONCAT(@columns, ' RPAD(state, 11, " ") AS "state ",');
+ SET @columns = CONCAT(@columns, ' RPAD(IFNULL(xid_format_id, "NULL"), 15, " ") AS "xid_format_id ",');
+ SET @columns = CONCAT(@columns, ' RPAD(IFNULL(xid_gtrid, "NULL"), 15, " ") AS "xid_gtrid ",');
+ SET @columns = CONCAT(@columns, ' RPAD(IFNULL(xid_bqual, "NULL"), 15, " ") AS "xid_bqual ",');
+ SET @columns = CONCAT(@columns, ' RPAD(IFNULL(xa_state, "NULL"), 12, " ") AS "xa_state ",');
+ SET @columns = CONCAT(@columns, ' RPAD(IFNULL(gtid, "NULL"), 38, " ") AS "gtid ",');
+ SET @columns = CONCAT(@columns, ' RPAD(access_mode, 11, " ") AS access_mode,');
+ SET @columns = CONCAT(@columns, ' RPAD(isolation_level, 16, " ") AS "isolation_level ",');
+ SET @columns = CONCAT(@columns, ' RPAD(autocommit, 10, " ") AS autocommit,');
+ SET @columns = CONCAT(@columns, ' LPAD(number_of_savepoints, 10, " ") AS savepoints,');
+ SET @columns = CONCAT(@columns, ' LPAD(number_of_rollback_to_savepoint, 21, " ") AS rollback_to_savepoint,');
+ SET @columns = CONCAT(@columns, ' LPAD(number_of_release_savepoint, 17, " ") AS release_savepoint');
+# SET @query3 = CONCAT('SELECT " " AS "ACTUAL ", ', @columns, ' FROM ', table_name, ' ORDER BY event_id;');
+ SET @query3 = CONCAT('SELECT', ' LPAD(@actual, 13, " ") AS "ROWS_ACTUAL ",', @columns, ' FROM ', table_name, ' ORDER BY event_id;');
+ PREPARE stmt3 FROM @query3;
+ EXECUTE stmt3;
+ DEALLOCATE PREPARE stmt3;
+
+ END IF;
+END$$
+
+DELIMITER ;$$
+
+--enable_result_log
+
+
+