mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
WL#3823 Modify VARIABLE_VALUE columns to VARCHAR within INFORMATION_SCHEMA STATUS tables
This commit is contained in:
@ -3,7 +3,7 @@ Variable_name Value
|
|||||||
Compression ON
|
Compression ON
|
||||||
select * from information_schema.session_status where variable_name= 'COMPRESSION';
|
select * from information_schema.session_status where variable_name= 'COMPRESSION';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
COMPRESSION 1.0000000
|
COMPRESSION ON
|
||||||
drop table if exists t1,t2,t3,t4;
|
drop table if exists t1,t2,t3,t4;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
|
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
|
||||||
|
@ -761,7 +761,6 @@ information_schema COLUMNS COLUMN_DEFAULT
|
|||||||
information_schema COLUMNS COLUMN_TYPE
|
information_schema COLUMNS COLUMN_TYPE
|
||||||
information_schema EVENTS EVENT_DEFINITION
|
information_schema EVENTS EVENT_DEFINITION
|
||||||
information_schema EVENTS SQL_MODE
|
information_schema EVENTS SQL_MODE
|
||||||
information_schema GLOBAL_VARIABLES VARIABLE_VALUE
|
|
||||||
information_schema PARTITIONS PARTITION_EXPRESSION
|
information_schema PARTITIONS PARTITION_EXPRESSION
|
||||||
information_schema PARTITIONS SUBPARTITION_EXPRESSION
|
information_schema PARTITIONS SUBPARTITION_EXPRESSION
|
||||||
information_schema PARTITIONS PARTITION_DESCRIPTION
|
information_schema PARTITIONS PARTITION_DESCRIPTION
|
||||||
@ -769,7 +768,6 @@ information_schema PLUGINS PLUGIN_DESCRIPTION
|
|||||||
information_schema PROCESSLIST INFO
|
information_schema PROCESSLIST INFO
|
||||||
information_schema ROUTINES ROUTINE_DEFINITION
|
information_schema ROUTINES ROUTINE_DEFINITION
|
||||||
information_schema ROUTINES SQL_MODE
|
information_schema ROUTINES SQL_MODE
|
||||||
information_schema SESSION_VARIABLES VARIABLE_VALUE
|
|
||||||
information_schema TRIGGERS ACTION_CONDITION
|
information_schema TRIGGERS ACTION_CONDITION
|
||||||
information_schema TRIGGERS ACTION_STATEMENT
|
information_schema TRIGGERS ACTION_STATEMENT
|
||||||
information_schema TRIGGERS SQL_MODE
|
information_schema TRIGGERS SQL_MODE
|
||||||
|
@ -73,8 +73,8 @@ variable_name LIKE 'SSL_CALLBACK_CACHE_HITS';
|
|||||||
END$$
|
END$$
|
||||||
SELECT variable_name, variable_value FROM thread_status;
|
SELECT variable_name, variable_value FROM thread_status;
|
||||||
variable_name variable_value
|
variable_name variable_value
|
||||||
SSL_ACCEPTS 0.0000000
|
SSL_ACCEPTS 0
|
||||||
SSL_CALLBACK_CACHE_HITS 0.0000000
|
SSL_CALLBACK_CACHE_HITS 0
|
||||||
DROP TABLE thread_status;
|
DROP TABLE thread_status;
|
||||||
SET GLOBAL event_scheduler=0;
|
SET GLOBAL event_scheduler=0;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -19,7 +19,7 @@ Variable_name Value
|
|||||||
Slave_running ON
|
Slave_running ON
|
||||||
select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING';
|
select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
SLAVE_RUNNING 1.0000000
|
SLAVE_RUNNING ON
|
||||||
drop database DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
|
drop database DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
|
||||||
SET @@global.max_allowed_packet=4096;
|
SET @@global.max_allowed_packet=4096;
|
||||||
SET @@global.net_buffer_length=4096;
|
SET @@global.net_buffer_length=4096;
|
||||||
|
@ -5,8 +5,8 @@ Table_locks_immediate 0
|
|||||||
Table_locks_waited 0
|
Table_locks_waited 0
|
||||||
select * from information_schema.session_status where variable_name like 'Table_lock%';
|
select * from information_schema.session_status where variable_name like 'Table_lock%';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
TABLE_LOCKS_IMMEDIATE 0.0000000
|
TABLE_LOCKS_IMMEDIATE 0
|
||||||
TABLE_LOCKS_WAITED 0.0000000
|
TABLE_LOCKS_WAITED 0
|
||||||
SET SQL_LOG_BIN=0;
|
SET SQL_LOG_BIN=0;
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1(n int) engine=myisam;
|
create table t1(n int) engine=myisam;
|
||||||
@ -22,8 +22,8 @@ Table_locks_immediate 3
|
|||||||
Table_locks_waited 1
|
Table_locks_waited 1
|
||||||
select * from information_schema.session_status where variable_name like 'Table_lock%';
|
select * from information_schema.session_status where variable_name like 'Table_lock%';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
TABLE_LOCKS_IMMEDIATE 3.0000000
|
TABLE_LOCKS_IMMEDIATE 3
|
||||||
TABLE_LOCKS_WAITED 1.0000000
|
TABLE_LOCKS_WAITED 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select 1;
|
select 1;
|
||||||
1
|
1
|
||||||
@ -63,7 +63,7 @@ Variable_name Value
|
|||||||
Max_used_connections 1
|
Max_used_connections 1
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
MAX_USED_CONNECTIONS 1.0000000
|
MAX_USED_CONNECTIONS 1
|
||||||
SET @save_thread_cache_size=@@thread_cache_size;
|
SET @save_thread_cache_size=@@thread_cache_size;
|
||||||
SET GLOBAL thread_cache_size=3;
|
SET GLOBAL thread_cache_size=3;
|
||||||
SHOW STATUS LIKE 'max_used_connections';
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
@ -71,26 +71,26 @@ Variable_name Value
|
|||||||
Max_used_connections 3
|
Max_used_connections 3
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
MAX_USED_CONNECTIONS 3.0000000
|
MAX_USED_CONNECTIONS 3
|
||||||
FLUSH STATUS;
|
FLUSH STATUS;
|
||||||
SHOW STATUS LIKE 'max_used_connections';
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Max_used_connections 2
|
Max_used_connections 2
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
MAX_USED_CONNECTIONS 2.0000000
|
MAX_USED_CONNECTIONS 2
|
||||||
SHOW STATUS LIKE 'max_used_connections';
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Max_used_connections 3
|
Max_used_connections 3
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
MAX_USED_CONNECTIONS 3.0000000
|
MAX_USED_CONNECTIONS 3
|
||||||
SHOW STATUS LIKE 'max_used_connections';
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Max_used_connections 4
|
Max_used_connections 4
|
||||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
MAX_USED_CONNECTIONS 4.0000000
|
MAX_USED_CONNECTIONS 4
|
||||||
SET GLOBAL thread_cache_size=@save_thread_cache_size;
|
SET GLOBAL thread_cache_size=@save_thread_cache_size;
|
||||||
show status like 'com_show_status';
|
show status like 'com_show_status';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
|
@ -9133,8 +9133,7 @@ Field *create_tmp_field_for_schema(THD *thd, Item *item, TABLE *table)
|
|||||||
if (item->field_type() == MYSQL_TYPE_VARCHAR)
|
if (item->field_type() == MYSQL_TYPE_VARCHAR)
|
||||||
{
|
{
|
||||||
Field *field;
|
Field *field;
|
||||||
if (item->max_length > MAX_FIELD_VARCHARLENGTH /
|
if (item->max_length > MAX_FIELD_VARCHARLENGTH)
|
||||||
item->collation.collation->mbmaxlen)
|
|
||||||
field= new Field_blob(item->max_length, item->maybe_null,
|
field= new Field_blob(item->max_length, item->maybe_null,
|
||||||
item->name, item->collation.collation);
|
item->name, item->collation.collation);
|
||||||
else
|
else
|
||||||
|
248
sql/sql_show.cc
248
sql/sql_show.cc
@ -4516,9 +4516,19 @@ int fill_variables(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
int res= 0;
|
int res= 0;
|
||||||
LEX *lex= thd->lex;
|
LEX *lex= thd->lex;
|
||||||
const char *wild= lex->wild ? lex->wild->ptr() : NullS;
|
const char *wild= lex->wild ? lex->wild->ptr() : NullS;
|
||||||
|
enum enum_schema_tables schema_table_idx=
|
||||||
|
get_schema_table_idx(tables->schema_table);
|
||||||
|
enum enum_var_type option_type= OPT_SESSION;
|
||||||
|
bool upper_case_names= (schema_table_idx != SCH_VARIABLES);
|
||||||
|
bool sorted_vars= (schema_table_idx == SCH_VARIABLES);
|
||||||
|
|
||||||
|
if (lex->option_type == OPT_GLOBAL ||
|
||||||
|
schema_table_idx == SCH_GLOBAL_VARIABLES)
|
||||||
|
option_type= OPT_GLOBAL;
|
||||||
|
|
||||||
rw_rdlock(&LOCK_system_variables_hash);
|
rw_rdlock(&LOCK_system_variables_hash);
|
||||||
res= show_status_array(thd, wild, enumerate_sys_vars(thd, TRUE),
|
res= show_status_array(thd, wild, enumerate_sys_vars(thd, sorted_vars),
|
||||||
lex->option_type, 0, "", tables->table, 0);
|
option_type, NULL, "", tables->table, upper_case_names);
|
||||||
rw_unlock(&LOCK_system_variables_hash);
|
rw_unlock(&LOCK_system_variables_hash);
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
@ -4530,16 +4540,34 @@ int fill_status(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
LEX *lex= thd->lex;
|
LEX *lex= thd->lex;
|
||||||
const char *wild= lex->wild ? lex->wild->ptr() : NullS;
|
const char *wild= lex->wild ? lex->wild->ptr() : NullS;
|
||||||
int res= 0;
|
int res= 0;
|
||||||
STATUS_VAR tmp;
|
STATUS_VAR *tmp1, tmp;
|
||||||
|
enum enum_schema_tables schema_table_idx=
|
||||||
|
get_schema_table_idx(tables->schema_table);
|
||||||
|
enum enum_var_type option_type;
|
||||||
|
bool upper_case_names= (schema_table_idx != SCH_STATUS);
|
||||||
|
|
||||||
|
if (lex->option_type == OPT_GLOBAL ||
|
||||||
|
schema_table_idx == SCH_GLOBAL_STATUS)
|
||||||
|
{
|
||||||
|
option_type= OPT_GLOBAL;
|
||||||
|
tmp1= &tmp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
option_type= OPT_SESSION;
|
||||||
|
if (schema_table_idx == SCH_SESSION_STATUS)
|
||||||
|
tmp1= &thd->status_var;
|
||||||
|
else
|
||||||
|
tmp1= thd->initial_status_var;
|
||||||
|
}
|
||||||
|
|
||||||
pthread_mutex_lock(&LOCK_status);
|
pthread_mutex_lock(&LOCK_status);
|
||||||
if (lex->option_type == OPT_GLOBAL)
|
if (option_type == OPT_GLOBAL)
|
||||||
calc_sum_of_all_status(&tmp);
|
calc_sum_of_all_status(&tmp);
|
||||||
res= show_status_array(thd, wild,
|
res= show_status_array(thd, wild,
|
||||||
(SHOW_VAR *)all_status_vars.buffer,
|
(SHOW_VAR *)all_status_vars.buffer,
|
||||||
OPT_GLOBAL,
|
option_type, tmp1, "", tables->table,
|
||||||
(lex->option_type == OPT_GLOBAL ?
|
upper_case_names);
|
||||||
&tmp: thd->initial_status_var),
|
|
||||||
"", tables->table, 0);
|
|
||||||
pthread_mutex_unlock(&LOCK_status);
|
pthread_mutex_unlock(&LOCK_status);
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
@ -4782,12 +4810,10 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
|
|||||||
/* Don't let unimplemented types pass through. Could be a grave error. */
|
/* Don't let unimplemented types pass through. Could be a grave error. */
|
||||||
DBUG_ASSERT(fields_info->field_type == MYSQL_TYPE_STRING);
|
DBUG_ASSERT(fields_info->field_type == MYSQL_TYPE_STRING);
|
||||||
|
|
||||||
/* this should be changed when Item_empty_string is fixed(in 4.1) */
|
if (!(item= new Item_empty_string("", fields_info->field_length, cs)))
|
||||||
if (!(item= new Item_empty_string("", 0, cs)))
|
|
||||||
{
|
{
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
item->max_length= fields_info->field_length * cs->mbmaxlen;
|
|
||||||
item->set_name(fields_info->field_name,
|
item->set_name(fields_info->field_name,
|
||||||
strlen(fields_info->field_name), cs);
|
strlen(fields_info->field_name), cs);
|
||||||
break;
|
break;
|
||||||
@ -5228,172 +5254,6 @@ int fill_schema_files(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int fill_schema_status(THD *thd, SHOW_VAR *variables,
|
|
||||||
struct system_status_var *status_var,
|
|
||||||
const char *prefix, TABLE *table)
|
|
||||||
{
|
|
||||||
SHOW_VAR tmp, *var;
|
|
||||||
SHOW_TYPE show_type;
|
|
||||||
LEX_STRING null_lex_str;
|
|
||||||
char buff[SHOW_VAR_FUNC_BUFF_SIZE];
|
|
||||||
char name_buf[64], *name_pos;
|
|
||||||
int name_len;
|
|
||||||
DBUG_ENTER("fill_schema_status");
|
|
||||||
|
|
||||||
null_lex_str.str= 0;
|
|
||||||
null_lex_str.length= 0;
|
|
||||||
|
|
||||||
name_pos= strnmov(name_buf, prefix, sizeof(name_buf) - 1);
|
|
||||||
if (*prefix)
|
|
||||||
*name_pos++= '_';
|
|
||||||
name_len= name_buf + sizeof(name_buf) - name_pos;
|
|
||||||
|
|
||||||
for (; variables->name; variables++)
|
|
||||||
{
|
|
||||||
strnmov(name_pos, variables->name, name_len);
|
|
||||||
name_buf[sizeof(name_buf) - 1]= 0;
|
|
||||||
make_upper(name_buf);
|
|
||||||
|
|
||||||
for (var= variables; var->type == SHOW_FUNC; var= &tmp)
|
|
||||||
((mysql_show_var_func)(var->value))(thd, &tmp, buff);
|
|
||||||
|
|
||||||
show_type= var->type;
|
|
||||||
|
|
||||||
if (show_type == SHOW_ARRAY)
|
|
||||||
{
|
|
||||||
fill_schema_status(thd, (SHOW_VAR*) var->value,
|
|
||||||
status_var, name_buf, table);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *value= var->value;
|
|
||||||
|
|
||||||
restore_record(table, s->default_values);
|
|
||||||
table->field[0]->store(name_buf, strlen(name_buf), system_charset_info);
|
|
||||||
|
|
||||||
if (show_type == SHOW_SYS)
|
|
||||||
{
|
|
||||||
show_type= ((sys_var*) value)->show_type();
|
|
||||||
value= (char*) ((sys_var*) value)->value_ptr(thd, OPT_GLOBAL,
|
|
||||||
&null_lex_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (show_type)
|
|
||||||
{
|
|
||||||
case SHOW_DOUBLE_STATUS:
|
|
||||||
value= (char*) status_var + (ulong) value;
|
|
||||||
table->field[1]->store(*(double*) value);
|
|
||||||
break;
|
|
||||||
case SHOW_LONG_STATUS:
|
|
||||||
value= (char*) status_var + (ulong) value;
|
|
||||||
/* fall through */
|
|
||||||
case SHOW_LONG:
|
|
||||||
case SHOW_LONG_NOFLUSH: /* the difference lies in refresh_status() */
|
|
||||||
table->field[1]->store((longlong) *(long*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_LONGLONG:
|
|
||||||
table->field[1]->store(*(longlong*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_HA_ROWS:
|
|
||||||
table->field[1]->store((longlong) *(ha_rows*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_BOOL:
|
|
||||||
table->field[1]->store((longlong) *(bool*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_MY_BOOL:
|
|
||||||
table->field[1]->store((longlong) *(my_bool*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_INT:
|
|
||||||
table->field[1]->store((longlong) *(uint32*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_HAVE: /* always displayed as 0 */
|
|
||||||
table->field[1]->store((longlong) 0, false);
|
|
||||||
break;
|
|
||||||
case SHOW_CHAR_PTR:
|
|
||||||
value= *(char**) value;
|
|
||||||
/* fall through */
|
|
||||||
case SHOW_CHAR: /* always displayed as 0 */
|
|
||||||
table->field[1]->store((longlong) 0, false);
|
|
||||||
break;
|
|
||||||
case SHOW_KEY_CACHE_LONG:
|
|
||||||
value= (char*) dflt_key_cache + (ulong) value;
|
|
||||||
table->field[1]->store((longlong) *(long*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_KEY_CACHE_LONGLONG:
|
|
||||||
value= (char*) dflt_key_cache + (ulong) value;
|
|
||||||
table->field[1]->store(*(longlong*) value, false);
|
|
||||||
break;
|
|
||||||
case SHOW_UNDEF: /* always displayed as 0 */
|
|
||||||
table->field[1]->store((longlong) 0, false);
|
|
||||||
break;
|
|
||||||
case SHOW_SYS: /* cannot happen */
|
|
||||||
default:
|
|
||||||
DBUG_ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
table->field[1]->set_notnull();
|
|
||||||
if (schema_table_store_record(thd, table))
|
|
||||||
DBUG_RETURN(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DBUG_RETURN(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int fill_schema_global_status(THD *thd, TABLE_LIST *tables, COND *cond)
|
|
||||||
{
|
|
||||||
STATUS_VAR tmp;
|
|
||||||
int res= 0;
|
|
||||||
DBUG_ENTER("fill_schema_global_status");
|
|
||||||
|
|
||||||
pthread_mutex_lock(&LOCK_status);
|
|
||||||
calc_sum_of_all_status(&tmp);
|
|
||||||
res= fill_schema_status(thd, (SHOW_VAR*) all_status_vars.buffer,
|
|
||||||
&tmp, "", tables->table);
|
|
||||||
pthread_mutex_unlock(&LOCK_status);
|
|
||||||
|
|
||||||
DBUG_RETURN(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
int fill_schema_session_status(THD *thd, TABLE_LIST *tables, COND *cond)
|
|
||||||
{
|
|
||||||
int res= 0;
|
|
||||||
DBUG_ENTER("fill_schema_session_status");
|
|
||||||
|
|
||||||
pthread_mutex_lock(&LOCK_status);
|
|
||||||
res= fill_schema_status(thd, (SHOW_VAR*) all_status_vars.buffer,
|
|
||||||
&thd->status_var, "", tables->table);
|
|
||||||
pthread_mutex_unlock(&LOCK_status);
|
|
||||||
|
|
||||||
DBUG_RETURN(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
int fill_schema_global_variables(THD *thd, TABLE_LIST *tables, COND *cond)
|
|
||||||
{
|
|
||||||
int res= 0;
|
|
||||||
DBUG_ENTER("fill_schema_global_variables");
|
|
||||||
|
|
||||||
rw_rdlock(&LOCK_system_variables_hash);
|
|
||||||
res= show_status_array(thd, "", enumerate_sys_vars(thd, FALSE), OPT_GLOBAL,
|
|
||||||
NULL, "", tables->table, 1);
|
|
||||||
rw_unlock(&LOCK_system_variables_hash);
|
|
||||||
|
|
||||||
DBUG_RETURN(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
int fill_schema_session_variables(THD *thd, TABLE_LIST *tables, COND *cond)
|
|
||||||
{
|
|
||||||
int res= 0;
|
|
||||||
DBUG_ENTER("fill_schema_session_variables");
|
|
||||||
|
|
||||||
rw_rdlock(&LOCK_system_variables_hash);
|
|
||||||
res= show_status_array(thd, "", enumerate_sys_vars(thd, FALSE), OPT_SESSION,
|
|
||||||
NULL, "", tables->table, 1);
|
|
||||||
rw_unlock(&LOCK_system_variables_hash);
|
|
||||||
|
|
||||||
DBUG_RETURN(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
ST_FIELD_INFO schema_fields_info[]=
|
ST_FIELD_INFO schema_fields_info[]=
|
||||||
{
|
{
|
||||||
@ -5762,25 +5622,9 @@ ST_FIELD_INFO partitions_fields_info[]=
|
|||||||
|
|
||||||
|
|
||||||
ST_FIELD_INFO variables_fields_info[]=
|
ST_FIELD_INFO variables_fields_info[]=
|
||||||
{
|
|
||||||
{"Variable_name", 80, MYSQL_TYPE_STRING, 0, 0, "Variable_name"},
|
|
||||||
{"Value", FN_REFLEN, MYSQL_TYPE_STRING, 0, 0, "Value"},
|
|
||||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
ST_FIELD_INFO status_fields_info[]=
|
|
||||||
{
|
{
|
||||||
{"VARIABLE_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Variable_name"},
|
{"VARIABLE_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Variable_name"},
|
||||||
{"VARIABLE_VALUE", 2207, MYSQL_TYPE_DECIMAL, 0, 0, "Value"},
|
{"VARIABLE_VALUE", 20480, MYSQL_TYPE_STRING, 0, 1, "Value"},
|
||||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
ST_FIELD_INFO system_variables_fields_info[]=
|
|
||||||
{
|
|
||||||
{"VARIABLE_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Variable_name"},
|
|
||||||
{"VARIABLE_VALUE", 65535, MYSQL_TYPE_STRING, 0, 1, "Value"},
|
|
||||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5920,10 +5764,10 @@ ST_SCHEMA_TABLE schema_tables[]=
|
|||||||
Events::fill_schema_events, make_old_format, 0, -1, -1, 0},
|
Events::fill_schema_events, make_old_format, 0, -1, -1, 0},
|
||||||
{"FILES", files_fields_info, create_schema_table,
|
{"FILES", files_fields_info, create_schema_table,
|
||||||
fill_schema_files, 0, 0, -1, -1, 0},
|
fill_schema_files, 0, 0, -1, -1, 0},
|
||||||
{"GLOBAL_STATUS", status_fields_info, create_schema_table,
|
{"GLOBAL_STATUS", variables_fields_info, create_schema_table,
|
||||||
fill_schema_global_status, make_old_format, 0, -1, -1, 0},
|
fill_status, make_old_format, 0, -1, -1, 0},
|
||||||
{"GLOBAL_VARIABLES", system_variables_fields_info, create_schema_table,
|
{"GLOBAL_VARIABLES", variables_fields_info, create_schema_table,
|
||||||
fill_schema_global_variables, make_old_format, 0, -1, -1, 0},
|
fill_variables, make_old_format, 0, -1, -1, 0},
|
||||||
{"KEY_COLUMN_USAGE", key_column_usage_fields_info, create_schema_table,
|
{"KEY_COLUMN_USAGE", key_column_usage_fields_info, create_schema_table,
|
||||||
get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0},
|
get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0},
|
||||||
{"OPEN_TABLES", open_tables_fields_info, create_schema_table,
|
{"OPEN_TABLES", open_tables_fields_info, create_schema_table,
|
||||||
@ -5943,10 +5787,10 @@ ST_SCHEMA_TABLE schema_tables[]=
|
|||||||
fill_schema_shemata, make_schemata_old_format, 0, 1, -1, 0},
|
fill_schema_shemata, make_schemata_old_format, 0, 1, -1, 0},
|
||||||
{"SCHEMA_PRIVILEGES", schema_privileges_fields_info, create_schema_table,
|
{"SCHEMA_PRIVILEGES", schema_privileges_fields_info, create_schema_table,
|
||||||
fill_schema_schema_privileges, 0, 0, -1, -1, 0},
|
fill_schema_schema_privileges, 0, 0, -1, -1, 0},
|
||||||
{"SESSION_STATUS", status_fields_info, create_schema_table,
|
{"SESSION_STATUS", variables_fields_info, create_schema_table,
|
||||||
fill_schema_session_status, make_old_format, 0, -1, -1, 0},
|
fill_status, make_old_format, 0, -1, -1, 0},
|
||||||
{"SESSION_VARIABLES", system_variables_fields_info, create_schema_table,
|
{"SESSION_VARIABLES", variables_fields_info, create_schema_table,
|
||||||
fill_schema_session_variables, make_old_format, 0, -1, -1, 0},
|
fill_variables, make_old_format, 0, -1, -1, 0},
|
||||||
{"STATISTICS", stat_fields_info, create_schema_table,
|
{"STATISTICS", stat_fields_info, create_schema_table,
|
||||||
get_all_tables, make_old_format, get_schema_stat_record, 1, 2, 0},
|
get_all_tables, make_old_format, get_schema_stat_record, 1, 2, 0},
|
||||||
{"STATUS", variables_fields_info, create_schema_table, fill_status,
|
{"STATUS", variables_fields_info, create_schema_table, fill_status,
|
||||||
|
Reference in New Issue
Block a user