From: Tatjana Azundris Nuernberg Date: August 11 2011 12:08pm Subject: bzr push into mysql-trunk branch (tatjana.nuernberg:3356 to 3358) List-Archive: http://lists.mysql.com/commits/140596 Message-Id: <201108111208.p7BC8Dvm024736@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3358 Tatjana Azundris Nuernberg 2011-08-11 [merge] auto-merge 3357 Tatjana Azundris Nuernberg 2011-08-11 [merge] auto-merge modified: mysql-test/r/sp_trans.result mysql-test/t/sp_trans.test sql/handler.cc sql/handler.h sql/mysqld.cc sql/sql_class.cc sql/sql_class.h sql/sql_parse.cc sql/sql_test.cc sql/sql_yacc.yy 3356 Marc Alff 2011-08-11 bzr cleanup removed: mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result.THIS mysql-test/suite/perfschema/r/pfs_upgrade_lc1.result.THIS mysql-test/suite/perfschema/r/pfs_upgrade_lc2.result.THIS mysql-test/suite/perfschema/r/schema_lc0.result.THIS mysql-test/suite/perfschema/r/schema_lc1.result.THIS mysql-test/suite/perfschema/r/schema_lc2.result.THIS === modified file 'mysql-test/r/sp_trans.result' --- a/mysql-test/r/sp_trans.result 2011-07-28 08:31:36 +0000 +++ b/mysql-test/r/sp_trans.result 2011-08-08 17:07:51 +0000 @@ -554,6 +554,52 @@ f1 bug13575(f1) 3 ccc drop function bug13575| drop table t3| +SELECT @@GLOBAL.default_storage_engine INTO @old_engine| +SET @@GLOBAL.default_storage_engine=InnoDB| +SET @@SESSION.default_storage_engine=InnoDB| +SHOW GLOBAL VARIABLES LIKE 'default_storage_engine'| +Variable_name Value +default_storage_engine InnoDB +SHOW SESSION VARIABLES LIKE 'default_storage_engine'| +Variable_name Value +default_storage_engine InnoDB +CREATE PROCEDURE bug11758414() +BEGIN +SET @@GLOBAL.default_storage_engine="MyISAM"; +SET @@SESSION.default_storage_engine="MyISAM"; +# show defaults at execution time / that setting them worked +SHOW GLOBAL VARIABLES LIKE 'default_storage_engine'; +SHOW SESSION VARIABLES LIKE 'default_storage_engine'; +CREATE TABLE t1 (id int); +CREATE TABLE t2 (id int) ENGINE=InnoDB; +# show we're heeding the default (at run-time, not parse-time!) + SHOW CREATE TABLE t1; + # show that we didn't break explicit override with ENGINE=... +SHOW CREATE TABLE t2; +END; +| +CALL bug11758414| +Variable_name Value +default_storage_engine MyISAM +Variable_name Value +default_storage_engine MyISAM +Table Create Table +t1 CREATE TABLE `t1` ( + `id` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +Table Create Table +t2 CREATE TABLE `t2` ( + `id` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW GLOBAL VARIABLES LIKE 'default_storage_engine'| +Variable_name Value +default_storage_engine MyISAM +SHOW SESSION VARIABLES LIKE 'default_storage_engine'| +Variable_name Value +default_storage_engine MyISAM +DROP PROCEDURE bug11758414| +DROP TABLE t1, t2| +SET @@GLOBAL.default_storage_engine=@old_engine| # # End of 5.1 tests # === modified file 'mysql-test/t/sp_trans.test' --- a/mysql-test/t/sp_trans.test 2010-10-06 14:34:28 +0000 +++ b/mysql-test/t/sp_trans.test 2011-08-08 17:07:51 +0000 @@ -598,6 +598,39 @@ select distinct f1, bug13575(f1) from t3 drop function bug13575| drop table t3| +# +# BUG#11758414: Default storage_engine not honored when set +# from within a stored procedure +# +SELECT @@GLOBAL.default_storage_engine INTO @old_engine| +SET @@GLOBAL.default_storage_engine=InnoDB| +SET @@SESSION.default_storage_engine=InnoDB| +# show defaults at define-time +SHOW GLOBAL VARIABLES LIKE 'default_storage_engine'| +SHOW SESSION VARIABLES LIKE 'default_storage_engine'| +CREATE PROCEDURE bug11758414() +BEGIN + SET @@GLOBAL.default_storage_engine="MyISAM"; + SET @@SESSION.default_storage_engine="MyISAM"; + # show defaults at execution time / that setting them worked + SHOW GLOBAL VARIABLES LIKE 'default_storage_engine'; + SHOW SESSION VARIABLES LIKE 'default_storage_engine'; + CREATE TABLE t1 (id int); + CREATE TABLE t2 (id int) ENGINE=InnoDB; + # show we're heeding the default (at run-time, not parse-time!) + SHOW CREATE TABLE t1; + # show that we didn't break explicit override with ENGINE=... + SHOW CREATE TABLE t2; +END; +| +CALL bug11758414| +# show that changing defaults within SP stuck +SHOW GLOBAL VARIABLES LIKE 'default_storage_engine'| +SHOW SESSION VARIABLES LIKE 'default_storage_engine'| +DROP PROCEDURE bug11758414| +DROP TABLE t1, t2| +SET @@GLOBAL.default_storage_engine=@old_engine| + --echo # --echo # End of 5.1 tests --echo # === modified file 'sql/handler.cc' --- a/sql/handler.cc 2011-08-05 10:26:13 +0000 +++ b/sql/handler.cc 2011-08-11 08:47:53 +0000 @@ -2150,7 +2150,7 @@ handler *handler::clone(const char *name -void handler::ha_statistic_increment(ulong SSV::*offset) const +void handler::ha_statistic_increment(ulonglong SSV::*offset) const { status_var_increment(table->in_use->status_var.*offset); } === modified file 'sql/handler.h' --- a/sql/handler.h 2011-08-05 10:26:13 +0000 +++ b/sql/handler.h 2011-08-11 08:47:53 +0000 @@ -2171,7 +2171,7 @@ public: protected: /* Service methods for use by storage engines. */ - void ha_statistic_increment(ulong SSV::*offset) const; + void ha_statistic_increment(ulonglong SSV::*offset) const; void **ha_data(THD *) const; THD *ha_thd(void) const; === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2011-07-28 10:54:44 +0000 +++ b/sql/mysqld.cc 2011-08-11 08:47:53 +0000 @@ -6460,18 +6460,18 @@ static int show_net_compression(THD *thd static int show_starttime(THD *thd, SHOW_VAR *var, char *buff) { - var->type= SHOW_LONG; + var->type= SHOW_LONGLONG; var->value= buff; - *((long *)buff)= (long) (thd->query_start() - server_start_time); + *((longlong *)buff)= (longlong) (thd->query_start() - server_start_time); return 0; } #ifdef ENABLED_PROFILING static int show_flushstatustime(THD *thd, SHOW_VAR *var, char *buff) { - var->type= SHOW_LONG; + var->type= SHOW_LONGLONG; var->value= buff; - *((long *)buff)= (long) (thd->query_start() - flush_status_time); + *((longlong *)buff)= (longlong) (thd->query_start() - flush_status_time); return 0; } #endif @@ -6968,31 +6968,31 @@ SHOW_VAR status_vars[]= { {"Com", (char*) com_status_vars, SHOW_ARRAY}, {"Compression", (char*) &show_net_compression, SHOW_FUNC}, {"Connections", (char*) &thread_id, SHOW_LONG_NOFLUSH}, - {"Created_tmp_disk_tables", (char*) offsetof(STATUS_VAR, created_tmp_disk_tables), SHOW_LONG_STATUS}, + {"Created_tmp_disk_tables", (char*) offsetof(STATUS_VAR, created_tmp_disk_tables), SHOW_LONGLONG_STATUS}, {"Created_tmp_files", (char*) &my_tmp_file_created, SHOW_LONG}, - {"Created_tmp_tables", (char*) offsetof(STATUS_VAR, created_tmp_tables), SHOW_LONG_STATUS}, + {"Created_tmp_tables", (char*) offsetof(STATUS_VAR, created_tmp_tables), SHOW_LONGLONG_STATUS}, {"Delayed_errors", (char*) &delayed_insert_errors, SHOW_LONG}, {"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_NOFLUSH}, {"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG}, {"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}, - {"Handler_discover", (char*) offsetof(STATUS_VAR, ha_discover_count), SHOW_LONG_STATUS}, - {"Handler_external_lock", (char*) offsetof(STATUS_VAR, ha_external_lock_count), SHOW_LONG_STATUS}, - {"Handler_mrr_init", (char*) offsetof(STATUS_VAR, ha_multi_range_read_init_count), SHOW_LONG_STATUS}, - {"Handler_prepare", (char*) offsetof(STATUS_VAR, ha_prepare_count), SHOW_LONG_STATUS}, - {"Handler_read_first", (char*) offsetof(STATUS_VAR, ha_read_first_count), SHOW_LONG_STATUS}, - {"Handler_read_key", (char*) offsetof(STATUS_VAR, ha_read_key_count), SHOW_LONG_STATUS}, - {"Handler_read_last", (char*) offsetof(STATUS_VAR, ha_read_last_count), SHOW_LONG_STATUS}, - {"Handler_read_next", (char*) offsetof(STATUS_VAR, ha_read_next_count), SHOW_LONG_STATUS}, - {"Handler_read_prev", (char*) offsetof(STATUS_VAR, ha_read_prev_count), SHOW_LONG_STATUS}, - {"Handler_read_rnd", (char*) offsetof(STATUS_VAR, ha_read_rnd_count), SHOW_LONG_STATUS}, - {"Handler_read_rnd_next", (char*) offsetof(STATUS_VAR, ha_read_rnd_next_count), SHOW_LONG_STATUS}, - {"Handler_rollback", (char*) offsetof(STATUS_VAR, ha_rollback_count), SHOW_LONG_STATUS}, - {"Handler_savepoint", (char*) offsetof(STATUS_VAR, ha_savepoint_count), SHOW_LONG_STATUS}, - {"Handler_savepoint_rollback",(char*) offsetof(STATUS_VAR, ha_savepoint_rollback_count), SHOW_LONG_STATUS}, - {"Handler_update", (char*) offsetof(STATUS_VAR, ha_update_count), SHOW_LONG_STATUS}, - {"Handler_write", (char*) offsetof(STATUS_VAR, ha_write_count), SHOW_LONG_STATUS}, + {"Handler_commit", (char*) offsetof(STATUS_VAR, ha_commit_count), SHOW_LONGLONG_STATUS}, + {"Handler_delete", (char*) offsetof(STATUS_VAR, ha_delete_count), SHOW_LONGLONG_STATUS}, + {"Handler_discover", (char*) offsetof(STATUS_VAR, ha_discover_count), SHOW_LONGLONG_STATUS}, + {"Handler_external_lock", (char*) offsetof(STATUS_VAR, ha_external_lock_count), SHOW_LONGLONG_STATUS}, + {"Handler_mrr_init", (char*) offsetof(STATUS_VAR, ha_multi_range_read_init_count), SHOW_LONGLONG_STATUS}, + {"Handler_prepare", (char*) offsetof(STATUS_VAR, ha_prepare_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_first", (char*) offsetof(STATUS_VAR, ha_read_first_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_key", (char*) offsetof(STATUS_VAR, ha_read_key_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_last", (char*) offsetof(STATUS_VAR, ha_read_last_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_next", (char*) offsetof(STATUS_VAR, ha_read_next_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_prev", (char*) offsetof(STATUS_VAR, ha_read_prev_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_rnd", (char*) offsetof(STATUS_VAR, ha_read_rnd_count), SHOW_LONGLONG_STATUS}, + {"Handler_read_rnd_next", (char*) offsetof(STATUS_VAR, ha_read_rnd_next_count), SHOW_LONGLONG_STATUS}, + {"Handler_rollback", (char*) offsetof(STATUS_VAR, ha_rollback_count), SHOW_LONGLONG_STATUS}, + {"Handler_savepoint", (char*) offsetof(STATUS_VAR, ha_savepoint_count), SHOW_LONGLONG_STATUS}, + {"Handler_savepoint_rollback",(char*) offsetof(STATUS_VAR, ha_savepoint_rollback_count), SHOW_LONGLONG_STATUS}, + {"Handler_update", (char*) offsetof(STATUS_VAR, ha_update_count), SHOW_LONGLONG_STATUS}, + {"Handler_write", (char*) offsetof(STATUS_VAR, ha_write_count), SHOW_LONGLONG_STATUS}, {"Key_blocks_not_flushed", (char*) offsetof(KEY_CACHE, global_blocks_changed), SHOW_KEY_CACHE_LONG}, {"Key_blocks_unused", (char*) offsetof(KEY_CACHE, blocks_unused), SHOW_KEY_CACHE_LONG}, {"Key_blocks_used", (char*) offsetof(KEY_CACHE, blocks_used), SHOW_KEY_CACHE_LONG}, @@ -7008,8 +7008,8 @@ SHOW_VAR status_vars[]= { {"Open_table_definitions", (char*) &show_table_definitions, SHOW_FUNC}, {"Open_tables", (char*) &show_open_tables, SHOW_FUNC}, {"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_tables", (char*) offsetof(STATUS_VAR, opened_tables), SHOW_LONGLONG_STATUS}, + {"Opened_table_definitions", (char*) offsetof(STATUS_VAR, opened_shares), SHOW_LONGLONG_STATUS}, {"Prepared_stmt_count", (char*) &show_prepared_stmt_count, SHOW_FUNC}, #ifdef HAVE_QUERY_CACHE {"Qcache_free_blocks", (char*) &query_cache.free_memory_blocks, SHOW_LONG_NOFLUSH}, @@ -7022,12 +7022,12 @@ SHOW_VAR status_vars[]= { {"Qcache_total_blocks", (char*) &query_cache.total_blocks, SHOW_LONG_NOFLUSH}, #endif /*HAVE_QUERY_CACHE*/ {"Queries", (char*) &show_queries, SHOW_FUNC}, - {"Questions", (char*) offsetof(STATUS_VAR, questions), SHOW_LONG_STATUS}, - {"Select_full_join", (char*) offsetof(STATUS_VAR, select_full_join_count), SHOW_LONG_STATUS}, - {"Select_full_range_join", (char*) offsetof(STATUS_VAR, select_full_range_join_count), SHOW_LONG_STATUS}, - {"Select_range", (char*) offsetof(STATUS_VAR, select_range_count), SHOW_LONG_STATUS}, - {"Select_range_check", (char*) offsetof(STATUS_VAR, select_range_check_count), SHOW_LONG_STATUS}, - {"Select_scan", (char*) offsetof(STATUS_VAR, select_scan_count), SHOW_LONG_STATUS}, + {"Questions", (char*) offsetof(STATUS_VAR, questions), SHOW_LONGLONG_STATUS}, + {"Select_full_join", (char*) offsetof(STATUS_VAR, select_full_join_count), SHOW_LONGLONG_STATUS}, + {"Select_full_range_join", (char*) offsetof(STATUS_VAR, select_full_range_join_count), SHOW_LONGLONG_STATUS}, + {"Select_range", (char*) offsetof(STATUS_VAR, select_range_count), SHOW_LONGLONG_STATUS}, + {"Select_range_check", (char*) offsetof(STATUS_VAR, select_range_check_count), SHOW_LONGLONG_STATUS}, + {"Select_scan", (char*) offsetof(STATUS_VAR, select_scan_count), SHOW_LONGLONG_STATUS}, {"Slave_open_temp_tables", (char*) &slave_open_temp_tables, SHOW_LONG}, #ifdef HAVE_REPLICATION {"Slave_retried_transactions",(char*) &show_slave_retried_trans, SHOW_FUNC}, @@ -7037,11 +7037,11 @@ SHOW_VAR status_vars[]= { {"Slave_running", (char*) &show_slave_running, SHOW_FUNC}, #endif {"Slow_launch_threads", (char*) &slow_launch_threads, SHOW_LONG}, - {"Slow_queries", (char*) offsetof(STATUS_VAR, long_query_count), SHOW_LONG_STATUS}, - {"Sort_merge_passes", (char*) offsetof(STATUS_VAR, filesort_merge_passes), SHOW_LONG_STATUS}, - {"Sort_range", (char*) offsetof(STATUS_VAR, filesort_range_count), SHOW_LONG_STATUS}, - {"Sort_rows", (char*) offsetof(STATUS_VAR, filesort_rows), SHOW_LONG_STATUS}, - {"Sort_scan", (char*) offsetof(STATUS_VAR, filesort_scan_count), SHOW_LONG_STATUS}, + {"Slow_queries", (char*) offsetof(STATUS_VAR, long_query_count), SHOW_LONGLONG_STATUS}, + {"Sort_merge_passes", (char*) offsetof(STATUS_VAR, filesort_merge_passes), SHOW_LONGLONG_STATUS}, + {"Sort_range", (char*) offsetof(STATUS_VAR, filesort_range_count), SHOW_LONGLONG_STATUS}, + {"Sort_rows", (char*) offsetof(STATUS_VAR, filesort_rows), SHOW_LONGLONG_STATUS}, + {"Sort_scan", (char*) offsetof(STATUS_VAR, filesort_scan_count), SHOW_LONGLONG_STATUS}, #ifdef HAVE_OPENSSL #ifndef EMBEDDED_LIBRARY {"Ssl_accept_renegotiates", (char*) &show_ssl_ctx_sess_accept_renegotiate, SHOW_FUNC}, === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2011-08-02 08:14:26 +0000 +++ b/sql/sql_class.cc 2011-08-11 08:47:53 +0000 @@ -1405,23 +1405,26 @@ THD::~THD() from_var from this array NOTES - This function assumes that all variables are long/ulong. + This function assumes that all variables are longlong/ulonglong. If this assumption will change, then we have to explictely add the other variables after the while loop */ void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var) { - ulong *end= (ulong*) ((uchar*) to_var + - offsetof(STATUS_VAR, last_system_status_var) + - sizeof(ulong)); - ulong *to= (ulong*) to_var, *from= (ulong*) from_var; + int c; + ulonglong *end= (ulonglong*) ((uchar*) to_var + + offsetof(STATUS_VAR, last_system_status_var) + + sizeof(ulonglong)); + ulonglong *to= (ulonglong*) to_var, *from= (ulonglong*) from_var; while (to != end) *(to++)+= *(from++); - to_var->bytes_received+= from_var->bytes_received; - to_var->bytes_sent+= from_var->bytes_sent; + to_var->com_other+= from_var->com_other; + + for (c= 0; c< SQLCOM_END; c++) + to_var->com_stat[(uint) c] += from_var->com_stat[(uint) c]; } /* @@ -1434,22 +1437,27 @@ void add_to_status(STATUS_VAR *to_var, S dec_var minus this array NOTE - This function assumes that all variables are long/ulong. + This function assumes that all variables are longlong/ulonglong. */ void add_diff_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var, STATUS_VAR *dec_var) { - ulong *end= (ulong*) ((uchar*) to_var + offsetof(STATUS_VAR, - last_system_status_var) + - sizeof(ulong)); - ulong *to= (ulong*) to_var, *from= (ulong*) from_var, *dec= (ulong*) dec_var; + int c; + ulonglong *end= (ulonglong*) ((uchar*) to_var + offsetof(STATUS_VAR, + last_system_status_var) + + sizeof(ulonglong)); + ulonglong *to= (ulonglong*) to_var, + *from= (ulonglong*) from_var, + *dec= (ulonglong*) dec_var; while (to != end) *(to++)+= *(from++) - *(dec++); - to_var->bytes_received+= from_var->bytes_received - dec_var->bytes_received;; - to_var->bytes_sent+= from_var->bytes_sent - dec_var->bytes_sent; + to_var->com_other+= from_var->com_other - dec_var->com_other; + + for (c= 0; c< SQLCOM_END; c++) + to_var->com_stat[(uint) c] += from_var->com_stat[(uint) c] -dec_var->com_stat[(uint) c]; } === modified file 'sql/sql_class.h' --- a/sql/sql_class.h 2011-08-02 08:14:26 +0000 +++ b/sql/sql_class.h 2011-08-11 08:47:53 +0000 @@ -554,70 +554,75 @@ typedef struct system_variables typedef struct system_status_var { - ulong com_other; - ulong com_stat[(uint) SQLCOM_END]; - ulong created_tmp_disk_tables; - ulong created_tmp_tables; - ulong ha_commit_count; - ulong ha_delete_count; - ulong ha_read_first_count; - ulong ha_read_last_count; - ulong ha_read_key_count; - ulong ha_read_next_count; - ulong ha_read_prev_count; - ulong ha_read_rnd_count; - ulong ha_read_rnd_next_count; + ulonglong created_tmp_disk_tables; + ulonglong created_tmp_tables; + ulonglong ha_commit_count; + ulonglong ha_delete_count; + ulonglong ha_read_first_count; + ulonglong ha_read_last_count; + ulonglong ha_read_key_count; + ulonglong ha_read_next_count; + ulonglong ha_read_prev_count; + ulonglong ha_read_rnd_count; + ulonglong ha_read_rnd_next_count; /* This number doesn't include calls to the default implementation and calls made by range access. The intent is to count only calls made by BatchedKeyAccess. */ - ulong ha_multi_range_read_init_count; - ulong ha_rollback_count; - ulong ha_update_count; - ulong ha_write_count; - ulong ha_prepare_count; - ulong ha_discover_count; - ulong ha_savepoint_count; - ulong ha_savepoint_rollback_count; - ulong ha_external_lock_count; + ulonglong ha_multi_range_read_init_count; + ulonglong ha_rollback_count; + ulonglong ha_update_count; + ulonglong ha_write_count; + ulonglong ha_prepare_count; + ulonglong ha_discover_count; + ulonglong ha_savepoint_count; + ulonglong ha_savepoint_rollback_count; + ulonglong ha_external_lock_count; +#if 0 + /* Tatiana thinks this may be dead now. */ /* 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; + ulonglong key_blocks_changed; + ulonglong key_blocks_used; + ulonglong key_cache_r_requests; + ulonglong key_cache_read; + ulonglong key_cache_w_requests; + ulonglong key_cache_write; /* END OF KEY_CACHE parts */ +#endif - ulong opened_tables; - ulong opened_shares; - 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 long_query_count; - ulong filesort_merge_passes; - ulong filesort_range_count; - ulong filesort_rows; - ulong filesort_scan_count; + ulonglong opened_tables; + ulonglong opened_shares; + ulonglong select_full_join_count; + ulonglong select_full_range_join_count; + ulonglong select_range_count; + ulonglong select_range_check_count; + ulonglong select_scan_count; + ulonglong long_query_count; + ulonglong filesort_merge_passes; + ulonglong filesort_range_count; + ulonglong filesort_rows; + ulonglong filesort_scan_count; /* Prepared statements and binary protocol */ - ulong com_stmt_prepare; - ulong com_stmt_reprepare; - ulong com_stmt_execute; - ulong com_stmt_send_long_data; - ulong com_stmt_fetch; - ulong com_stmt_reset; - ulong com_stmt_close; + ulonglong com_stmt_prepare; + ulonglong com_stmt_reprepare; + ulonglong com_stmt_execute; + ulonglong com_stmt_send_long_data; + ulonglong com_stmt_fetch; + ulonglong com_stmt_reset; + ulonglong com_stmt_close; + + ulonglong bytes_received; + ulonglong bytes_sent; /* Number of statements sent from the client */ - ulong questions; + ulonglong questions; + + ulong com_other; + ulong com_stat[(uint) SQLCOM_END]; - ulonglong bytes_received; - ulonglong bytes_sent; /* IMPORTANT! SEE last_system_status_var DEFINITION BELOW. === modified file 'sql/sql_parse.cc' --- a/sql/sql_parse.cc 2011-08-05 10:26:13 +0000 +++ b/sql/sql_parse.cc 2011-08-08 17:07:51 +0000 @@ -2547,6 +2547,13 @@ case SQLCOM_PREPARE: goto end_with_restore_list; #endif /* + If no engine type was given, work out the default now + rather than at parse-time. + */ + if (!(create_info.used_fields & HA_CREATE_USED_ENGINE)) + create_info.db_type= create_info.options & HA_LEX_CREATE_TMP_TABLE ? + ha_default_temp_handlerton(thd) : ha_default_handlerton(thd); + /* If we are using SET CHARSET without DEFAULT, add an implicit DEFAULT to not confuse old users. (This may change). */ === modified file 'sql/sql_test.cc' --- a/sql/sql_test.cc 2011-07-19 15:11:15 +0000 +++ b/sql/sql_test.cc 2011-08-11 08:47:53 +0000 @@ -571,13 +571,13 @@ void mysql_print_status() process_key_caches(print_key_cache_status); mysql_mutex_lock(&LOCK_status); printf("\nhandler status:\n\ -read_key: %10lu\n\ -read_next: %10lu\n\ -read_rnd %10lu\n\ -read_first: %10lu\n\ -write: %10lu\n\ -delete %10lu\n\ -update: %10lu\n", +read_key: %10llu\n\ +read_next: %10llu\n\ +read_rnd %10llu\n\ +read_first: %10llu\n\ +write: %10llu\n\ +delete %10llu\n\ +update: %10llu\n", tmp.ha_read_key_count, tmp.ha_read_next_count, tmp.ha_read_rnd_count, @@ -591,7 +591,7 @@ Opened tables: %10lu\n\ Open tables: %10lu\n\ Open files: %10lu\n\ Open streams: %10lu\n", - tmp.opened_tables, + (ulong) tmp.opened_tables, (ulong) cached_open_tables(), (ulong) my_file_opened, (ulong) my_stream_opened); === modified file 'sql/sql_yacc.yy' --- a/sql/sql_yacc.yy 2011-08-05 10:26:13 +0000 +++ b/sql/sql_yacc.yy 2011-08-11 09:12:51 +0000 @@ -2073,9 +2073,6 @@ create: lex->change=NullS; memset(&lex->create_info, 0, sizeof(lex->create_info)); lex->create_info.options=$2 | $4; - lex->create_info.db_type= - lex->create_info.options & HA_LEX_CREATE_TMP_TABLE ? - ha_default_temp_handlerton(thd) : ha_default_handlerton(thd); lex->create_info.default_table_charset= NULL; lex->name.str= 0; lex->name.length= 0; @@ -2086,7 +2083,8 @@ create: THD *thd= YYTHD; LEX *lex= thd->lex; lex->current_select= &lex->select_lex; - if (!lex->create_info.db_type) + if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) && + !lex->create_info.db_type) { lex->create_info.db_type= lex->create_info.options & HA_LEX_CREATE_TMP_TABLE ? @@ -5082,8 +5080,7 @@ create_table_option: ENGINE_SYM opt_equal storage_engines { Lex->create_info.db_type= $3; - if ($3) - Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE; + Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE; } | MAX_ROWS opt_equal ulonglong_num { @@ -6883,6 +6880,11 @@ alter_list_item: { LEX *lex=Lex; lex->alter_info.flags|= ALTER_OPTIONS; + if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) && + !lex->create_info.db_type) + { + lex->create_info.used_fields&= ~HA_CREATE_USED_ENGINE; + } } | FORCE_SYM { No bundle (reason: useless for push emails).