diff options
author | Michael Widenius <monty@askmonty.org> | 2012-09-09 01:22:06 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2012-09-09 01:22:06 +0300 |
commit | 3a793b9d4d53867263eefd60010af2a124f485d1 (patch) | |
tree | c8c1d89279a3c6c743020dbcab4adb155fc76122 | |
parent | 5161b3ddde41617cc623e54980f6f28f38e650a7 (diff) | |
download | mariadb-git-3a793b9d4d53867263eefd60010af2a124f485d1.tar.gz |
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
-rw-r--r-- | mysql-test/r/features.result | 140 | ||||
-rw-r--r-- | mysql-test/r/mysqld--help.result | 1 | ||||
-rw-r--r-- | mysql-test/r/view.result | 10 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/rpl_start_stop_slave.test | 10 | ||||
-rw-r--r-- | mysql-test/t/features.test | 107 | ||||
-rw-r--r-- | mysql-test/t/view.test | 4 | ||||
-rw-r--r-- | sql/event_scheduler.cc | 5 | ||||
-rw-r--r-- | sql/field.cc | 3 | ||||
-rw-r--r-- | sql/item_func.cc | 2 | ||||
-rw-r--r-- | sql/item_strfunc.cc | 1 | ||||
-rw-r--r-- | sql/item_subselect.cc | 2 | ||||
-rw-r--r-- | sql/item_xmlfunc.cc | 2 | ||||
-rw-r--r-- | sql/mysqld.cc | 13 | ||||
-rw-r--r-- | sql/mysqld.h | 1 | ||||
-rw-r--r-- | sql/sql_base.cc | 1 | ||||
-rw-r--r-- | sql/sql_class.h | 24 | ||||
-rw-r--r-- | sql/sql_parse.cc | 1 | ||||
-rw-r--r-- | sql/sql_trigger.cc | 3 | ||||
-rw-r--r-- | sql/sys_vars.cc | 15 | ||||
-rw-r--r-- | sql/tztime.cc | 4 |
20 files changed, 328 insertions, 21 deletions
diff --git a/mysql-test/r/features.result b/mysql-test/r/features.result new file mode 100644 index 00000000000..7b6a352ab0c --- /dev/null +++ b/mysql-test/r/features.result @@ -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 diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result index 63df79160cc..718909d1b27 100644 --- a/mysql-test/r/mysqld--help.result +++ b/mysql-test/r/mysqld--help.result @@ -923,7 +923,6 @@ key-cache-age-threshold 300 key-cache-block-size 1024 key-cache-division-limit 100 key-cache-segments 0 -language MYSQL_SHAREDIR/ large-pages FALSE lc-messages en_US lc-messages-dir MYSQL_SHAREDIR/ diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 1b35fe5a56a..5af20fd0c3c 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -4678,6 +4678,7 @@ DROP TABLE t1,t2,t3; # LP bug#1007622 Server crashes in handler::increment_statistics on # inserting into a view over a view # +flush status; CREATE TABLE t1 (a INT); CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.* FROM t1 AS a1, t1 AS a2; CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1; @@ -4687,6 +4688,15 @@ a 1 drop view v2,v1; 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 # view and derived tables diff --git a/mysql-test/suite/rpl/t/rpl_start_stop_slave.test b/mysql-test/suite/rpl/t/rpl_start_stop_slave.test index c9c8f043668..ab388f3eebc 100644 --- a/mysql-test/suite/rpl/t/rpl_start_stop_slave.test +++ b/mysql-test/suite/rpl/t/rpl_start_stop_slave.test @@ -21,6 +21,16 @@ connection slave; --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); --echo [Time before the query] diff --git a/mysql-test/t/features.test b/mysql-test/t/features.test new file mode 100644 index 00000000000..a54b09a3fd3 --- /dev/null +++ b/mysql-test/t/features.test @@ -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"; diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index efb6956ae8f..4f739b524e6 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -4618,6 +4618,8 @@ DROP TABLE t1,t2,t3; --echo # inserting into a view over a view --echo # +flush status; + CREATE TABLE t1 (a INT); CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.* FROM t1 AS a1, t1 AS a2; CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1; @@ -4625,6 +4627,8 @@ INSERT INTO v2 (a) VALUES (1) ; select * from t1; drop view v2,v1; drop table t1; +show status like '%view%'; +show status like 'Opened_table%'; --echo # --echo # MDEV-486 LP BUG#1010116 Incorrect query results in diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index 55a3f6b36c4..b41c9e2cda0 100644 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -42,7 +42,7 @@ cond_wait(mythd, abstime, msg, SCHED_FUNC, __LINE__) extern pthread_attr_t connection_attrib; - +extern ulong event_executed; 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))) goto error; - ++started_events; + started_events++; + executed_events++; // For SHOW STATUS DBUG_PRINT("info", ("Event is in THD: 0x%lx", (long) new_thd)); DBUG_RETURN(FALSE); diff --git a/sql/field.cc b/sql/field.cc index 1004f58c945..a3d3d951887 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -9395,9 +9395,12 @@ Field *make_field(TABLE_SHARE *share, uchar *ptr, uint32 field_length, #ifdef HAVE_SPATIAL if (f_is_geom(pack_flag)) + { + status_var_increment(current_thd->status_var.feature_gis); return new Field_geom(ptr,null_pos,null_bit, unireg_check, field_name, share, pack_length, geom_type); + } #endif if (f_is_blob(pack_flag)) return new Field_blob(ptr,null_pos,null_bit, diff --git a/sql/item_func.cc b/sql/item_func.cc index 1e891f06f0b..441eb37d701 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -6046,6 +6046,8 @@ bool Item_func_match::fix_fields(THD *thd, Item **ref) DBUG_ASSERT(fixed == 0); Item *UNINIT_VAR(item); // Safe as arg_count is > 1 + status_var_increment(thd->status_var.feature_fulltext); + maybe_null=1; join_key=0; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index c5d1edbe475..ebfca684ccb 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -3774,6 +3774,7 @@ bool Item_func_dyncol_create::fix_fields(THD *thd, Item **ref) (arg_count / 2)); nums= (uint *) alloc_root(thd->mem_root, sizeof(uint) * (arg_count / 2)); + status_var_increment(thd->status_var.feature_dynamic_columns); return res || vals == 0 || nums == 0; } diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 8bb4e7af00f..091eb178d68 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -220,6 +220,8 @@ bool Item_subselect::fix_fields(THD *thd_param, Item **ref) uint8 uncacheable; bool res; + status_var_increment(thd->status_var.feature_subquery); + DBUG_ASSERT(fixed == 0); engine->set_thd((thd= thd_param)); if (!done_first_fix_fields) diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index 0fa2d39aea9..ae0a74c5ba6 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -2601,6 +2601,8 @@ void Item_xml_str_func::fix_length_and_dec() MY_XPATH xpath; int rc; + status_var_increment(current_thd->status_var.feature_xml); + nodeset_func= 0; if (agg_arg_charsets_for_comparison(collation, args, arg_count)) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c2a07e11f0e..e56b5123a7c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -482,6 +482,7 @@ ulonglong binlog_stmt_cache_size=0; ulonglong max_binlog_stmt_cache_size=0; ulonglong query_cache_size=0; ulong refresh_version; /* Increments on each reload */ +ulong executed_events=0; query_id_t global_query_id; my_atomic_rwlock_t global_query_id_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_writes", (char*) &delayed_insert_writes, SHOW_LONG}, {"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}, {"Handler_commit", (char*) offsetof(STATUS_VAR, ha_commit_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_tables", (char*) offsetof(STATUS_VAR, opened_tables), 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}, {"Rows_sent", (char*) offsetof(STATUS_VAR, rows_sent), 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; what_to_log= ~ (1L << (uint) COM_TIME); refresh_version= 1L; /* Increments on each reload */ + executed_events= 0; global_query_id= thread_id= 1L; my_atomic_rwlock_init(&global_query_id_lock); my_atomic_rwlock_init(&thread_running_lock); diff --git a/sql/mysqld.h b/sql/mysqld.h index 56419acdcd4..619f30ce683 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -175,6 +175,7 @@ extern ulong opt_binlog_rows_event_max_size; extern ulong rpl_recovery_rank, thread_cache_size; extern ulong stored_program_cache_size; extern ulong back_log; +extern ulong executed_events; extern char language[FN_REFLEN]; extern "C" MYSQL_PLUGIN_IMPORT ulong server_id; extern ulong concurrency; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index a1e00b74a47..85e9227c154 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -9421,6 +9421,7 @@ open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias, if (mysql_make_view(thd, parser, table_desc, (prgflag & OPEN_VIEW_NO_PARSE))) goto err; + status_var_increment(thd->status_var.opened_views); } else { diff --git a/sql/sql_class.h b/sql/sql_class.h index 845c2115922..344d6435ad5 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -620,25 +620,17 @@ typedef struct system_status_var ulong ha_savepoint_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 opened_tables; ulong opened_shares; + ulong opened_views; /* +1 opening a view */ + ulong select_full_join_count; ulong select_full_range_join_count; ulong select_range_count; ulong select_range_check_count; ulong select_scan_count; + ulong executed_triggers; ulong long_query_count; ulong filesort_merge_passes; ulong filesort_range_count; @@ -653,6 +645,16 @@ typedef struct system_status_var ulong com_stmt_reset; 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 access_denied_errors; ulong lost_connections; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 6f157c89ee2..dd14173e47f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1425,6 +1425,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, (thd->open_tables == NULL || (thd->locked_tables_mode == LTM_LOCK_TABLES))); + thd_proc_info(thd, "updating status"); /* Finalize server status flags after executing a command. */ thd->update_server_status(); thd->protocol->end_statement(); diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 1b942ecc93b..aff00f9fcf4 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -1334,6 +1334,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, triggers->definitions_list.elements); table->triggers= triggers; + status_var_increment(thd->status_var.feature_trigger); /* 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) return FALSE; + status_var_increment(thd->status_var.executed_triggers); + if (old_row_is_record1) { old_field= record1_field; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 2fdba7fda82..6de285086a2 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -3578,22 +3578,25 @@ static bool check_locale(sys_var *self, THD *thd, set_var *var) if (!locale->errmsgs->errmsgs) { + bool res; mysql_mutex_lock(&LOCK_error_messages); - if (!locale->errmsgs->errmsgs && - read_texts(ERRMSG_FILE, locale->errmsgs->language, - &locale->errmsgs->errmsgs, - ER_ERROR_LAST - ER_ERROR_FIRST + 1)) + res= (!locale->errmsgs->errmsgs && + read_texts(ERRMSG_FILE, locale->errmsgs->language, + &locale->errmsgs->errmsgs, + 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, "Can't process error message file for locale '%s'", locale->name); - mysql_mutex_unlock(&LOCK_error_messages); return true; } - mysql_mutex_unlock(&LOCK_error_messages); } + status_var_increment(thd->status_var.feature_locale); return false; } + static Sys_var_struct Sys_lc_messages( "lc_messages", "Set the language used for the error messages", SESSION_VAR(lc_messages), NO_CMD_LINE, diff --git a/sql/tztime.cc b/sql/tztime.cc index 9fae9f3fedd..ba24cab9ca7 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -2329,7 +2329,6 @@ my_tz_find(THD *thd, const String *name) if (!str_to_offset(name->ptr(), name->length(), &offset)) { - if (!(result_tz= (Time_zone_offset *)my_hash_search(&offset_tzs, (const uchar *)&offset, sizeof(long)))) @@ -2371,6 +2370,9 @@ my_tz_find(THD *thd, const String *name) 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); } |