Loading mysql-test/mysql-test-run.pl +116 −38 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ our $path_charsetsdir; our $path_client_bindir; our $path_language; our $path_timefile; our $path_snapshot; our $path_manager_log; # Used by mysqldadmin our $path_slave_load_tmpdir; # What is this?! our $path_mysqltest_log; Loading Loading @@ -320,11 +321,14 @@ our $opt_ndb_extra_test= 0; our $exe_ndb_mgm; our $path_ndb_tools_dir; our $path_ndb_backup_dir; our $path_ndb_data_dir; our $path_ndb_slave_data_dir; our $file_ndb_testrun_log; our $flag_ndb_status_ok= 1; our $flag_ndb_slave_status_ok= 1; our @data_dir_lst; ###################################################################### # # Function declarations Loading Loading @@ -405,9 +409,10 @@ sub main () { { kill_and_cleanup(); mysql_install_db(); # mysql_loadstd(); FIXME copying from "std_data" .frm and # .MGR but there are none?! if ( $opt_force ) { save_installed_db(); } } } Loading Loading @@ -978,6 +983,22 @@ sub command_line_setup () { $path_timefile= "$opt_vardir/log/mysqltest-time"; $path_mysqltest_log= "$opt_vardir/log/mysqltest.log"; $path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/"; # 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'}); foreach my $instance (@{$instance_manager->{'instances'}}) { push(@data_dir_lst, $instance->{'path_datadir'}); } } Loading Loading @@ -1127,8 +1148,8 @@ sub executable_setup () { $exe_master_mysqld= $exe_master_mysqld || $exe_mysqld; $exe_slave_mysqld= $exe_slave_mysqld || $exe_mysqld; $path_ndb_backup_dir= "$opt_vardir/ndbcluster-$opt_ndbcluster_port"; $path_ndb_data_dir= "$opt_vardir/ndbcluster-$opt_ndbcluster_port"; $path_ndb_slave_data_dir= "$opt_vardir/ndbcluster-$opt_ndbcluster_port_slave"; $file_ndb_testrun_log= "$opt_vardir/log/ndb_testrun.log"; } Loading Loading @@ -1311,21 +1332,7 @@ sub kill_and_cleanup () { mkpath("$opt_vardir/tmp"); mkpath($opt_tmpdir) if $opt_tmpdir ne "$opt_vardir/tmp"; # FIXME do we really need to create these all, or are they # created for us when tables are created? my @data_dir_lst = ( $master->[0]->{'path_myddir'}, $master->[1]->{'path_myddir'}, $slave->[0]->{'path_myddir'}, $slave->[1]->{'path_myddir'}, $slave->[2]->{'path_myddir'}); foreach my $instance (@{$instance_manager->{'instances'}}) { push(@data_dir_lst, $instance->{'path_datadir'}); } # Remove old and create new data dirs foreach my $data_dir (@data_dir_lst) { rmtree("$data_dir"); Loading Loading @@ -2266,10 +2273,9 @@ sub run_testcase ($) { report_failure_and_restart($tinfo); } # Save info from this testcase run to mysqltest.log my $testcase_log= mtr_fromfile($path_timefile) if -f $path_timefile; mtr_tofile($path_mysqltest_log,"CURRENT TEST $tname\n"); my $testcase_log= mtr_fromfile($path_timefile); mtr_tofile($path_mysqltest_log, $testcase_log); mtr_tofile($path_mysqltest_log, $testcase_log); } # ---------------------------------------------------------------------- Loading @@ -2283,6 +2289,80 @@ sub run_testcase ($) { } } sub copy_dir($$) { my $from_dir= shift; my $to_dir= shift; mkpath("$to_dir"); opendir(DIR, "$from_dir") or mtr_error("Can't find $from_dir$!"); for(readdir(DIR)) { next if "$_" eq "." or "$_" eq ".."; if ( -d "$from_dir/$_" ) { copy_dir("$from_dir/$_", "$to_dir/$_"); next; } copy("$from_dir/$_", "$to_dir/$_"); } closedir(DIR); } # # Save a snapshot of the installed test db(s) # I.e take a snapshot of the var/ dir # sub save_installed_db () { mtr_report("Saving snapshot of installed databases"); rmtree($path_snapshot); foreach my $data_dir (@data_dir_lst) { my $name= basename($data_dir); copy_dir("$data_dir", "$path_snapshot/$name"); } } # # Restore snapshot of the installed test db(s) # if the snapshot exists # sub restore_installed_db () { if ( -d $path_snapshot) { kill_running_server (); mtr_report("Restoring snapshot of databases"); foreach my $data_dir (@data_dir_lst) { my $name= basename($data_dir); rmtree("$data_dir"); copy_dir("$path_snapshot/$name", "$data_dir"); } if ($opt_with_ndbcluster) { # Remove the ndb_*_fs dirs, forcing a clean start of ndb rmtree("$path_ndb_data_dir/ndb_1_fs"); rmtree("$path_ndb_data_dir/ndb_2_fs"); if ( $opt_with_ndbcluster_slave ) { # Remove also the ndb_*_fs dirs for slave cluster rmtree("$path_ndb_slave_data_dir/ndb_1_fs"); } } } else { # No snapshot existed, just stop all processes stop_masters_slaves(); } } sub report_failure_and_restart ($) { my $tinfo= shift; Loading @@ -2290,8 +2370,14 @@ sub report_failure_and_restart ($) { mtr_report_test_failed($tinfo); mtr_show_failed_diff($tinfo->{'name'}); print "\n"; if ( ! $opt_force ) if ( $opt_force ) { # Restore the snapshot of the installed test db restore_installed_db(); print "Resuming Tests\n\n"; return; } my $test_mode= join(" ", @::glob_test_mode) || "default"; print "Aborting: $tinfo->{'name'} failed in $test_mode mode. "; print "To continue, re-run with '--force'.\n"; Loading @@ -2301,16 +2387,7 @@ sub report_failure_and_restart ($) { stop_masters_slaves(); } mtr_exit(1); } # FIXME always terminate on failure?! if ( ! $opt_gdb and ! $glob_use_running_server and ! $opt_ddd and ! $glob_use_embedded_server ) { stop_masters_slaves(); } $glob_mysqld_restart= 1; print "Resuming Tests\n\n"; } Loading Loading @@ -3046,7 +3123,8 @@ sub run_mysqltest ($) { $ENV{'NDB_SLAVE_STATUS_OK'}= $flag_ndb_slave_status_ok; $ENV{'NDB_EXTRA_TEST'}= $opt_ndb_extra_test; $ENV{'NDB_MGM'}= $exe_ndb_mgm; $ENV{'NDB_BACKUP_DIR'}= $path_ndb_backup_dir; $ENV{'NDB_BACKUP_DIR'}= $path_ndb_data_dir; $ENV{'NDB_DATA_DIR'}= $path_ndb_data_dir; $ENV{'NDB_TOOLS_DIR'}= $path_ndb_tools_dir; $ENV{'NDB_TOOLS_OUTPUT'}= $file_ndb_testrun_log; $ENV{'NDB_CONNECTSTRING'}= $opt_ndbconnectstring; Loading mysql-test/r/partition_list.result +11 −0 Original line number Diff line number Diff line Loading @@ -180,3 +180,14 @@ primary key(a,b)) partition by list (a) (partition x1 values in (1,2,9,4) tablespace ts1); drop table t1; CREATE TABLE t1 (s1 int) PARTITION BY LIST (s1) (PARTITION p1 VALUES IN (1), PARTITION p2 VALUES IN (2), PARTITION p3 VALUES IN (3), PARTITION p4 VALUES IN (4), PARTITION p5 VALUES IN (5)); INSERT INTO t1 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t1 WHERE s1 < 3; COUNT(*) 2 DROP TABLE t1; mysql-test/r/partition_range.result +26 −0 Original line number Diff line number Diff line Loading @@ -337,3 +337,29 @@ a b c 1 1 1 4 1 1 drop table t1; CREATE TABLE t1 (c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) engine=myisam PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995), PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) , PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) , PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) , PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) , PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010), PARTITION p11 VALUES LESS THAN MAXVALUE ); INSERT INTO t1 VALUES (1, 'testing partitions', '1995-07-17'), (3, 'testing partitions','1995-07-31'), (5, 'testing partitions','1995-08-13'), (7, 'testing partitions','1995-08-26'), (9, 'testing partitions','1995-09-09'), (0, 'testing partitions','2000-07-10'), (2, 'testing partitions','2000-07-23'), (4, 'testing partitions','2000-08-05'), (6, 'testing partitions','2000-08-19'), (8, 'testing partitions','2000-09-01'); SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31'; COUNT(*) 5 SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31'; COUNT(*) 10 DROP TABLE t1; mysql-test/t/partition_list.test +14 −0 Original line number Diff line number Diff line Loading @@ -110,3 +110,17 @@ partition by list (a) (partition x1 values in (1,2,9,4) tablespace ts1); drop table t1; # #Bug #17173 Partitions: less-than search fails # CREATE TABLE t1 (s1 int) PARTITION BY LIST (s1) (PARTITION p1 VALUES IN (1), PARTITION p2 VALUES IN (2), PARTITION p3 VALUES IN (3), PARTITION p4 VALUES IN (4), PARTITION p5 VALUES IN (5)); INSERT INTO t1 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t1 WHERE s1 < 3; DROP TABLE t1; mysql-test/t/partition_range.test +27 −0 Original line number Diff line number Diff line Loading @@ -361,3 +361,30 @@ subpartition by hash (a+b) SELECT * from t1; drop table t1; # # Bug #17894 Comparison with "less than" operator fails with Range partition # CREATE TABLE t1 (c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) engine=myisam PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995), PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) , PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) , PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) , PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) , PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010), PARTITION p11 VALUES LESS THAN MAXVALUE ); INSERT INTO t1 VALUES (1, 'testing partitions', '1995-07-17'), (3, 'testing partitions','1995-07-31'), (5, 'testing partitions','1995-08-13'), (7, 'testing partitions','1995-08-26'), (9, 'testing partitions','1995-09-09'), (0, 'testing partitions','2000-07-10'), (2, 'testing partitions','2000-07-23'), (4, 'testing partitions','2000-08-05'), (6, 'testing partitions','2000-08-19'), (8, 'testing partitions','2000-09-01'); SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31'; SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31'; DROP TABLE t1; Loading
mysql-test/mysql-test-run.pl +116 −38 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ our $path_charsetsdir; our $path_client_bindir; our $path_language; our $path_timefile; our $path_snapshot; our $path_manager_log; # Used by mysqldadmin our $path_slave_load_tmpdir; # What is this?! our $path_mysqltest_log; Loading Loading @@ -320,11 +321,14 @@ our $opt_ndb_extra_test= 0; our $exe_ndb_mgm; our $path_ndb_tools_dir; our $path_ndb_backup_dir; our $path_ndb_data_dir; our $path_ndb_slave_data_dir; our $file_ndb_testrun_log; our $flag_ndb_status_ok= 1; our $flag_ndb_slave_status_ok= 1; our @data_dir_lst; ###################################################################### # # Function declarations Loading Loading @@ -405,9 +409,10 @@ sub main () { { kill_and_cleanup(); mysql_install_db(); # mysql_loadstd(); FIXME copying from "std_data" .frm and # .MGR but there are none?! if ( $opt_force ) { save_installed_db(); } } } Loading Loading @@ -978,6 +983,22 @@ sub command_line_setup () { $path_timefile= "$opt_vardir/log/mysqltest-time"; $path_mysqltest_log= "$opt_vardir/log/mysqltest.log"; $path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/"; # 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'}); foreach my $instance (@{$instance_manager->{'instances'}}) { push(@data_dir_lst, $instance->{'path_datadir'}); } } Loading Loading @@ -1127,8 +1148,8 @@ sub executable_setup () { $exe_master_mysqld= $exe_master_mysqld || $exe_mysqld; $exe_slave_mysqld= $exe_slave_mysqld || $exe_mysqld; $path_ndb_backup_dir= "$opt_vardir/ndbcluster-$opt_ndbcluster_port"; $path_ndb_data_dir= "$opt_vardir/ndbcluster-$opt_ndbcluster_port"; $path_ndb_slave_data_dir= "$opt_vardir/ndbcluster-$opt_ndbcluster_port_slave"; $file_ndb_testrun_log= "$opt_vardir/log/ndb_testrun.log"; } Loading Loading @@ -1311,21 +1332,7 @@ sub kill_and_cleanup () { mkpath("$opt_vardir/tmp"); mkpath($opt_tmpdir) if $opt_tmpdir ne "$opt_vardir/tmp"; # FIXME do we really need to create these all, or are they # created for us when tables are created? my @data_dir_lst = ( $master->[0]->{'path_myddir'}, $master->[1]->{'path_myddir'}, $slave->[0]->{'path_myddir'}, $slave->[1]->{'path_myddir'}, $slave->[2]->{'path_myddir'}); foreach my $instance (@{$instance_manager->{'instances'}}) { push(@data_dir_lst, $instance->{'path_datadir'}); } # Remove old and create new data dirs foreach my $data_dir (@data_dir_lst) { rmtree("$data_dir"); Loading Loading @@ -2266,10 +2273,9 @@ sub run_testcase ($) { report_failure_and_restart($tinfo); } # Save info from this testcase run to mysqltest.log my $testcase_log= mtr_fromfile($path_timefile) if -f $path_timefile; mtr_tofile($path_mysqltest_log,"CURRENT TEST $tname\n"); my $testcase_log= mtr_fromfile($path_timefile); mtr_tofile($path_mysqltest_log, $testcase_log); mtr_tofile($path_mysqltest_log, $testcase_log); } # ---------------------------------------------------------------------- Loading @@ -2283,6 +2289,80 @@ sub run_testcase ($) { } } sub copy_dir($$) { my $from_dir= shift; my $to_dir= shift; mkpath("$to_dir"); opendir(DIR, "$from_dir") or mtr_error("Can't find $from_dir$!"); for(readdir(DIR)) { next if "$_" eq "." or "$_" eq ".."; if ( -d "$from_dir/$_" ) { copy_dir("$from_dir/$_", "$to_dir/$_"); next; } copy("$from_dir/$_", "$to_dir/$_"); } closedir(DIR); } # # Save a snapshot of the installed test db(s) # I.e take a snapshot of the var/ dir # sub save_installed_db () { mtr_report("Saving snapshot of installed databases"); rmtree($path_snapshot); foreach my $data_dir (@data_dir_lst) { my $name= basename($data_dir); copy_dir("$data_dir", "$path_snapshot/$name"); } } # # Restore snapshot of the installed test db(s) # if the snapshot exists # sub restore_installed_db () { if ( -d $path_snapshot) { kill_running_server (); mtr_report("Restoring snapshot of databases"); foreach my $data_dir (@data_dir_lst) { my $name= basename($data_dir); rmtree("$data_dir"); copy_dir("$path_snapshot/$name", "$data_dir"); } if ($opt_with_ndbcluster) { # Remove the ndb_*_fs dirs, forcing a clean start of ndb rmtree("$path_ndb_data_dir/ndb_1_fs"); rmtree("$path_ndb_data_dir/ndb_2_fs"); if ( $opt_with_ndbcluster_slave ) { # Remove also the ndb_*_fs dirs for slave cluster rmtree("$path_ndb_slave_data_dir/ndb_1_fs"); } } } else { # No snapshot existed, just stop all processes stop_masters_slaves(); } } sub report_failure_and_restart ($) { my $tinfo= shift; Loading @@ -2290,8 +2370,14 @@ sub report_failure_and_restart ($) { mtr_report_test_failed($tinfo); mtr_show_failed_diff($tinfo->{'name'}); print "\n"; if ( ! $opt_force ) if ( $opt_force ) { # Restore the snapshot of the installed test db restore_installed_db(); print "Resuming Tests\n\n"; return; } my $test_mode= join(" ", @::glob_test_mode) || "default"; print "Aborting: $tinfo->{'name'} failed in $test_mode mode. "; print "To continue, re-run with '--force'.\n"; Loading @@ -2301,16 +2387,7 @@ sub report_failure_and_restart ($) { stop_masters_slaves(); } mtr_exit(1); } # FIXME always terminate on failure?! if ( ! $opt_gdb and ! $glob_use_running_server and ! $opt_ddd and ! $glob_use_embedded_server ) { stop_masters_slaves(); } $glob_mysqld_restart= 1; print "Resuming Tests\n\n"; } Loading Loading @@ -3046,7 +3123,8 @@ sub run_mysqltest ($) { $ENV{'NDB_SLAVE_STATUS_OK'}= $flag_ndb_slave_status_ok; $ENV{'NDB_EXTRA_TEST'}= $opt_ndb_extra_test; $ENV{'NDB_MGM'}= $exe_ndb_mgm; $ENV{'NDB_BACKUP_DIR'}= $path_ndb_backup_dir; $ENV{'NDB_BACKUP_DIR'}= $path_ndb_data_dir; $ENV{'NDB_DATA_DIR'}= $path_ndb_data_dir; $ENV{'NDB_TOOLS_DIR'}= $path_ndb_tools_dir; $ENV{'NDB_TOOLS_OUTPUT'}= $file_ndb_testrun_log; $ENV{'NDB_CONNECTSTRING'}= $opt_ndbconnectstring; Loading
mysql-test/r/partition_list.result +11 −0 Original line number Diff line number Diff line Loading @@ -180,3 +180,14 @@ primary key(a,b)) partition by list (a) (partition x1 values in (1,2,9,4) tablespace ts1); drop table t1; CREATE TABLE t1 (s1 int) PARTITION BY LIST (s1) (PARTITION p1 VALUES IN (1), PARTITION p2 VALUES IN (2), PARTITION p3 VALUES IN (3), PARTITION p4 VALUES IN (4), PARTITION p5 VALUES IN (5)); INSERT INTO t1 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t1 WHERE s1 < 3; COUNT(*) 2 DROP TABLE t1;
mysql-test/r/partition_range.result +26 −0 Original line number Diff line number Diff line Loading @@ -337,3 +337,29 @@ a b c 1 1 1 4 1 1 drop table t1; CREATE TABLE t1 (c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) engine=myisam PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995), PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) , PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) , PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) , PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) , PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010), PARTITION p11 VALUES LESS THAN MAXVALUE ); INSERT INTO t1 VALUES (1, 'testing partitions', '1995-07-17'), (3, 'testing partitions','1995-07-31'), (5, 'testing partitions','1995-08-13'), (7, 'testing partitions','1995-08-26'), (9, 'testing partitions','1995-09-09'), (0, 'testing partitions','2000-07-10'), (2, 'testing partitions','2000-07-23'), (4, 'testing partitions','2000-08-05'), (6, 'testing partitions','2000-08-19'), (8, 'testing partitions','2000-09-01'); SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31'; COUNT(*) 5 SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31'; COUNT(*) 10 DROP TABLE t1;
mysql-test/t/partition_list.test +14 −0 Original line number Diff line number Diff line Loading @@ -110,3 +110,17 @@ partition by list (a) (partition x1 values in (1,2,9,4) tablespace ts1); drop table t1; # #Bug #17173 Partitions: less-than search fails # CREATE TABLE t1 (s1 int) PARTITION BY LIST (s1) (PARTITION p1 VALUES IN (1), PARTITION p2 VALUES IN (2), PARTITION p3 VALUES IN (3), PARTITION p4 VALUES IN (4), PARTITION p5 VALUES IN (5)); INSERT INTO t1 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t1 WHERE s1 < 3; DROP TABLE t1;
mysql-test/t/partition_range.test +27 −0 Original line number Diff line number Diff line Loading @@ -361,3 +361,30 @@ subpartition by hash (a+b) SELECT * from t1; drop table t1; # # Bug #17894 Comparison with "less than" operator fails with Range partition # CREATE TABLE t1 (c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) engine=myisam PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995), PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) , PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) , PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) , PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) , PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010), PARTITION p11 VALUES LESS THAN MAXVALUE ); INSERT INTO t1 VALUES (1, 'testing partitions', '1995-07-17'), (3, 'testing partitions','1995-07-31'), (5, 'testing partitions','1995-08-13'), (7, 'testing partitions','1995-08-26'), (9, 'testing partitions','1995-09-09'), (0, 'testing partitions','2000-07-10'), (2, 'testing partitions','2000-07-23'), (4, 'testing partitions','2000-08-05'), (6, 'testing partitions','2000-08-19'), (8, 'testing partitions','2000-09-01'); SELECT COUNT(*) FROM t1 WHERE c3 BETWEEN '1996-12-31' AND '2000-12-31'; SELECT COUNT(*) FROM t1 WHERE c3 < '2000-12-31'; DROP TABLE t1;