diff options
author | unknown <jimw@mysql.com> | 2006-04-26 15:29:32 -0700 |
---|---|---|
committer | unknown <jimw@mysql.com> | 2006-04-26 15:29:32 -0700 |
commit | c09e213b6141bef68769c170932495223d80a4e9 (patch) | |
tree | f098e5d240ab20c015f3b2d9adecc8825afafe2f | |
parent | 2d85fd80835564e540a7e2d350b756c65a447a86 (diff) | |
parent | 8d52b8a6b7d2d22960451c01f3a00c7c6ad12b81 (diff) | |
download | mariadb-git-c09e213b6141bef68769c170932495223d80a4e9.tar.gz |
Merge bk-internal:/home/bk/mysql-5.0
into mysql.com:/home/jimw/my/mysql-5.0-clean
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 138 | ||||
-rw-r--r-- | mysql-test/ndb/ndbcluster.sh | 4 | ||||
-rw-r--r-- | mysql-test/r/variables.result | 31 | ||||
-rw-r--r-- | mysql-test/t/variables.test | 40 | ||||
-rw-r--r-- | sql/item_func.cc | 6 | ||||
-rw-r--r-- | sql/set_var.cc | 40 |
6 files changed, 178 insertions, 81 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index a4688e37f11..bc24b77207f 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -333,6 +333,7 @@ our @data_dir_lst; sub main (); sub initial_setup (); sub command_line_setup (); +sub snapshot_setup (); sub executable_setup (); sub environment_setup (); sub kill_running_server (); @@ -343,7 +344,7 @@ sub ndbcluster_install (); sub ndbcluster_start ($); sub ndbcluster_stop (); sub run_benchmarks ($); -sub run_tests (); +sub initialize_servers (); sub mysql_install_db (); sub install_db ($$); sub run_testcase ($); @@ -374,7 +375,7 @@ sub main () { command_line_setup(); executable_setup(); - check_ndbcluster_support(); + check_ndbcluster_support(); # We check whether to actually use it later check_ssl_support(); environment_setup(); @@ -390,49 +391,37 @@ sub main () { gprof_prepare(); } - if ( ! $glob_use_running_server ) - { - if ( $opt_start_dirty ) - { - kill_running_server(); - } - else - { - kill_and_cleanup(); - mysql_install_db(); - if ( $opt_force ) - { - save_installed_db(); - } - } - } - - if ( $opt_start_dirty ) - { - if ( ndbcluster_start($opt_with_ndbcluster) ) - { - mtr_error("Can't start ndbcluster"); - } - if ( mysqld_start('master',0,[],[],$using_ndbcluster_master) ) - { - mtr_report("Servers started, exiting"); - } - else - { - mtr_error("Can't start the mysqld server"); - } - } - elsif ( $opt_bench ) + if ( $opt_bench ) { + initialize_servers(); run_benchmarks(shift); # Shift what? Extra arguments?! } elsif ( $opt_stress ) { + initialize_servers(); run_stress_test() } else { - run_tests(); + # Figure out which tests we are going to run + my $tests= collect_test_cases($opt_suite); + + # Turn off NDB and other similar options if no tests use it + my ($need_ndbcluster,$need_im,$need_slave); + foreach my $test (@$tests) + { + $need_ndbcluster||= $test->{ndb_test}; + $need_im||= $test->{component_id} eq 'im'; + $need_slave||= $test->{slave_num}; + } + $opt_with_ndbcluster= 0 unless $need_ndbcluster; + $opt_skip_im= 1 unless $need_im; + $opt_skip_rpl= 1 unless $need_slave; + + snapshot_setup(); + initialize_servers(); + + run_suite($opt_suite, $tests); } mtr_exit(0); @@ -983,20 +972,29 @@ sub command_line_setup () { $path_mysqltest_log= "$opt_vardir/log/mysqltest.log"; $path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/"; +} + +sub snapshot_setup () { # Make a list of all data_dirs @data_dir_lst = ( $master->[0]->{'path_myddir'}, - $master->[1]->{'path_myddir'}, - $slave->[0]->{'path_myddir'}, - $slave->[1]->{'path_myddir'}, - $slave->[2]->{'path_myddir'}); + $master->[1]->{'path_myddir'}); - foreach my $instance (@{$instance_manager->{'instances'}}) + unless ($opt_skip_rpl) { - push(@data_dir_lst, $instance->{'path_datadir'}); + push @data_dir_lst, ($slave->[0]->{'path_myddir'}, + $slave->[1]->{'path_myddir'}, + $slave->[2]->{'path_myddir'}); } + unless ($opt_skip_im) + { + foreach my $instance (@{$instance_manager->{'instances'}}) + { + push(@data_dir_lst, $instance->{'path_datadir'}); + } + } } @@ -1388,7 +1386,7 @@ sub check_ndbcluster_support () { if ($opt_with_ndbcluster) { - mtr_report("Using ndbcluster"); + mtr_report("Using ndbcluster if necessary"); return; } @@ -1404,7 +1402,7 @@ sub check_ndbcluster_support () { $opt_with_ndbcluster= 0; return; } - mtr_report("Using ndbcluster, mysqld supports it"); + mtr_report("Using ndbcluster if necessary, mysqld supports it"); $opt_with_ndbcluster= 1; return; } @@ -1562,12 +1560,9 @@ sub run_benchmarks ($) { # FIXME how to specify several suites to run? Comma separated list? -sub run_tests () { - run_suite($opt_suite); -} sub run_suite () { - my $suite= shift; + my ($suite, $tests)= @_; mtr_print_thick_line(); @@ -1575,8 +1570,6 @@ sub run_suite () { mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout); - my $tests= collect_test_cases($suite); - mtr_report("Starting Tests in the '$suite' suite"); mtr_print_header(); @@ -1618,14 +1611,37 @@ sub run_suite () { # ############################################################################## +sub initialize_servers () { + if ( ! $glob_use_running_server ) + { + if ( $opt_start_dirty ) + { + kill_running_server(); + } + else + { + kill_and_cleanup(); + mysql_install_db(); + if ( $opt_force ) + { + save_installed_db(); + } + } + } +} + sub mysql_install_db () { # FIXME not exactly true I think, needs improvements install_db('master', $master->[0]->{'path_myddir'}); install_db('master', $master->[1]->{'path_myddir'}); - install_db('slave', $slave->[0]->{'path_myddir'}); - install_db('slave', $slave->[1]->{'path_myddir'}); - install_db('slave', $slave->[2]->{'path_myddir'}); + + if ( ! $opt_skip_rpl ) + { + install_db('slave', $slave->[0]->{'path_myddir'}); + install_db('slave', $slave->[1]->{'path_myddir'}); + install_db('slave', $slave->[2]->{'path_myddir'}); + } if ( ! $opt_skip_im ) { @@ -2028,10 +2044,11 @@ sub run_testcase ($) { } # ---------------------------------------------------------------------- - # If --start-and-exit given, stop here to let user manually run tests + # If --start-and-exit or --start-dirty given, stop here to let user manually + # run tests # ---------------------------------------------------------------------- - if ( $opt_start_and_exit ) + if ( $opt_start_and_exit or $opt_start_dirty ) { mtr_report("\nServers started, exiting"); exit(0); @@ -3410,11 +3427,12 @@ Misc options comment=STR Write STR to the output script-debug Debug this script itself timer Show test case execution time - start-and-exit Only initiate and start the "mysqld" servers, use the startup - settings for the specified test case if any - start-dirty Only start the "mysqld" servers without initiation - fast Don't try to cleanup from earlier runs - reorder Reorder tests to get less server restarts + start-and-exit Only initialize and start the servers, using the + startup settings for the specified test case (if any) + start-dirty Only start the servers (without initialization) for + the specified test case (if any) + fast Don't try to clean up from earlier runs + reorder Reorder tests to get fewer server restarts help Get this help text unified-diff | udiff When presenting differences, use unified diff diff --git a/mysql-test/ndb/ndbcluster.sh b/mysql-test/ndb/ndbcluster.sh index ad01f6574cf..50eb3987a36 100644 --- a/mysql-test/ndb/ndbcluster.sh +++ b/mysql-test/ndb/ndbcluster.sh @@ -236,8 +236,8 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile" # test if Ndb Cluster starts properly -echo "Waiting for started..." -if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else +echo "Waiting for NDB data nodes to start..." +if ( $exec_waiter ) | grep -q "NDBT_ProgramExit: 0 - OK"; then :; else echo "Ndbcluster startup failed" stop_default_ndbcluster exit 1 diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 1d1c76ab3fe..32cd8790874 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -275,7 +275,7 @@ ERROR HY000: Variable 'autocommit' is a SESSION variable and can't be used with select @@global.timestamp; ERROR HY000: Variable 'timestamp' is a SESSION variable set @@version=''; -ERROR HY000: Unknown system variable 'version' +ERROR HY000: Variable 'version' is a read only variable set @@concurrent_insert=1; ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL set @@global.sql_auto_is_null=1; @@ -384,6 +384,7 @@ select @@sql_max_join_size,@@max_join_size; set sql_quote_show_create=1; set sql_safe_updates=1; set sql_select_limit=1; +set sql_select_limit=default; set sql_warnings=1; set global table_cache=100; set storage_engine=myisam; @@ -584,3 +585,31 @@ set @@global.character_set_filesystem=default; select @@global.character_set_filesystem; @@global.character_set_filesystem binary +set @old_sql_big_selects = @@sql_big_selects; +set @@sql_big_selects = 1; +show variables like 'sql_big_selects'; +Variable_name Value +sql_big_selects ON +set @@sql_big_selects = @old_sql_big_selects; +set @@sql_notes = 0, @@sql_warnings = 0; +show variables like 'sql_notes'; +Variable_name Value +sql_notes OFF +show variables like 'sql_warnings'; +Variable_name Value +sql_warnings OFF +set @@sql_notes = 1, @@sql_warnings = 1; +show variables like 'sql_notes'; +Variable_name Value +sql_notes ON +show variables like 'sql_warnings'; +Variable_name Value +sql_warnings ON +select @@system_time_zone; +@@system_time_zone +# +select @@version, @@version_comment, @@version_compile_machine, +@@version_compile_os; +@@version @@version_comment @@version_compile_machine @@version_compile_os +# # # # +End of 5.0 tests diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index 8d8dc7896df..d6bebe8b5cb 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -169,7 +169,7 @@ set collation_connection=NULL; set global autocommit=1; --error 1238 select @@global.timestamp; ---error 1193 +--error 1238 set @@version=''; --error 1229 set @@concurrent_insert=1; @@ -258,6 +258,8 @@ select @@sql_max_join_size,@@max_join_size; set sql_quote_show_create=1; set sql_safe_updates=1; set sql_select_limit=1; +# reset it, so later tests don't get confused +set sql_select_limit=default; set sql_warnings=1; set global table_cache=100; set storage_engine=myisam; @@ -472,4 +474,38 @@ select @@character_set_filesystem; set @@global.character_set_filesystem=default; select @@global.character_set_filesystem; -# End of 5.0 tests +# +# Bug #17849: Show sql_big_selects in SHOW VARIABLES +# +set @old_sql_big_selects = @@sql_big_selects; +set @@sql_big_selects = 1; +show variables like 'sql_big_selects'; +set @@sql_big_selects = @old_sql_big_selects; + +# +# Bug #16195: SHOW VARIABLES doesn't report correctly sql_warnings and +# sql_notes values +# +set @@sql_notes = 0, @@sql_warnings = 0; +show variables like 'sql_notes'; +show variables like 'sql_warnings'; +set @@sql_notes = 1, @@sql_warnings = 1; +show variables like 'sql_notes'; +show variables like 'sql_warnings'; + +# +# Bug #12792: @@system_time_zone is not SELECTable. +# +# Don't actually output, since it depends on the system +--replace_column 1 # +select @@system_time_zone; + +# +# Bug #15684: system variables cannot be SELECTed (e.g. @@version_comment) +# +# Don't actually output, since it depends on the system +--replace_column 1 # 2 # 3 # 4 # +select @@version, @@version_comment, @@version_compile_machine, + @@version_compile_os; + +--echo End of 5.0 tests diff --git a/sql/item_func.cc b/sql/item_func.cc index bd59a750bfc..0447ab115ec 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4558,12 +4558,6 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name, sys_var *var; LEX_STRING *base_name, *component_name; - if (component.str == 0 && - !my_strcasecmp(system_charset_info, name.str, "VERSION")) - return new Item_string(NULL, server_version, - (uint) strlen(server_version), - system_charset_info, DERIVATION_SYSCONST); - if (component.str) { base_name= &component; diff --git a/sql/set_var.cc b/sql/set_var.cc index 71ecf97a6fa..81fc497437c 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -380,6 +380,8 @@ sys_var_thd_storage_engine sys_storage_engine("storage_engine", sys_var_sync_binlog_period sys_sync_binlog_period("sync_binlog", &sync_binlog_period); #endif sys_var_bool_ptr sys_sync_frm("sync_frm", &opt_sync_frm); +sys_var_const_str sys_system_time_zone("system_time_zone", + system_time_zone); sys_var_long_ptr sys_table_cache_size("table_cache", &table_cache_size); sys_var_long_ptr sys_table_lock_wait_timeout("table_lock_wait_timeout", @@ -394,6 +396,16 @@ sys_var_thd_ulong sys_tmp_table_size("tmp_table_size", &SV::tmp_table_size); sys_var_bool_ptr sys_timed_mutexes("timed_mutexes", &timed_mutexes); +sys_var_const_str sys_version("version", server_version); +#ifdef HAVE_BERKELEY_DB +sys_var_const_str sys_version_bdb("version_bdb", DB_VERSION_STRING); +#endif +sys_var_const_str sys_version_comment("version_comment", + MYSQL_COMPILATION_COMMENT); +sys_var_const_str sys_version_compile_machine("version_compile_machine", + MACHINE_TYPE); +sys_var_const_str sys_version_compile_os("version_compile_os", + SYSTEM_TYPE); sys_var_thd_ulong sys_net_wait_timeout("wait_timeout", &SV::net_wait_timeout); @@ -549,7 +561,6 @@ sys_var_thd_time_zone sys_time_zone("time_zone"); /* Read only variables */ -sys_var_const_str sys_os("version_compile_os", SYSTEM_TYPE); sys_var_readonly sys_have_innodb("have_innodb", OPT_GLOBAL, SHOW_CHAR, get_have_innodb); /* Global read-only variable describing server license */ @@ -704,6 +715,7 @@ sys_var *sys_variables[]= &sys_sync_binlog_period, #endif &sys_sync_frm, + &sys_system_time_zone, &sys_table_cache_size, &sys_table_lock_wait_timeout, &sys_table_type, @@ -716,7 +728,13 @@ sys_var *sys_variables[]= &sys_trans_alloc_block_size, &sys_trans_prealloc_size, &sys_tx_isolation, - &sys_os, + &sys_version, +#ifdef HAVE_BERKELEY_DB + &sys_version_bdb, +#endif + &sys_version_comment, + &sys_version_compile_machine, + &sys_version_compile_os, #ifdef HAVE_INNOBASE_DB &sys_innodb_fast_shutdown, &sys_innodb_max_dirty_pages_pct, @@ -993,10 +1011,11 @@ struct show_var_st init_vars[]= { #ifdef HAVE_SYS_UN_H {"socket", (char*) &mysqld_unix_port, SHOW_CHAR_PTR}, #endif - {sys_sort_buffer.name, (char*) &sys_sort_buffer, SHOW_SYS}, + {sys_sort_buffer.name, (char*) &sys_sort_buffer, SHOW_SYS}, + {sys_big_selects.name, (char*) &sys_big_selects, SHOW_SYS}, {sys_sql_mode.name, (char*) &sys_sql_mode, SHOW_SYS}, - {"sql_notes", (char*) &sys_sql_notes, SHOW_BOOL}, - {"sql_warnings", (char*) &sys_sql_warnings, SHOW_BOOL}, + {"sql_notes", (char*) &sys_sql_notes, SHOW_SYS}, + {"sql_warnings", (char*) &sys_sql_warnings, SHOW_SYS}, {sys_storage_engine.name, (char*) &sys_storage_engine, SHOW_SYS}, #ifdef HAVE_REPLICATION {sys_sync_binlog_period.name,(char*) &sys_sync_binlog_period, SHOW_SYS}, @@ -1024,13 +1043,14 @@ struct show_var_st init_vars[]= { {sys_tx_isolation.name, (char*) &sys_tx_isolation, SHOW_SYS}, {sys_updatable_views_with_limit.name, (char*) &sys_updatable_views_with_limit,SHOW_SYS}, - {"version", server_version, SHOW_CHAR}, + {sys_version.name, (char*) &sys_version, SHOW_SYS}, #ifdef HAVE_BERKELEY_DB - {"version_bdb", (char*) DB_VERSION_STRING, SHOW_CHAR}, + {sys_version_bdb.name, (char*) &sys_version_bdb, SHOW_SYS}, #endif - {"version_comment", (char*) MYSQL_COMPILATION_COMMENT, SHOW_CHAR}, - {"version_compile_machine", (char*) MACHINE_TYPE, SHOW_CHAR}, - {sys_os.name, (char*) &sys_os, SHOW_SYS}, + {sys_version_comment.name, (char*) &sys_version_comment, SHOW_SYS}, + {sys_version_compile_machine.name, (char*) &sys_version_compile_machine, + SHOW_SYS}, + {sys_version_compile_os.name, (char*) &sys_version_compile_os, SHOW_SYS}, {sys_net_wait_timeout.name, (char*) &sys_net_wait_timeout, SHOW_SYS}, {NullS, NullS, SHOW_LONG} }; |