SHOW STATUS are not anymore put in slow query log because of no index usage.
Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command()
This simplifies code and allows us to remove some if statements all over the code.
Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands.
This allowed some overall simplifaction when testing sql_command.
Fixes bugs:
Bug#10210: running SHOW STATUS increments counters it shouldn't
Bug#19764: SHOW commands end up in the slow log as table scans
mysql-test/r/grant_cache.result:
Fixed results after SHOW STATUS doesn't anymore affect status variables
mysql-test/r/information_schema.result:
Added extra test to cover more code
mysql-test/r/query_cache.result:
Remove resuts from previous tests
mysql-test/r/status.result:
Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables.
(Bug#10210)
mysql-test/r/temp_table.result:
Fixed results after SHOW STATUS doesn't anymore affect status variables
mysql-test/r/union.result:
Fixed results after SHOW STATUS is not logged to slow query log
(Bug#19764)
mysql-test/t/events_microsec.test:
Disable warnings at init
mysql-test/t/information_schema.test:
Added extra test to cover more code
mysql-test/t/query_cache.test:
Remove resuts from previous tests
mysql-test/t/status.test:
Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables.
(Bug #10210)
sql/mysql_priv.h:
Added 'sql_command_flags'
sql/sql_class.cc:
New function add_diff_to_status(), used to update global status variables when using SHOW STATUS
sql/sql_class.h:
New function 'fill_information_schema_tables()'
(One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables)
Added defines for bit flags in sql_command_flags[]
sql/sql_lex.cc:
Remove orig_sql_command
sql/sql_lex.h:
Remove orig_sql_command
sql/sql_parse.cc:
Rename uc_update_queries -> sql_command_flags.
Enhanced 'sql_command_flags' to better classify SQL commands
uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA)
lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0)
Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands.
Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function.
Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling.
These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command.
Don't log SHOW STATUS commands to slow query log.
This fixes Bug#10210 and Bug#19764 without adding additional 'if' code.
(The new code is faster than the original as we now have fewer if's than before)
sql/sql_prepare.cc:
Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[]
This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement.
sql/sql_select.cc:
Remove special handling of SHOW STATUS.
(This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command())
sql/sql_show.cc:
Remove orig_sql_command
Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data.
Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values.
Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command.
sql/sql_yacc.yy:
Remove usage of orig_sql_command.
One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command.
sql/structs.h:
Updated comment
though unneeded". It's indeed unneeded, as slave is only interested in
permanent tables, and permanent tables don't depend on temporary tables
when in row-based binlogging mode. And other CREATE TEMPORARY TABLE
(referring no table or with LIKE) already don't write the CREATE to
binlog in row-based mode.
mysql-test/r/rpl_row_create_table.result:
result update (note that no lines appear in SHOW BINLOG EVENTS further below, which is how we
see the bug is fixed)
mysql-test/t/rpl_row_create_table.test:
testing if a CREATE TEMPORARY TABLE SELECT goes to binlog (it should not)
when in row-based binlogging mode. A few lines after, there is a SHOW
BINLOG EVENTS; before the bugfix it showed the CREATE TEMPORARY TABLE.
sql/sql_class.h:
a method to access select_create::create_info from outside of select_create
("read-only" access). Making get_thd() "read-only" too.
sql/sql_insert.cc:
The function (hook) which writes CREATE TABLE to binlog when in row-based
binlogging mode, for CREATE TABLE SELECT, now does nothing if the table
is temporary (as in row-based mode, temp tables are not replicated).
This is consistent with CREATE TEMPORARY TABLE LIKE and
CREATE TEMPORARY TABLE, which don't write any CREATE to binlog in row-based
mode.
into dator5.(none):/home/pappa/bug17138
mysql-test/t/partition.test:
Auto merged
sql/handler.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_table.cc:
Auto merged
a fatal error. New handling of ignore error in place.
mysql-test/t/partition.test:
New test case
sql/ha_ndbcluster.h:
New handler method to check if error can be ignored
sql/ha_partition.h:
New handler method to check if error can be ignored
sql/handler.h:
New handler method to check if error can be ignored
sql/sql_acl.cc:
Use new handler method
sql/sql_insert.cc:
Use new handler method
sql/sql_table.cc:
Use new handler method
sql/sql_union.cc:
Use new handler method
sql/sql_update.cc:
Use new handler method
Reverted fix for bug#18360
mysql-test/t/func_in.test:
Reverted fix for bug#18360
mysql-test/r/func_in.result:
Reverted fix for bug#18360
sql/item_cmpfunc.cc:
Reverted fix for bug#18360
into bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
mysql-test/r/join.result:
Auto merged
mysql-test/t/join.test:
Auto merged
sql/log.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_show.cc:
Auto merged
There was an incomplete reset of the name resolution context, that caused
INSERT ... SELECT ... JOIN statements to resolve not by joint row type calculated
for the join.
Removed the redundant re-initialization of the context, because
mysql_insert_select_prepare() now correctly saves/restores the context.
mysql-test/r/insert_select.result:
Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error
- testsuite for the bug
mysql-test/t/insert_select.test:
Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error
- testsuite for the bug
sql/sql_parse.cc:
Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error
- remove an incomplete reset of the context because the mentioned function
correctly saves/restores the context.
mysql-test/r/mysqldump.result:
Changed to other database (BUG#20531 hinders usage of 'test' database)
mysql-test/t/mysqldump.test:
Changed to other database (BUG#20531 hinders usage of 'test' database)
1. Removed '-P' command line option;
2. Renamed '--passwd' command line option to '--print-password-line'.
mysql-test/t/im_cmd_line.imtest:
Renamed "--passwd" to "--print-password-line".
server-tools/instance-manager/options.cc:
1. Removed '-P' option;
2. Renamed '--passwd' to '--print-password-line'.
server-tools/instance-manager/user_management_commands.cc:
Renamed class Passwd_cmd to Print_password_line_cmd.
server-tools/instance-manager/user_management_commands.h:
Renamed class Passwd_cmd to Print_password_line_cmd.
tables
Currently in INSERT ... SELECT ... LIMIT ... the compiler uses a
temporary table to store the results of SELECT ... LIMIT .. and then
uses that table as a source for INSERT. The problem is that in some cases
it actually skips the LIMIT clause in doing that and materializes the
whole SELECT result set regardless of the LIMIT.
This fix is limiting the process of filling up the temp table with only
that much rows that will be actually used by propagating the LIMIT value.
mysql-test/r/insert_select.result:
* Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big
tables
- a test demonstrating the code path
mysql-test/t/insert_select.test:
* Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big
tables
- a test demonstrating the code path
sql/sql_select.cc:
* Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big
tables
- pass through the real LIMIT number if the temp table is created for
buffering results.
- set the counter for all the cases when the temp table is not used for
grouping
- fix for IM stopping routine;
- polishing.
mysql-test/lib/mtr_process.pl:
Polishing: make mtr_kill_process() more verbose in debug mode.
mysql-test/mysql-test-run.pl:
1. Fix stopping of IM running as a daemon -- after death of the main IM
process, we should wait for the IM angel to die.
2. Polishing -- be more verbose in debug mode.
into mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge
mysql-test/t/archive.test:
Auto merged
sql/log.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
can be started several times; monitor interval must be > 2sec
mysql-test/r/im_daemon_life_cycle.result:
Updated result file.
mysql-test/r/im_life_cycle.result:
Updated result file.
mysql-test/r/im_utils.result:
Updated result file.
mysql-test/t/im_daemon_life_cycle-im.opt:
Set monitoring interval to 1 second in order to:
- be consistent with 5.1;
- speed up tests;
mysql-test/t/im_daemon_life_cycle.imtest:
1. Use wait_for_start.sh script to minimize chance of race condition.
2. Polishing.
mysql-test/t/im_life_cycle.imtest:
1. Use wait_for_start.sh and wait_for_stop.sh scripts to
minimize chance of race condition;
2. Remove some statements, because there is no way now to
stabilize their output.
3. Polishing;
mysql-test/t/im_utils.imtest:
1. Use wait_for_start.sh script to minimize chance of race condition.
2. Polishing.
mysql-test/t/kill_n_check.sh:
1. Make timeout configurable by command-line argument;
2. Change algorithm of waiting for process to restart to be
more robust.
mysql-test/t/im_life_cycle-im.opt:
Set monitoring interval to 1 second in order to:
- be consistent with 5.1;
- speed up tests;
mysql-test/t/im_utils-im.opt:
Set monitoring interval to 1 second in order to:
- be consistent with 5.1;
- speed up tests;
mysql-test/t/wait_for_process.sh:
A new helper script, intended to be used instead of dummy "sleep"
when waiting for some process to start or stop.
into mysql.com:/users/lthalmann/bk/MERGE/mysql-5.0-merge
client/mysqldump.c:
Auto merged
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
Certain updates of table joined to self results in unexpected
behavior.
The problem was that record cache was mistakenly enabled for
self-joined table updates. Normally record cache must be disabled
for such updates.
Fixed wrong condition in code that determines whether to use
record cache for self-joined table updates.
Only MyISAM tables were affected.
mysql-test/r/myisam.result:
Test case for BUG#18036.
mysql-test/t/myisam.test:
Test case for BUG#18036.
sql/sql_update.cc:
Fixed wrong condition in code that determines whether to use
record cache for self-joined table updates.
mysql-test/extra/rpl_tests/rpl_truncate_helper.test:
Rename: mysql-test/extra/rpl_tests/rpl_truncate_helper.inc -> mysql-test/extra/rpl_tests/rpl_truncate_helper.test
mysql-test/extra/rpl_tests/rpl_truncate.test:
File included from test changed name.
Fixed failing test case
field.cc, item_cmpfunc.cc, select.result:
After merge fix
mysql-test/r/select.result:
After merge fix
mysql-test/r/rpl_stm_log.result:
Fixed failing test case
sql/item_cmpfunc.cc:
After merge fix
sql/field.cc:
After merge fix
mysql-test/extra/rpl_tests/rpl_log.test:
Fixed failing test case
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
tests/mysql_client_test.c:
Auto merged
configure.in:
Auto merged
client/mysqlbinlog.cc:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/archive.result:
Auto merged
mysql-test/r/auto_increment.result:
Auto merged
mysql-test/r/cast.result:
Auto merged
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/r/func_group.result:
Auto merged
mysql-test/r/func_str.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/multi_update.result:
Auto merged
mysql-test/r/ndb_lock.result:
Auto merged
mysql-test/r/replace.result:
Auto merged
mysql-test/r/union.result:
Auto merged
mysql-test/t/archive.test:
Auto merged
mysql-test/t/auto_increment.test:
Auto merged
mysql-test/t/delayed.test:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/multi_update.test:
Auto merged
mysql-test/t/ndb_lock.test:
Auto merged
mysql-test/t/select.test:
Auto merged
sql/field.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/structs.h:
Auto merged
storage/archive/ha_archive.cc:
Auto merged
tests/mysql_client_test.c:
Auto merged
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/archive.result:
Auto merged
mysql-test/r/auto_increment.result:
Auto merged
mysql-test/r/ndb_lock.result:
Auto merged
mysql-test/r/rpl_log.result:
Auto merged
mysql-test/t/archive.test:
Auto merged
mysql-test/t/auto_increment.test:
Auto merged
mysql-test/t/ndb_lock.test:
Auto merged
mysql-test/t/rpl_log.test:
Auto merged
sql/ha_archive.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
tests/mysql_client_test.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/archive.result:
Auto merged
mysql-test/r/auto_increment.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/ndb_lock.result:
Auto merged
mysql-test/r/rpl_log.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/t/archive.test:
Auto merged
mysql-test/t/auto_increment.test:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/ndb_lock.test:
Auto merged
mysql-test/t/rpl_log.test:
Auto merged
mysql-test/t/select.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/item_timefunc.h:
Auto merged
sql/sql_lex.cc:
Auto merged
tests/mysql_client_test.c:
Auto merged