1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-33145 Add FLUSH GLOBAL STATUS

- FLUSH GLOBAL STATUS now resets most global_status_vars.
  At this stage, this is mainly to be used for testing.
- FLUSH SESSION STATUS added as an alias for FLUSH STATUS.
- FLUSH STATUS does not require any privilege (before required RELOAD).
- FLUSH GLOBAL STATUS requires RELOAD privilege.
- All global status reset moved to FLUSH GLOBAL STATUS.
- Replication semisync status variables are now reset by
  FLUSH GLOBAL STATUS.
- In test cases, the only changes are:
  - Replace FLUSH STATUS with FLUSH GLOBAL STATUS
  - Replace FLUSH STATUS with FLUSH STATUS; FLUSH GLOBAL STATUS.
    This was only done in a few tests where the test was using SHOW STATUS
    for both local and global variables.
- Uptime_since_flush_status is now always provided, independent if
  ENABLED_PROFILING is enabled when compiling MariaDB.
- @@global.Uptime_since_flush_status is reset on FLUSH GLOBAL STATUS
  and @@session.Uptime_since_flush_status is reset on FLUSH SESSION STATUS.
- When connected, @@session.Uptime_since_flush_status is set to 0.
This commit is contained in:
Monty
2023-12-31 16:23:04 +02:00
committed by Sergei Golubchik
parent d2b39a2c82
commit 775cba4d0f
325 changed files with 787 additions and 525 deletions

View File

@ -2183,7 +2183,8 @@ dispatch_command_return dispatch_command(enum enum_server_command command, THD *
if (trans_commit_implicit(thd))
break;
thd->release_transactional_locks();
if (check_global_access(thd,RELOAD_ACL))
if ((options & ~REFRESH_SESSION_STATUS) &&
check_global_access(thd,RELOAD_ACL))
break;
general_log_print(thd, command, NullS);
#ifndef DBUG_OFF
@ -5237,7 +5238,8 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
case SQLCOM_FLUSH:
{
int write_to_binlog;
if (check_global_access(thd,RELOAD_ACL))
if ((lex->type & ~REFRESH_SESSION_STATUS) &&
check_global_access(thd,RELOAD_ACL))
goto error;
if (first_table && lex->type & (REFRESH_READ_LOCK|REFRESH_FOR_EXPORT))
@ -5275,7 +5277,8 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
#ifdef HAVE_QUERY_CACHE
REFRESH_QUERY_CACHE_FREE |
#endif /* HAVE_QUERY_CACHE */
REFRESH_STATUS |
REFRESH_SESSION_STATUS |
REFRESH_GLOBAL_STATUS |
REFRESH_USER_RESOURCES))
{
WSREP_TO_ISOLATION_BEGIN_WRTCHK(WSREP_MYSQL_DB, NULL, NULL);