mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
perfschema sysvar instrumentation related changes
incomplete. locking issues
This commit is contained in:
@ -43,6 +43,7 @@
|
|||||||
|
|
||||||
static HASH system_variable_hash;
|
static HASH system_variable_hash;
|
||||||
static PolyLock_mutex PLock_global_system_variables(&LOCK_global_system_variables);
|
static PolyLock_mutex PLock_global_system_variables(&LOCK_global_system_variables);
|
||||||
|
static ulonglong system_variable_hash_version= 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return variable name and length for hashing of variables.
|
Return variable name and length for hashing of variables.
|
||||||
@ -584,6 +585,8 @@ int mysql_add_sys_var_chain(sys_var *first)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Update system_variable_hash version. */
|
||||||
|
system_variable_hash_version++;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
@ -614,6 +617,8 @@ int mysql_del_sys_var_chain(sys_var *first)
|
|||||||
result|= my_hash_delete(&system_variable_hash, (uchar*) var);
|
result|= my_hash_delete(&system_variable_hash, (uchar*) var);
|
||||||
mysql_prlock_unlock(&LOCK_system_variables_hash);
|
mysql_prlock_unlock(&LOCK_system_variables_hash);
|
||||||
|
|
||||||
|
/* Update system_variable_hash version. */
|
||||||
|
system_variable_hash_version++;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -624,6 +629,16 @@ static int show_cmp(SHOW_VAR *a, SHOW_VAR *b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Number of records in the system_variable_hash.
|
||||||
|
Requires lock on LOCK_system_variables_hash.
|
||||||
|
*/
|
||||||
|
ulong get_system_variable_hash_records(void)
|
||||||
|
{
|
||||||
|
return system_variable_hash.records;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructs an array of system variables for display to the user.
|
Constructs an array of system variables for display to the user.
|
||||||
|
|
||||||
@ -1504,3 +1519,13 @@ pretty_print_engine_list(THD *thd, plugin_ref *list)
|
|||||||
*pos= '\0';
|
*pos= '\0';
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Current version of the system_variable_hash.
|
||||||
|
Requires lock on LOCK_system_variables_hash.
|
||||||
|
*/
|
||||||
|
ulonglong get_system_variable_hash_version(void)
|
||||||
|
{
|
||||||
|
return system_variable_hash_version;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -404,6 +404,8 @@ extern SHOW_COMP_OPTION have_openssl;
|
|||||||
/*
|
/*
|
||||||
Prototypes for helper functions
|
Prototypes for helper functions
|
||||||
*/
|
*/
|
||||||
|
ulong get_system_variable_hash_records(void);
|
||||||
|
ulonglong get_system_variable_hash_version(void);
|
||||||
|
|
||||||
SHOW_VAR* enumerate_sys_vars(THD *thd, bool sorted, enum enum_var_type type);
|
SHOW_VAR* enumerate_sys_vars(THD *thd, bool sorted, enum enum_var_type type);
|
||||||
int fill_sysvars(THD *thd, TABLE_LIST *tables, COND *cond);
|
int fill_sysvars(THD *thd, TABLE_LIST *tables, COND *cond);
|
||||||
|
@ -960,6 +960,10 @@ typedef struct system_status_var
|
|||||||
#define last_system_status_var questions
|
#define last_system_status_var questions
|
||||||
#define last_cleared_system_status_var local_memory_used
|
#define last_cleared_system_status_var local_memory_used
|
||||||
|
|
||||||
|
/* Number of contiguous global status variables. */
|
||||||
|
const int COUNT_GLOBAL_STATUS_VARS= (offsetof(STATUS_VAR, last_system_status_var) /
|
||||||
|
sizeof(ulong)) + 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Global status variables
|
Global status variables
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user