Added new status variables:
feature_dynamic_columns,feature_fulltext,feature_gis,feature_locale,feature_subquery,feature_timezone,feature_trigger,feature_xml Opened_views, Executed_triggers, Executed_events Added new process status 'updating status' as part of 'freeing items' mysql-test/r/features.result: Test of feature_xxx status variables mysql-test/r/mysqld--help.result: Removed duplicated 'language' variable. mysql-test/r/view.result: Test of opened_views mysql-test/suite/rpl/t/rpl_start_stop_slave.test: Write more information on failure mysql-test/t/features.test: Test of feature_xxx status variables mysql-test/t/view.test: Test of opened_views sql/event_scheduler.cc: Increment executed_events status variable sql/field.cc: Increment status variable sql/item_func.cc: Increment status variable sql/item_strfunc.cc: Increment status variable sql/item_subselect.cc: Increment status variable sql/item_xmlfunc.cc: Increment status variable sql/mysqld.cc: Add new status variables to 'show status' sql/mysqld.h: Added executed_events sql/sql_base.cc: Increment status variable sql/sql_class.h: Add new status variables sql/sql_parse.cc: Added new process status 'updating status' as part of 'freeing items' sql/sql_trigger.cc: Increment status variable sql/sys_vars.cc: Increment status variable sql/tztime.cc: Increment status variable
This commit is contained in:
parent
5161b3ddde
commit
3a793b9d4d
140
mysql-test/r/features.result
Normal file
140
mysql-test/r/features.result
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
drop table if exists t1;
|
||||||
|
show status like "feature%";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_dynamic_columns 0
|
||||||
|
Feature_fulltext 0
|
||||||
|
Feature_gis 0
|
||||||
|
Feature_locale 0
|
||||||
|
Feature_subquery 0
|
||||||
|
Feature_timezone 0
|
||||||
|
Feature_trigger 0
|
||||||
|
Feature_xml 0
|
||||||
|
#
|
||||||
|
# Feature GIS
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (g POINT);
|
||||||
|
SHOW FIELDS FROM t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
g point YES NULL
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(PointFromText('POINT(10 10)')),
|
||||||
|
(PointFromText('POINT(20 10)')),
|
||||||
|
(PointFromText('POINT(20 20)')),
|
||||||
|
(PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
|
||||||
|
drop table t1;
|
||||||
|
show status like "feature_gis";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_gis 3
|
||||||
|
#
|
||||||
|
# Feature dynamic columns
|
||||||
|
#
|
||||||
|
set @a= COLUMN_CREATE(1, 1212 AS int);
|
||||||
|
set @b= column_add(@a, 2, 1212 as integer);
|
||||||
|
select column_get(@b, 2 as integer);
|
||||||
|
column_get(@b, 2 as integer)
|
||||||
|
1212
|
||||||
|
show status like "feature_dynamic_columns";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_dynamic_columns 2
|
||||||
|
#
|
||||||
|
# Feature fulltext
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)) engine=myisam;
|
||||||
|
INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'),
|
||||||
|
('Full-text indexes', 'are called collections'),
|
||||||
|
('Only MyISAM tables','support collections'),
|
||||||
|
('Function MATCH ... AGAINST()','is used to do a search'),
|
||||||
|
('Full-text search in MySQL', 'implements vector space model');
|
||||||
|
select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
|
a b
|
||||||
|
Only MyISAM tables support collections
|
||||||
|
Full-text indexes are called collections
|
||||||
|
select * from t1 where MATCH(a,b) AGAINST ("indexes");
|
||||||
|
a b
|
||||||
|
Full-text indexes are called collections
|
||||||
|
drop table t1;
|
||||||
|
show status like "feature_fulltext";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_fulltext 2
|
||||||
|
#
|
||||||
|
# Feature locale
|
||||||
|
#
|
||||||
|
SET lc_messages=sr_RS;
|
||||||
|
SET lc_messages=en_US;
|
||||||
|
show status like "feature_locale";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_locale 2
|
||||||
|
#
|
||||||
|
# Feature subquery
|
||||||
|
#
|
||||||
|
select (select 2);
|
||||||
|
(select 2)
|
||||||
|
2
|
||||||
|
SELECT (SELECT 1) UNION SELECT (SELECT 2);
|
||||||
|
(SELECT 1)
|
||||||
|
1
|
||||||
|
2
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (2);
|
||||||
|
select (select a from t1 where t1.a=t2.a), a from t1 as t2;
|
||||||
|
(select a from t1 where t1.a=t2.a) a
|
||||||
|
2 2
|
||||||
|
drop table t1;
|
||||||
|
show status like "feature_subquery";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_subquery 4
|
||||||
|
#
|
||||||
|
# Feature timezone
|
||||||
|
#
|
||||||
|
SELECT FROM_UNIXTIME(unix_timestamp()) > "1970-01-01";
|
||||||
|
FROM_UNIXTIME(unix_timestamp()) > "1970-01-01"
|
||||||
|
1
|
||||||
|
set time_zone="+03:00";
|
||||||
|
SELECT FROM_UNIXTIME(unix_timestamp()) > "1970-01-01";
|
||||||
|
FROM_UNIXTIME(unix_timestamp()) > "1970-01-01"
|
||||||
|
1
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
|
show status like "feature_timezone";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_timezone 1
|
||||||
|
#
|
||||||
|
# Feature triggers
|
||||||
|
#
|
||||||
|
create table t1 (i int);
|
||||||
|
# let us test some very simple trigger
|
||||||
|
create trigger trg before insert on t1 for each row set @a:=1;
|
||||||
|
set @a:=0;
|
||||||
|
select @a;
|
||||||
|
@a
|
||||||
|
0
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
select @a;
|
||||||
|
@a
|
||||||
|
1
|
||||||
|
SHOW TRIGGERS IN test like 't1';
|
||||||
|
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
|
||||||
|
trg INSERT t1 set @a:=1 BEFORE NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
drop trigger trg;
|
||||||
|
drop table t1;
|
||||||
|
show status like "%trigger%";
|
||||||
|
Variable_name Value
|
||||||
|
Com_create_trigger 1
|
||||||
|
Com_drop_trigger 1
|
||||||
|
Com_show_create_trigger 0
|
||||||
|
Com_show_triggers 1
|
||||||
|
Executed_triggers 2
|
||||||
|
Feature_trigger 2
|
||||||
|
#
|
||||||
|
# Feature xml
|
||||||
|
#
|
||||||
|
SET @xml='<a aa1="aa1" aa2="aa2">a1<b ba1="ba1">b1<c>c1</c>b2</b>a2</a>';
|
||||||
|
SELECT extractValue(@xml,'/a');
|
||||||
|
extractValue(@xml,'/a')
|
||||||
|
a1 a2
|
||||||
|
select updatexml('<div><div><span>1</span><span>2</span></div></div>',
|
||||||
|
'/','<tr><td>1</td><td>2</td></tr>') as upd1;
|
||||||
|
upd1
|
||||||
|
<tr><td>1</td><td>2</td></tr>
|
||||||
|
show status like "feature_xml";
|
||||||
|
Variable_name Value
|
||||||
|
Feature_xml 2
|
@ -923,7 +923,6 @@ key-cache-age-threshold 300
|
|||||||
key-cache-block-size 1024
|
key-cache-block-size 1024
|
||||||
key-cache-division-limit 100
|
key-cache-division-limit 100
|
||||||
key-cache-segments 0
|
key-cache-segments 0
|
||||||
language MYSQL_SHAREDIR/
|
|
||||||
large-pages FALSE
|
large-pages FALSE
|
||||||
lc-messages en_US
|
lc-messages en_US
|
||||||
lc-messages-dir MYSQL_SHAREDIR/
|
lc-messages-dir MYSQL_SHAREDIR/
|
||||||
|
@ -4678,6 +4678,7 @@ DROP TABLE t1,t2,t3;
|
|||||||
# LP bug#1007622 Server crashes in handler::increment_statistics on
|
# LP bug#1007622 Server crashes in handler::increment_statistics on
|
||||||
# inserting into a view over a view
|
# inserting into a view over a view
|
||||||
#
|
#
|
||||||
|
flush status;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.* FROM t1 AS a1, t1 AS a2;
|
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.* FROM t1 AS a1, t1 AS a2;
|
||||||
CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1;
|
CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1;
|
||||||
@ -4687,6 +4688,15 @@ a
|
|||||||
1
|
1
|
||||||
drop view v2,v1;
|
drop view v2,v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
show status like '%view%';
|
||||||
|
Variable_name Value
|
||||||
|
Com_create_view 2
|
||||||
|
Com_drop_view 1
|
||||||
|
Opened_views 3
|
||||||
|
show status like 'Opened_table%';
|
||||||
|
Variable_name Value
|
||||||
|
Opened_table_definitions 2
|
||||||
|
Opened_tables 3
|
||||||
#
|
#
|
||||||
# MDEV-486 LP BUG#1010116 Incorrect query results in
|
# MDEV-486 LP BUG#1010116 Incorrect query results in
|
||||||
# view and derived tables
|
# view and derived tables
|
||||||
|
@ -21,6 +21,16 @@
|
|||||||
connection slave;
|
connection slave;
|
||||||
--let $connection_id=`SELECT id FROM information_schema.processlist where state LIKE 'Waiting for master to send event'`
|
--let $connection_id=`SELECT id FROM information_schema.processlist where state LIKE 'Waiting for master to send event'`
|
||||||
|
|
||||||
|
if(!$connection_id)
|
||||||
|
{
|
||||||
|
# Something went wrong (timing)
|
||||||
|
# Show process list so that we can debug. In this case we will abort with
|
||||||
|
# wrong result
|
||||||
|
-- echo "Could not find connect id. Dumping process list for debugging"
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
set @time_before_kill := (select CURRENT_TIMESTAMP);
|
set @time_before_kill := (select CURRENT_TIMESTAMP);
|
||||||
|
|
||||||
--echo [Time before the query]
|
--echo [Time before the query]
|
||||||
|
107
mysql-test/t/features.test
Normal file
107
mysql-test/t/features.test
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
# Testing of feature statistics
|
||||||
|
|
||||||
|
-- source include/have_geometry.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
show status like "feature%";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature GIS
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (g POINT);
|
||||||
|
SHOW FIELDS FROM t1;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(PointFromText('POINT(10 10)')),
|
||||||
|
(PointFromText('POINT(20 10)')),
|
||||||
|
(PointFromText('POINT(20 20)')),
|
||||||
|
(PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
show status like "feature_gis";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature dynamic columns
|
||||||
|
--echo #
|
||||||
|
set @a= COLUMN_CREATE(1, 1212 AS int);
|
||||||
|
set @b= column_add(@a, 2, 1212 as integer);
|
||||||
|
select column_get(@b, 2 as integer);
|
||||||
|
|
||||||
|
show status like "feature_dynamic_columns";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature fulltext
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)) engine=myisam;
|
||||||
|
INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'),
|
||||||
|
('Full-text indexes', 'are called collections'),
|
||||||
|
('Only MyISAM tables','support collections'),
|
||||||
|
('Function MATCH ... AGAINST()','is used to do a search'),
|
||||||
|
('Full-text search in MySQL', 'implements vector space model');
|
||||||
|
select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
|
select * from t1 where MATCH(a,b) AGAINST ("indexes");
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
show status like "feature_fulltext";
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature locale
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET lc_messages=sr_RS;
|
||||||
|
SET lc_messages=en_US;
|
||||||
|
show status like "feature_locale";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature subquery
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
select (select 2);
|
||||||
|
SELECT (SELECT 1) UNION SELECT (SELECT 2);
|
||||||
|
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (2);
|
||||||
|
select (select a from t1 where t1.a=t2.a), a from t1 as t2;
|
||||||
|
drop table t1;
|
||||||
|
show status like "feature_subquery";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature timezone
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT FROM_UNIXTIME(unix_timestamp()) > "1970-01-01";
|
||||||
|
set time_zone="+03:00";
|
||||||
|
SELECT FROM_UNIXTIME(unix_timestamp()) > "1970-01-01";
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
|
show status like "feature_timezone";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature triggers
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
create table t1 (i int);
|
||||||
|
--echo # let us test some very simple trigger
|
||||||
|
create trigger trg before insert on t1 for each row set @a:=1;
|
||||||
|
set @a:=0;
|
||||||
|
select @a;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
select @a;
|
||||||
|
SHOW TRIGGERS IN test like 't1';
|
||||||
|
drop trigger trg;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
show status like "%trigger%";
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Feature xml
|
||||||
|
--echo #
|
||||||
|
SET @xml='<a aa1="aa1" aa2="aa2">a1<b ba1="ba1">b1<c>c1</c>b2</b>a2</a>';
|
||||||
|
SELECT extractValue(@xml,'/a');
|
||||||
|
select updatexml('<div><div><span>1</span><span>2</span></div></div>',
|
||||||
|
'/','<tr><td>1</td><td>2</td></tr>') as upd1;
|
||||||
|
show status like "feature_xml";
|
@ -4618,6 +4618,8 @@ DROP TABLE t1,t2,t3;
|
|||||||
--echo # inserting into a view over a view
|
--echo # inserting into a view over a view
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
flush status;
|
||||||
|
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.* FROM t1 AS a1, t1 AS a2;
|
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.* FROM t1 AS a1, t1 AS a2;
|
||||||
CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1;
|
CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1;
|
||||||
@ -4625,6 +4627,8 @@ INSERT INTO v2 (a) VALUES (1) ;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop view v2,v1;
|
drop view v2,v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
show status like '%view%';
|
||||||
|
show status like 'Opened_table%';
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-486 LP BUG#1010116 Incorrect query results in
|
--echo # MDEV-486 LP BUG#1010116 Incorrect query results in
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
cond_wait(mythd, abstime, msg, SCHED_FUNC, __LINE__)
|
cond_wait(mythd, abstime, msg, SCHED_FUNC, __LINE__)
|
||||||
|
|
||||||
extern pthread_attr_t connection_attrib;
|
extern pthread_attr_t connection_attrib;
|
||||||
|
extern ulong event_executed;
|
||||||
|
|
||||||
Event_db_repository *Event_worker_thread::db_repository;
|
Event_db_repository *Event_worker_thread::db_repository;
|
||||||
|
|
||||||
@ -557,7 +557,8 @@ Event_scheduler::execute_top(Event_queue_element_for_exec *event_name)
|
|||||||
event_name)))
|
event_name)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
++started_events;
|
started_events++;
|
||||||
|
executed_events++; // For SHOW STATUS
|
||||||
|
|
||||||
DBUG_PRINT("info", ("Event is in THD: 0x%lx", (long) new_thd));
|
DBUG_PRINT("info", ("Event is in THD: 0x%lx", (long) new_thd));
|
||||||
DBUG_RETURN(FALSE);
|
DBUG_RETURN(FALSE);
|
||||||
|
@ -9395,9 +9395,12 @@ Field *make_field(TABLE_SHARE *share, uchar *ptr, uint32 field_length,
|
|||||||
|
|
||||||
#ifdef HAVE_SPATIAL
|
#ifdef HAVE_SPATIAL
|
||||||
if (f_is_geom(pack_flag))
|
if (f_is_geom(pack_flag))
|
||||||
|
{
|
||||||
|
status_var_increment(current_thd->status_var.feature_gis);
|
||||||
return new Field_geom(ptr,null_pos,null_bit,
|
return new Field_geom(ptr,null_pos,null_bit,
|
||||||
unireg_check, field_name, share,
|
unireg_check, field_name, share,
|
||||||
pack_length, geom_type);
|
pack_length, geom_type);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
if (f_is_blob(pack_flag))
|
if (f_is_blob(pack_flag))
|
||||||
return new Field_blob(ptr,null_pos,null_bit,
|
return new Field_blob(ptr,null_pos,null_bit,
|
||||||
|
@ -6046,6 +6046,8 @@ bool Item_func_match::fix_fields(THD *thd, Item **ref)
|
|||||||
DBUG_ASSERT(fixed == 0);
|
DBUG_ASSERT(fixed == 0);
|
||||||
Item *UNINIT_VAR(item); // Safe as arg_count is > 1
|
Item *UNINIT_VAR(item); // Safe as arg_count is > 1
|
||||||
|
|
||||||
|
status_var_increment(thd->status_var.feature_fulltext);
|
||||||
|
|
||||||
maybe_null=1;
|
maybe_null=1;
|
||||||
join_key=0;
|
join_key=0;
|
||||||
|
|
||||||
|
@ -3774,6 +3774,7 @@ bool Item_func_dyncol_create::fix_fields(THD *thd, Item **ref)
|
|||||||
(arg_count / 2));
|
(arg_count / 2));
|
||||||
nums= (uint *) alloc_root(thd->mem_root,
|
nums= (uint *) alloc_root(thd->mem_root,
|
||||||
sizeof(uint) * (arg_count / 2));
|
sizeof(uint) * (arg_count / 2));
|
||||||
|
status_var_increment(thd->status_var.feature_dynamic_columns);
|
||||||
return res || vals == 0 || nums == 0;
|
return res || vals == 0 || nums == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,6 +220,8 @@ bool Item_subselect::fix_fields(THD *thd_param, Item **ref)
|
|||||||
uint8 uncacheable;
|
uint8 uncacheable;
|
||||||
bool res;
|
bool res;
|
||||||
|
|
||||||
|
status_var_increment(thd->status_var.feature_subquery);
|
||||||
|
|
||||||
DBUG_ASSERT(fixed == 0);
|
DBUG_ASSERT(fixed == 0);
|
||||||
engine->set_thd((thd= thd_param));
|
engine->set_thd((thd= thd_param));
|
||||||
if (!done_first_fix_fields)
|
if (!done_first_fix_fields)
|
||||||
|
@ -2601,6 +2601,8 @@ void Item_xml_str_func::fix_length_and_dec()
|
|||||||
MY_XPATH xpath;
|
MY_XPATH xpath;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
status_var_increment(current_thd->status_var.feature_xml);
|
||||||
|
|
||||||
nodeset_func= 0;
|
nodeset_func= 0;
|
||||||
|
|
||||||
if (agg_arg_charsets_for_comparison(collation, args, arg_count))
|
if (agg_arg_charsets_for_comparison(collation, args, arg_count))
|
||||||
|
@ -482,6 +482,7 @@ ulonglong binlog_stmt_cache_size=0;
|
|||||||
ulonglong max_binlog_stmt_cache_size=0;
|
ulonglong max_binlog_stmt_cache_size=0;
|
||||||
ulonglong query_cache_size=0;
|
ulonglong query_cache_size=0;
|
||||||
ulong refresh_version; /* Increments on each reload */
|
ulong refresh_version; /* Increments on each reload */
|
||||||
|
ulong executed_events=0;
|
||||||
query_id_t global_query_id;
|
query_id_t global_query_id;
|
||||||
my_atomic_rwlock_t global_query_id_lock;
|
my_atomic_rwlock_t global_query_id_lock;
|
||||||
my_atomic_rwlock_t thread_running_lock;
|
my_atomic_rwlock_t thread_running_lock;
|
||||||
@ -6948,6 +6949,16 @@ SHOW_VAR status_vars[]= {
|
|||||||
{"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_NOFLUSH},
|
{"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_NOFLUSH},
|
||||||
{"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG},
|
{"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG},
|
||||||
{"Empty_queries", (char*) offsetof(STATUS_VAR, empty_queries), SHOW_LONG_STATUS},
|
{"Empty_queries", (char*) offsetof(STATUS_VAR, empty_queries), SHOW_LONG_STATUS},
|
||||||
|
{"Executed_events", (char*) &executed_events, SHOW_LONG_NOFLUSH },
|
||||||
|
{"Executed_triggers", (char*) offsetof(STATUS_VAR, executed_triggers), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_dynamic_columns", (char*) offsetof(STATUS_VAR, feature_dynamic_columns), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_fulltext", (char*) offsetof(STATUS_VAR, feature_fulltext), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_gis", (char*) offsetof(STATUS_VAR, feature_gis), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_locale", (char*) offsetof(STATUS_VAR, feature_locale), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_subquery", (char*) offsetof(STATUS_VAR, feature_subquery), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_timezone", (char*) offsetof(STATUS_VAR, feature_timezone), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_trigger", (char*) offsetof(STATUS_VAR, feature_trigger), SHOW_LONG_STATUS},
|
||||||
|
{"Feature_xml", (char*) offsetof(STATUS_VAR, feature_xml), SHOW_LONG_STATUS},
|
||||||
{"Flush_commands", (char*) &refresh_version, SHOW_LONG_NOFLUSH},
|
{"Flush_commands", (char*) &refresh_version, SHOW_LONG_NOFLUSH},
|
||||||
{"Handler_commit", (char*) offsetof(STATUS_VAR, ha_commit_count), SHOW_LONG_STATUS},
|
{"Handler_commit", (char*) offsetof(STATUS_VAR, ha_commit_count), SHOW_LONG_STATUS},
|
||||||
{"Handler_delete", (char*) offsetof(STATUS_VAR, ha_delete_count), SHOW_LONG_STATUS},
|
{"Handler_delete", (char*) offsetof(STATUS_VAR, ha_delete_count), SHOW_LONG_STATUS},
|
||||||
@ -6987,6 +6998,7 @@ SHOW_VAR status_vars[]= {
|
|||||||
{"Opened_files", (char*) &my_file_total_opened, SHOW_LONG_NOFLUSH},
|
{"Opened_files", (char*) &my_file_total_opened, SHOW_LONG_NOFLUSH},
|
||||||
{"Opened_tables", (char*) offsetof(STATUS_VAR, opened_tables), SHOW_LONG_STATUS},
|
{"Opened_tables", (char*) offsetof(STATUS_VAR, opened_tables), SHOW_LONG_STATUS},
|
||||||
{"Opened_table_definitions", (char*) offsetof(STATUS_VAR, opened_shares), SHOW_LONG_STATUS},
|
{"Opened_table_definitions", (char*) offsetof(STATUS_VAR, opened_shares), SHOW_LONG_STATUS},
|
||||||
|
{"Opened_views", (char*) offsetof(STATUS_VAR, opened_views), SHOW_LONG_STATUS},
|
||||||
{"Prepared_stmt_count", (char*) &show_prepared_stmt_count, SHOW_FUNC},
|
{"Prepared_stmt_count", (char*) &show_prepared_stmt_count, SHOW_FUNC},
|
||||||
{"Rows_sent", (char*) offsetof(STATUS_VAR, rows_sent), SHOW_LONGLONG_STATUS},
|
{"Rows_sent", (char*) offsetof(STATUS_VAR, rows_sent), SHOW_LONGLONG_STATUS},
|
||||||
{"Rows_read", (char*) offsetof(STATUS_VAR, rows_read), SHOW_LONGLONG_STATUS},
|
{"Rows_read", (char*) offsetof(STATUS_VAR, rows_read), SHOW_LONGLONG_STATUS},
|
||||||
@ -7274,6 +7286,7 @@ static int mysql_init_variables(void)
|
|||||||
protocol_version= PROTOCOL_VERSION;
|
protocol_version= PROTOCOL_VERSION;
|
||||||
what_to_log= ~ (1L << (uint) COM_TIME);
|
what_to_log= ~ (1L << (uint) COM_TIME);
|
||||||
refresh_version= 1L; /* Increments on each reload */
|
refresh_version= 1L; /* Increments on each reload */
|
||||||
|
executed_events= 0;
|
||||||
global_query_id= thread_id= 1L;
|
global_query_id= thread_id= 1L;
|
||||||
my_atomic_rwlock_init(&global_query_id_lock);
|
my_atomic_rwlock_init(&global_query_id_lock);
|
||||||
my_atomic_rwlock_init(&thread_running_lock);
|
my_atomic_rwlock_init(&thread_running_lock);
|
||||||
|
@ -175,6 +175,7 @@ extern ulong opt_binlog_rows_event_max_size;
|
|||||||
extern ulong rpl_recovery_rank, thread_cache_size;
|
extern ulong rpl_recovery_rank, thread_cache_size;
|
||||||
extern ulong stored_program_cache_size;
|
extern ulong stored_program_cache_size;
|
||||||
extern ulong back_log;
|
extern ulong back_log;
|
||||||
|
extern ulong executed_events;
|
||||||
extern char language[FN_REFLEN];
|
extern char language[FN_REFLEN];
|
||||||
extern "C" MYSQL_PLUGIN_IMPORT ulong server_id;
|
extern "C" MYSQL_PLUGIN_IMPORT ulong server_id;
|
||||||
extern ulong concurrency;
|
extern ulong concurrency;
|
||||||
|
@ -9421,6 +9421,7 @@ open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias,
|
|||||||
if (mysql_make_view(thd, parser, table_desc,
|
if (mysql_make_view(thd, parser, table_desc,
|
||||||
(prgflag & OPEN_VIEW_NO_PARSE)))
|
(prgflag & OPEN_VIEW_NO_PARSE)))
|
||||||
goto err;
|
goto err;
|
||||||
|
status_var_increment(thd->status_var.opened_views);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -620,25 +620,17 @@ typedef struct system_status_var
|
|||||||
ulong ha_savepoint_count;
|
ulong ha_savepoint_count;
|
||||||
ulong ha_savepoint_rollback_count;
|
ulong ha_savepoint_rollback_count;
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* KEY_CACHE parts. These are copies of the original */
|
|
||||||
ulong key_blocks_changed;
|
|
||||||
ulong key_blocks_used;
|
|
||||||
ulong key_cache_r_requests;
|
|
||||||
ulong key_cache_read;
|
|
||||||
ulong key_cache_w_requests;
|
|
||||||
ulong key_cache_write;
|
|
||||||
/* END OF KEY_CACHE parts */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ulong net_big_packet_count;
|
ulong net_big_packet_count;
|
||||||
ulong opened_tables;
|
ulong opened_tables;
|
||||||
ulong opened_shares;
|
ulong opened_shares;
|
||||||
|
ulong opened_views; /* +1 opening a view */
|
||||||
|
|
||||||
ulong select_full_join_count;
|
ulong select_full_join_count;
|
||||||
ulong select_full_range_join_count;
|
ulong select_full_range_join_count;
|
||||||
ulong select_range_count;
|
ulong select_range_count;
|
||||||
ulong select_range_check_count;
|
ulong select_range_check_count;
|
||||||
ulong select_scan_count;
|
ulong select_scan_count;
|
||||||
|
ulong executed_triggers;
|
||||||
ulong long_query_count;
|
ulong long_query_count;
|
||||||
ulong filesort_merge_passes;
|
ulong filesort_merge_passes;
|
||||||
ulong filesort_range_count;
|
ulong filesort_range_count;
|
||||||
@ -653,6 +645,16 @@ typedef struct system_status_var
|
|||||||
ulong com_stmt_reset;
|
ulong com_stmt_reset;
|
||||||
ulong com_stmt_close;
|
ulong com_stmt_close;
|
||||||
|
|
||||||
|
/* Features used */
|
||||||
|
ulong feature_dynamic_columns; /* +1 when creating a dynamic column */
|
||||||
|
ulong feature_fulltext; /* +1 when MATCH is used */
|
||||||
|
ulong feature_gis; /* +1 opening a table with GIS features */
|
||||||
|
ulong feature_locale; /* +1 when LOCALE is set */
|
||||||
|
ulong feature_subquery; /* +1 when subqueries are used */
|
||||||
|
ulong feature_timezone; /* +1 when XPATH is used */
|
||||||
|
ulong feature_trigger; /* +1 opening a table with triggers */
|
||||||
|
ulong feature_xml; /* +1 when XPATH is used */
|
||||||
|
|
||||||
ulong empty_queries;
|
ulong empty_queries;
|
||||||
ulong access_denied_errors;
|
ulong access_denied_errors;
|
||||||
ulong lost_connections;
|
ulong lost_connections;
|
||||||
|
@ -1425,6 +1425,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||||||
(thd->open_tables == NULL ||
|
(thd->open_tables == NULL ||
|
||||||
(thd->locked_tables_mode == LTM_LOCK_TABLES)));
|
(thd->locked_tables_mode == LTM_LOCK_TABLES)));
|
||||||
|
|
||||||
|
thd_proc_info(thd, "updating status");
|
||||||
/* Finalize server status flags after executing a command. */
|
/* Finalize server status flags after executing a command. */
|
||||||
thd->update_server_status();
|
thd->update_server_status();
|
||||||
thd->protocol->end_statement();
|
thd->protocol->end_statement();
|
||||||
|
@ -1334,6 +1334,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
|
|||||||
triggers->definitions_list.elements);
|
triggers->definitions_list.elements);
|
||||||
|
|
||||||
table->triggers= triggers;
|
table->triggers= triggers;
|
||||||
|
status_var_increment(thd->status_var.feature_trigger);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: This could be avoided if there is no triggers
|
TODO: This could be avoided if there is no triggers
|
||||||
@ -2116,6 +2117,8 @@ bool Table_triggers_list::process_triggers(THD *thd,
|
|||||||
if (sp_trigger == NULL)
|
if (sp_trigger == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
status_var_increment(thd->status_var.executed_triggers);
|
||||||
|
|
||||||
if (old_row_is_record1)
|
if (old_row_is_record1)
|
||||||
{
|
{
|
||||||
old_field= record1_field;
|
old_field= record1_field;
|
||||||
|
@ -3578,22 +3578,25 @@ static bool check_locale(sys_var *self, THD *thd, set_var *var)
|
|||||||
|
|
||||||
if (!locale->errmsgs->errmsgs)
|
if (!locale->errmsgs->errmsgs)
|
||||||
{
|
{
|
||||||
|
bool res;
|
||||||
mysql_mutex_lock(&LOCK_error_messages);
|
mysql_mutex_lock(&LOCK_error_messages);
|
||||||
if (!locale->errmsgs->errmsgs &&
|
res= (!locale->errmsgs->errmsgs &&
|
||||||
read_texts(ERRMSG_FILE, locale->errmsgs->language,
|
read_texts(ERRMSG_FILE, locale->errmsgs->language,
|
||||||
&locale->errmsgs->errmsgs,
|
&locale->errmsgs->errmsgs,
|
||||||
ER_ERROR_LAST - ER_ERROR_FIRST + 1))
|
ER_ERROR_LAST - ER_ERROR_FIRST + 1));
|
||||||
|
mysql_mutex_unlock(&LOCK_error_messages);
|
||||||
|
if (res)
|
||||||
{
|
{
|
||||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR,
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR,
|
||||||
"Can't process error message file for locale '%s'",
|
"Can't process error message file for locale '%s'",
|
||||||
locale->name);
|
locale->name);
|
||||||
mysql_mutex_unlock(&LOCK_error_messages);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
mysql_mutex_unlock(&LOCK_error_messages);
|
|
||||||
}
|
}
|
||||||
|
status_var_increment(thd->status_var.feature_locale);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Sys_var_struct Sys_lc_messages(
|
static Sys_var_struct Sys_lc_messages(
|
||||||
"lc_messages", "Set the language used for the error messages",
|
"lc_messages", "Set the language used for the error messages",
|
||||||
SESSION_VAR(lc_messages), NO_CMD_LINE,
|
SESSION_VAR(lc_messages), NO_CMD_LINE,
|
||||||
|
@ -2329,7 +2329,6 @@ my_tz_find(THD *thd, const String *name)
|
|||||||
|
|
||||||
if (!str_to_offset(name->ptr(), name->length(), &offset))
|
if (!str_to_offset(name->ptr(), name->length(), &offset))
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!(result_tz= (Time_zone_offset *)my_hash_search(&offset_tzs,
|
if (!(result_tz= (Time_zone_offset *)my_hash_search(&offset_tzs,
|
||||||
(const uchar *)&offset,
|
(const uchar *)&offset,
|
||||||
sizeof(long))))
|
sizeof(long))))
|
||||||
@ -2371,6 +2370,9 @@ my_tz_find(THD *thd, const String *name)
|
|||||||
|
|
||||||
mysql_mutex_unlock(&tz_LOCK);
|
mysql_mutex_unlock(&tz_LOCK);
|
||||||
|
|
||||||
|
if (result_tz && result_tz != my_tz_SYSTEM && result_tz != my_tz_UTC)
|
||||||
|
status_var_increment(thd->status_var.feature_timezone);
|
||||||
|
|
||||||
DBUG_RETURN(result_tz);
|
DBUG_RETURN(result_tz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user