From: Jon Olav Hauglid Date: November 8 2010 2:37pm Subject: bzr push into mysql-5.5-runtime branch (jon.hauglid:3177 to 3178) List-Archive: http://lists.mysql.com/commits/123094 Message-Id: <201011081437.oA8AxxUx005908@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3178 Jon Olav Hauglid 2010-11-08 [merge] Merge from mysql-5.5-bugteam to mysql-5.5-runtime No conflicts added: mysql-test/std_data/bug57108.cnf mysql-test/suite/bugs/r/bug57108.result mysql-test/suite/bugs/t/bug57108-master.opt mysql-test/suite/bugs/t/bug57108.test modified: include/my_sys.h libmysqld/lib_sql.cc mysql-test/collections/default.experimental mysql-test/mysql-test-run.pl mysql-test/r/log_tables.result mysql-test/t/log_tables.test mysys/default.c mysys/stacktrace.c sql/sql_plugin.cc sql/sql_rename.cc storage/ndb/src/mgmsrv/InitConfigFileParser.cpp 3177 Jon Olav Hauglid 2010-11-05 [merge] Merge from mysql-5.5-bugteam to mysql-5.5-runtime No conflicts removed: win/build-nmake-x64.bat win/build-nmake.bat win/build-vs71.bat win/build-vs8.bat win/build-vs8_x64.bat win/build-vs9.bat win/build-vs9_x64.bat added: mysql-test/suite/sys_vars/inc/autocommit_func2.inc mysql-test/suite/sys_vars/r/autocommit_func2.result mysql-test/suite/sys_vars/r/autocommit_func3.result mysql-test/suite/sys_vars/t/autocommit_func2-master.opt mysql-test/suite/sys_vars/t/autocommit_func2.test mysql-test/suite/sys_vars/t/autocommit_func3-master.opt mysql-test/suite/sys_vars/t/autocommit_func3.test modified: .bzrignore CMakeLists.txt cmake/mysql_version.cmake config/ac-macros/maintainer.m4 configure.in mysql-test/mysql-test-run.pl mysql-test/r/1st.result mysql-test/r/connect.result mysql-test/r/errors.result mysql-test/r/information_schema.result mysql-test/r/keywords.result mysql-test/r/log_tables_upgrade.result mysql-test/r/mysql_upgrade.result mysql-test/r/mysql_upgrade_ssl.result mysql-test/r/mysqlcheck.result mysql-test/r/mysqld--help-notwin.result mysql-test/r/mysqld--help-win.result mysql-test/r/plugin_auth.result mysql-test/r/system_mysql_db.result mysql-test/suite/funcs_1/r/is_columns_mysql.result mysql-test/suite/funcs_1/r/is_key_column_usage.result mysql-test/suite/funcs_1/r/is_statistics.result mysql-test/suite/funcs_1/r/is_statistics_mysql.result mysql-test/suite/funcs_1/r/is_table_constraints.result mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result mysql-test/suite/funcs_1/r/is_tables_mysql.result mysql-test/t/errors.test mysql-test/t/keywords.test mysql-test/t/plugin_auth.test mysql-test/t/system_mysql_db_fix40123.test mysql-test/t/system_mysql_db_fix50030.test mysql-test/t/system_mysql_db_fix50117.test scripts/mysql_system_tables.sql scripts/mysql_system_tables_data.sql scripts/mysql_system_tables_fix.sql sql/item.cc sql/mysqld.cc sql/mysqld.h sql/rpl_handler.cc sql/sql_acl.cc sql/sql_partition.cc sql/sql_show.cc sql/sql_yacc.yy storage/innobase/os/os0sync.c support-files/mysql.spec.sh win/README === modified file 'include/my_sys.h' --- a/include/my_sys.h 2010-08-09 08:32:50 +0000 +++ b/include/my_sys.h 2010-11-04 10:00:59 +0000 @@ -256,7 +256,7 @@ extern my_bool my_disable_locking, my_d extern char wild_many,wild_one,wild_prefix; extern const char *charsets_dir; /* from default.c */ -extern char *my_defaults_extra_file; +extern const char *my_defaults_extra_file; extern const char *my_defaults_group_suffix; extern const char *my_defaults_file; === modified file 'libmysqld/lib_sql.cc' --- a/libmysqld/lib_sql.cc 2010-10-04 12:42:16 +0000 +++ b/libmysqld/lib_sql.cc 2010-11-04 10:00:59 +0000 @@ -506,7 +506,8 @@ int init_embedded_server(int argc, char orig_argc= *argcp; orig_argv= *argvp; - load_defaults("my", (const char **)groups, argcp, argvp); + if (load_defaults("my", (const char **)groups, argcp, argvp)) + return 1; defaults_argc= *argcp; defaults_argv= *argvp; remaining_argc= argc; === modified file 'mysql-test/collections/default.experimental' --- a/mysql-test/collections/default.experimental 2010-11-01 07:00:40 +0000 +++ b/mysql-test/collections/default.experimental 2010-11-07 04:41:03 +0000 @@ -24,7 +24,6 @@ main.wait_timeout @solaris rpl.rpl_heartbeat_basic # BUG#54820 2010-06-26 alik rpl.rpl_heartbeat_basic fails sporadically again rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails sporadically rpl.rpl_innodb_bug28430* # Bug#46029 -rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun sys_vars.slow_query_log_func @solaris # Bug#54819 2010-06-26 alik sys_vars.slow_query_log_func fails sporadically on Solaris 10 === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-11-05 13:16:27 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-11-05 14:50:11 +0000 @@ -4463,7 +4463,13 @@ sub mysqld_arguments ($$$) { my $mysqld= shift; my $extra_opts= shift; - mtr_add_arg($args, "--defaults-file=%s", $path_config_file); + my @defaults = grep(/^--defaults-file=/, @$extra_opts); + if (@defaults > 0) { + mtr_add_arg($args, pop(@defaults)) + } + else { + mtr_add_arg($args, "--defaults-file=%s", $path_config_file); + } # When mysqld is run by a root user(euid is 0), it will fail # to start unless we specify what user to run as, see BUG#30630 @@ -4499,6 +4505,9 @@ sub mysqld_arguments ($$$) { my $found_skip_core= 0; foreach my $arg ( @$extra_opts ) { + # Skip --defaults-file option since it's handled above. + next if $arg =~ /^--defaults-file/; + # Allow --skip-core-file to be set in -[master|slave].opt file if ($arg eq "--skip-core-file") { === modified file 'mysql-test/r/log_tables.result' --- a/mysql-test/r/log_tables.result 2009-12-22 11:02:52 +0000 +++ b/mysql-test/r/log_tables.result 2010-11-07 18:06:22 +0000 @@ -896,6 +896,16 @@ TIMESTAMP 1 1 SELECT SQL_NO_CACHE 'Bug#3 TIMESTAMP 1 1 SELECT SQL_NO_CACHE 'Bug#31700 - PK', f1,f2,f3,SLEEP(1.1) FROM t1 WHERE f1=2 DROP TABLE t1; TRUNCATE TABLE mysql.slow_log; +use mysql; +drop table if exists renamed_general_log; +drop table if exists renamed_slow_log; +RENAME TABLE general_log TO renamed_general_log; +ERROR HY000: Cannot rename 'general_log'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to 'general_log' +RENAME TABLE slow_log TO renamed_slow_log; +ERROR HY000: Cannot rename 'slow_log'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to 'slow_log' +use test; +flush tables with read lock; +unlock tables; SET @@session.long_query_time= @old_long_query_time; SET @@global.log_output= @old_log_output; SET @@global.slow_query_log= @old_slow_query_log; === added file 'mysql-test/std_data/bug57108.cnf' --- a/mysql-test/std_data/bug57108.cnf 1970-01-01 00:00:00 +0000 +++ b/mysql-test/std_data/bug57108.cnf 2010-11-04 10:00:59 +0000 @@ -0,0 +1,95 @@ +[mysqld] +open-files-limit=1024 +character-set-server=latin1 +connect-timeout=4711 +log-bin-trust-function-creators=1 +key_buffer_size=1M +sort_buffer=256K +max_heap_table_size=1M +loose-innodb_data_file_path=ibdata1:10M:autoextend +loose-innodb_buffer_pool_size=8M +loose-innodb_write_io_threads=2 +loose-innodb_read_io_threads=2 +loose-innodb_log_buffer_size=1M +loose-innodb_log_file_size=5M +loose-innodb_additional_mem_pool_size=1M +loose-innodb_log_files_in_group=2 +slave-net-timeout=120 +log-bin=mysqld-bin +loose-enable-performance-schema +loose-performance-schema-max-mutex-instances=10000 +loose-performance-schema-max-rwlock-instances=10000 +loose-performance-schema-max-table-instances=500 +loose-performance-schema-max-table-handles=1000 +binlog-direct-non-transactional-updates + +[mysql] +default-character-set=latin1 + +[mysqlshow] +default-character-set=latin1 + +[mysqlimport] +default-character-set=latin1 + +[mysqlcheck] +default-character-set=latin1 + +[mysql_upgrade] +default-character-set=latin1 +tmpdir=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/tmp + +[mysqld.1] +#!run-master-sh +log-bin=master-bin +loose-enable-performance-schema +basedir=/home/bzr/bugs/b57108-5.5-bugteam +tmpdir=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/tmp/mysqld.1 +character-sets-dir=/home/bzr/bugs/b57108-5.5-bugteam/sql/share/charsets +lc-messages-dir=/home/bzr/bugs/b57108-5.5-bugteam/sql/share/ +datadir=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/mysqld.1/data +pid-file=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/run/mysqld.1.pid +#host=localhost +port=13000 +socket=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/tmp/mysqld.1.sock +#log-error=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/log/mysqld.1.err +general_log=1 +general_log_file=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/mysqld.1/mysqld.log +slow_query_log=1 +slow_query_log_file=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/mysqld.1/mysqld-slow.log +#user=root +#password= +server-id=1 +secure-file-priv=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var +ssl-ca=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/std_data/cacert.pem +ssl-cert=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/std_data/server-cert.pem +ssl-key=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/std_data/server-key.pem + +[mysqlbinlog] +disable-force-if-open +character-sets-dir=/home/bzr/bugs/b57108-5.5-bugteam/sql/share/charsets + +[ENV] +MASTER_MYPORT=13000 +MASTER_MYSOCK=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/tmp/mysqld.1.sock + +[client] +password= +user=root +port=13000 +host=localhost +socket=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/tmp/mysqld.1.sock + +[mysqltest] +ssl-ca=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/std_data/cacert.pem +ssl-cert=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/std_data/client-cert.pem +ssl-key=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/std_data/client-key.pem +skip-ssl=1 + +[client.1] +password= +user=root +port=13000 +host=localhost +socket=/home/bzr/bugs/b57108-5.5-bugteam/mysql-test/var/tmp/mysqld.1.sock + === added file 'mysql-test/suite/bugs/r/bug57108.result' --- a/mysql-test/suite/bugs/r/bug57108.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/bugs/r/bug57108.result 2010-11-04 10:00:59 +0000 @@ -0,0 +1,5 @@ +INSTALL PLUGIN example SONAME 'ha_example.so'; +SELECT @@global.connect_timeout AS connect_timeout, @@global.local_infile AS local_infile; +connect_timeout 4711 +local_infile 1 +UNINSTALL PLUGIN example; === added file 'mysql-test/suite/bugs/t/bug57108-master.opt' --- a/mysql-test/suite/bugs/t/bug57108-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/bugs/t/bug57108-master.opt 2010-11-04 10:00:59 +0000 @@ -0,0 +1,2 @@ +--defaults-file=std_data/bug57108.cnf +$EXAMPLE_PLUGIN_OPT === added file 'mysql-test/suite/bugs/t/bug57108.test' --- a/mysql-test/suite/bugs/t/bug57108.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/bugs/t/bug57108.test 2010-11-04 10:00:59 +0000 @@ -0,0 +1,12 @@ +--source include/not_windows_embedded.inc +--source include/have_example_plugin.inc + +# Test that we can install a plugin despite the fact that we have +# switched directory after starting the server and am using a relative +# --defaults-file. +--replace_regex /\.dll/.so/ +eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; + +--query_vertical SELECT @@global.connect_timeout AS connect_timeout, @@global.local_infile AS local_infile + +UNINSTALL PLUGIN example; === modified file 'mysql-test/t/log_tables.test' --- a/mysql-test/t/log_tables.test 2009-11-24 11:08:04 +0000 +++ b/mysql-test/t/log_tables.test 2010-11-07 18:06:22 +0000 @@ -1034,6 +1034,25 @@ DROP TABLE t1; TRUNCATE TABLE mysql.slow_log; +# +# Bug #47924 main.log_tables times out sporadically +# + +use mysql; +# Should result in error +--disable_warnings +drop table if exists renamed_general_log; +drop table if exists renamed_slow_log; +--enable_warnings +--error ER_CANT_RENAME_LOG_TABLE +RENAME TABLE general_log TO renamed_general_log; +--error ER_CANT_RENAME_LOG_TABLE +RENAME TABLE slow_log TO renamed_slow_log; + +use test; +flush tables with read lock; +unlock tables; + SET @@session.long_query_time= @old_long_query_time; SET @@global.log_output= @old_log_output; === modified file 'mysys/default.c' --- a/mysys/default.c 2010-07-23 20:17:55 +0000 +++ b/mysys/default.c 2010-11-04 10:00:59 +0000 @@ -66,7 +66,9 @@ const char *args_separator= "----args-separator----"; const char *my_defaults_file=0; const char *my_defaults_group_suffix=0; -char *my_defaults_extra_file=0; +const char *my_defaults_extra_file=0; + +static my_bool defaults_already_read= FALSE; /* Which directories are searched for options (and in which order) */ @@ -140,6 +142,36 @@ static char *remove_end_comment(char *pt /* + Expand a file name so that the current working directory is added if + the name is relative. + + RETURNS + 0 All OK + 2 Out of memory or path to long + 3 Not able to get working directory + */ + +static int +fn_expand(const char *filename, const char **filename_var) +{ + char dir[FN_REFLEN], buf[FN_REFLEN]; + const int flags= MY_UNPACK_FILENAME | MY_SAFE_PATH | MY_RELATIVE_PATH; + const char *result_path= NULL; + DBUG_ENTER("fn_expand"); + DBUG_PRINT("enter", ("filename: %s, buf: 0x%lx", filename, (unsigned long) buf)); + if (my_getwd(dir, sizeof(dir), MYF(0))) + DBUG_RETURN(3); + DBUG_PRINT("debug", ("dir: %s", dir)); + if (fn_format(buf, filename, dir, NULL, flags) == NULL || + (result_path= my_strdup(buf, MYF(0))) == NULL) + DBUG_RETURN(2); + DBUG_PRINT("return", ("result: %s", result_path)); + DBUG_ASSERT(result_path != NULL); + *filename_var= result_path; + DBUG_RETURN(0); +} + +/* Process config files in default directories. SYNOPSIS @@ -167,6 +199,7 @@ static char *remove_end_comment(char *pt 0 ok 1 given cinf_file doesn't exist 2 out of memory + 3 Can't get current working directory The global variable 'my_defaults_group_suffix' is updated with value for --defaults_group_suffix @@ -189,11 +222,21 @@ int my_search_option_files(const char *c if (! my_defaults_group_suffix) my_defaults_group_suffix= getenv(STRINGIFY_ARG(DEFAULT_GROUP_SUFFIX_ENV)); - if (forced_extra_defaults) - my_defaults_extra_file= (char *) forced_extra_defaults; - - if (forced_default_file) - my_defaults_file= forced_default_file; + if (forced_extra_defaults && !defaults_already_read) + { + int error= fn_expand(forced_extra_defaults, &my_defaults_extra_file); + if (error) + DBUG_RETURN(error); + } + + if (forced_default_file && !defaults_already_read) + { + int error= fn_expand(forced_default_file, &my_defaults_file); + if (error) + DBUG_RETURN(error); + } + + defaults_already_read= TRUE; /* We can only handle 'defaults-group-suffix' if we are called from @@ -236,15 +279,15 @@ int my_search_option_files(const char *c group->type_names[group->count]= 0; } - if (forced_default_file) + if (my_defaults_file) { if ((error= search_default_file_with_ext(func, func_ctx, "", "", - forced_default_file, 0)) < 0) + my_defaults_file, 0)) < 0) goto err; if (error > 0) { fprintf(stderr, "Could not open required defaults file: %s\n", - forced_default_file); + my_defaults_file); goto err; } } === modified file 'mysys/stacktrace.c' --- a/mysys/stacktrace.c 2010-08-04 08:43:44 +0000 +++ b/mysys/stacktrace.c 2010-11-08 11:53:04 +0000 @@ -315,6 +315,9 @@ end: /* Produce a core for the thread */ void my_write_core(int sig) { +#ifdef HAVE_gcov + extern void __gcov_flush(void); +#endif signal(sig, SIG_DFL); #ifdef HAVE_gcov /* @@ -322,7 +325,6 @@ void my_write_core(int sig) information from this process, causing gcov output to be incomplete. So we force the writing of coverage information here before terminating. */ - extern void __gcov_flush(void); __gcov_flush(); #endif pthread_kill(pthread_self(), sig); === modified file 'sql/sql_plugin.cc' --- a/sql/sql_plugin.cc 2010-10-07 15:52:34 +0000 +++ b/sql/sql_plugin.cc 2010-11-04 10:00:59 +0000 @@ -1738,7 +1738,11 @@ bool mysql_install_plugin(THD *thd, cons mysql_mutex_lock(&LOCK_plugin); mysql_rwlock_wrlock(&LOCK_system_variables_hash); - my_load_defaults(MYSQL_CONFIG_NAME, load_default_groups, &argc, &argv, NULL); + if (my_load_defaults(MYSQL_CONFIG_NAME, load_default_groups, &argc, &argv, NULL)) + { + report_error(REPORT_TO_USER, ER_PLUGIN_IS_NOT_LOADED, name->str); + goto err; + } error= plugin_add(thd->mem_root, name, dl, &argc, argv, REPORT_TO_USER); if (argv) free_defaults(argv); === modified file 'sql/sql_rename.cc' --- a/sql/sql_rename.cc 2010-09-16 09:11:13 +0000 +++ b/sql/sql_rename.cc 2010-11-07 18:06:22 +0000 @@ -108,7 +108,7 @@ bool mysql_rename_tables(THD *thd, TABLE */ my_error(ER_CANT_RENAME_LOG_TABLE, MYF(0), ren_table->table_name, ren_table->table_name); - DBUG_RETURN(1); + goto err; } } else @@ -121,7 +121,7 @@ bool mysql_rename_tables(THD *thd, TABLE */ my_error(ER_CANT_RENAME_LOG_TABLE, MYF(0), ren_table->table_name, ren_table->table_name); - DBUG_RETURN(1); + goto err; } else { @@ -139,7 +139,7 @@ bool mysql_rename_tables(THD *thd, TABLE else my_error(ER_CANT_RENAME_LOG_TABLE, MYF(0), rename_log_table[1], rename_log_table[1]); - DBUG_RETURN(1); + goto err; } } === modified file 'storage/ndb/src/mgmsrv/InitConfigFileParser.cpp' --- a/storage/ndb/src/mgmsrv/InitConfigFileParser.cpp 2009-09-01 12:32:26 +0000 +++ b/storage/ndb/src/mgmsrv/InitConfigFileParser.cpp 2010-11-08 13:52:10 +0000 @@ -702,7 +702,7 @@ load_defaults(Vector& BaseString group_suffix; const char *save_file = my_defaults_file; - char *save_extra_file = my_defaults_extra_file; + const char *save_extra_file = my_defaults_extra_file; const char *save_group_suffix = my_defaults_group_suffix; if (my_defaults_file) No bundle (reason: useless for push emails).