diff --git a/mysql-test/suite/perfschema/r/alter_table_progress.result b/mysql-test/suite/perfschema/r/alter_table_progress.result index 9776e65..2a8b1d3 100644 --- a/mysql-test/suite/perfschema/r/alter_table_progress.result +++ b/mysql-test/suite/perfschema/r/alter_table_progress.result @@ -68,9 +68,18 @@ stage/sql/After create NULL NULL stage/sql/System lock NULL NULL stage/sql/copy to tmp table 5 5 stage/sql/rename result table NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL +stage/sql/waiting for commit NULL NULL stage/sql/end NULL NULL stage/sql/query end NULL NULL stage/sql/closing tables NULL NULL +stage/sql/waiting for commit NULL NULL stage/sql/freeing items NULL NULL stage/sql/cleaning up NULL NULL SET DEBUG_SYNC='RESET'; diff --git a/sql/handler.cc b/sql/handler.cc index 59b242ef..98365af 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1684,6 +1684,9 @@ int ha_commit_trans(THD *thd, bool all, bool ignore_global_read_lock) int error= 0; bool need_clear_owned_gtid= false; bool run_slave_post_commit= false; + + THD_STAGE_INFO(thd, stage_waiting_for_commit); + /* Save transaction owned gtid into table before transaction prepare if binlog is disabled, or binlog is enabled and log_slave_updates diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 366f900..5094187 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -10637,6 +10637,7 @@ PSI_stage_info stage_updating_reference_tables= { 0, "updating reference tables" PSI_stage_info stage_upgrading_lock= { 0, "upgrading lock", 0, PSI_DOCUMENT_ME}; PSI_stage_info stage_user_sleep= { 0, "User sleep", 0, PSI_DOCUMENT_ME}; PSI_stage_info stage_verifying_table= { 0, "verifying table", 0, PSI_DOCUMENT_ME}; +PSI_stage_info stage_waiting_for_commit= { 0, "waiting for commit", 0, PSI_DOCUMENT_ME}; PSI_stage_info stage_waiting_for_gtid_to_be_committed= { 0, "Waiting for GTID to be committed", 0, PSI_DOCUMENT_ME}; PSI_stage_info stage_waiting_for_handler_insert= { 0, "waiting for handler insert", 0, PSI_DOCUMENT_ME}; PSI_stage_info stage_waiting_for_handler_lock= { 0, "waiting for handler lock", 0, PSI_DOCUMENT_ME}; @@ -10749,6 +10750,7 @@ PSI_stage_info *all_server_stages[]= & stage_upgrading_lock, & stage_user_sleep, & stage_verifying_table, + & stage_waiting_for_commit, & stage_waiting_for_gtid_to_be_committed, & stage_waiting_for_handler_insert, & stage_waiting_for_handler_lock, diff --git a/sql/mysqld.h b/sql/mysqld.h index 4373b9d..88a62a1 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -656,6 +656,7 @@ extern PSI_stage_info stage_updating_reference_tables; extern PSI_stage_info stage_upgrading_lock; extern PSI_stage_info stage_user_sleep; extern PSI_stage_info stage_verifying_table; +extern PSI_stage_info stage_waiting_for_commit; extern PSI_stage_info stage_waiting_for_gtid_to_be_committed; extern PSI_stage_info stage_waiting_for_handler_insert; extern PSI_stage_info stage_waiting_for_handler_lock; diff --git a/sql/sql_class.h b/sql/sql_class.h index 742250d..a4f2857 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1259,7 +1259,7 @@ public: { m_catalog= catalog; } private: - unsigned int m_current_stage_key; + unsigned int m_current_stage_key = 0; public: void enter_stage(const PSI_stage_info *stage,