From fb09633eb17e34bf987e9c32b83e287262165469 Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Mon, 20 Jun 2005 18:03:30 +0200 Subject: [PATCH 1/3] Makefile.am: Corrected dependency for "lex_hash.h", to avoid occasional make failure --- sql/Makefile.am | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/sql/Makefile.am b/sql/Makefile.am index f812bbe72af..a76adbd0d57 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -104,8 +104,8 @@ DEFS = -DMYSQL_SERVER \ -DDATADIR="\"$(MYSQLDATAdir)\"" \ -DSHAREDIR="\"$(MYSQLSHAREdir)\"" \ @DEFS@ -# Don't put lex_hash.h in BUILT_SOURCES as this will give infinite recursion -BUILT_SOURCES = sql_yacc.cc sql_yacc.h + +BUILT_SOURCES = sql_yacc.cc sql_yacc.h lex_hash.h EXTRA_DIST = udf_example.cc $(BUILT_SOURCES) AM_YFLAGS = -d @@ -123,9 +123,6 @@ link_sources: mysql_tzinfo_to_sql.cc rm -f my_time.c @LN_CP_F@ ../sql-common/my_time.c my_time.c -gen_lex_hash.o: gen_lex_hash.cc lex.h - $(CXXCOMPILE) -c $(INCLUDES) $< - mysql_tzinfo_to_sql.o: $(mysql_tzinfo_to_sql_SOURCES) $(CXXCOMPILE) -c $(INCLUDES) -DTZINFO2SQL $< @@ -140,13 +137,9 @@ sql_yacc.o: sql_yacc.cc sql_yacc.h $(HEADERS) @echo "If it fails, re-run configure with --with-low-memory" $(CXXCOMPILE) $(LM_CFLAGS) -c $< -lex_hash.h: lex.h gen_lex_hash.cc sql_yacc.h - $(MAKE) gen_lex_hash$(EXEEXT) +lex_hash.h: gen_lex_hash$(EXEEXT) ./gen_lex_hash$(EXEEXT) > $@ -# Hack to ensure that lex_hash.h is built early -sql_lex.o: lex_hash.h - # For testing of udf_example.so; Works on platforms with gcc # (This is not part of our build process but only provided as an example) udf_example.so: udf_example.cc From acc6651d24b91ebd6396ee2d85cfb861570b5290 Mon Sep 17 00:00:00 2001 From: "igor@rurik.mysql.com" <> Date: Mon, 20 Jun 2005 10:49:04 -0700 Subject: [PATCH 2/3] group_by.result: Added a test case for bug #11385. group_by.test: Added a test case for bug #11385. field.h: Fixed bug #11385. The bug was due to not defined method decimals for the class Field_datetime. --- mysql-test/r/group_by.result | 9 +++++++++ mysql-test/t/group_by.test | 15 ++++++++++++++- sql/field.h | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index ee4b6a31f2f..e279fca2a9d 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -732,3 +732,12 @@ SELECT DISTINCT a, b FROM t1 GROUP BY 'const'; a b 1 2 DROP TABLE t1; +CREATE TABLE t1 (id INT, dt DATETIME); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f; +f id +20050501123000 1 +DROP TABLE t1; diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index f9d113a9c50..382580cbd4e 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -543,7 +543,7 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1 DROP TABLE t1; # -# Test for bug #8614: GROUP BY 'const with DISTINCT +# Test for bug #8614: GROUP BY 'const' with DISTINCT # CREATE TABLE t1 (a int, b int); @@ -552,3 +552,16 @@ SELECT a, b FROM t1 GROUP BY 'const'; SELECT DISTINCT a, b FROM t1 GROUP BY 'const'; DROP TABLE t1; + +# +# Test for bug #11385: GROUP BY for datetime converted to decimals +# + +CREATE TABLE t1 (id INT, dt DATETIME); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); +SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f; + +DROP TABLE t1; diff --git a/sql/field.h b/sql/field.h index 1d7669d540d..ba963418c7a 100644 --- a/sql/field.h +++ b/sql/field.h @@ -25,6 +25,7 @@ #endif #define NOT_FIXED_DEC 31 +#define DATETIME_DEC 6 class Send_field; class Protocol; @@ -861,6 +862,7 @@ public: enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONGLONG; } #endif enum Item_result cmp_type () const { return INT_RESULT; } + uint decimals() const { return DATETIME_DEC; } int store(const char *to,uint length,CHARSET_INFO *charset); int store(double nr); int store(longlong nr); From 9426710c68dc27dade8d189baacc00296dd53e5d Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Mon, 20 Jun 2005 21:37:39 +0200 Subject: [PATCH 3/3] mtr_cases.pl: Bug#11466: Script can now get test case name from test case file path on command line mysql-test-run.pl: Bug#11466: Added --skip-ndbcluster/--skip-ndb option mtr_cases.pl: Don't set --default-time-zone if opt file sets it Restart the server if time zone is given in opt file mysql-test-run.pl: Don't remove symlink to "var" directory in cleanup Removed duplicate/unessesary options to mysqld --- mysql-test/lib/mtr_cases.pl | 75 +++++++++++++++++++++++------------- mysql-test/mysql-test-run.pl | 29 +++++++------- 2 files changed, 63 insertions(+), 41 deletions(-) diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl index c07f10c3bf7..72cbe72bc0a 100644 --- a/mysql-test/lib/mtr_cases.pl +++ b/mysql-test/lib/mtr_cases.pl @@ -4,6 +4,7 @@ # and is part of the translation of the Bourne shell script with the # same name. +use File::Basename; use strict; sub collect_test_cases ($); @@ -39,6 +40,7 @@ sub collect_test_cases ($) { if ( @::opt_cases ) { foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort + $tname= basename($tname, ".test"); my $elem= "$tname.test"; if ( ! -f "$testdir/$elem") { @@ -161,52 +163,73 @@ sub collect_one_test_case($$$$$) { my $slave_sh= "$testdir/$tname-slave.sh"; my $disabled= "$testdir/$tname.disabled"; - $tinfo->{'master_opt'}= ["--default-time-zone=+3:00"]; - $tinfo->{'slave_opt'}= ["--default-time-zone=+3:00"]; + $tinfo->{'master_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : []; + $tinfo->{'slave_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : []; $tinfo->{'slave_mi'}= []; if ( -f $master_opt_file ) { $tinfo->{'master_restart'}= 1; # We think so for now - # This is a dirty hack from old mysql-test-run, we use the opt file - # to flag other things as well, it is not a opt list at all - $tinfo->{'master_opt'}= mtr_get_opts_from_file($master_opt_file); - foreach my $opt (@{$tinfo->{'master_opt'}}) + MASTER_OPT: { - my $value; + my $master_opt= mtr_get_opts_from_file($master_opt_file); - $value= mtr_match_prefix($opt, "--timezone="); - - if ( defined $value ) + foreach my $opt ( @$master_opt ) { - $tinfo->{'timezone'}= $value; - $tinfo->{'master_opt'}= []; - $tinfo->{'master_restart'}= 0; - last; - } + my $value; - $value= mtr_match_prefix($opt, "--result-file="); + # This is a dirty hack from old mysql-test-run, we use the opt + # file to flag other things as well, it is not a opt list at + # all - if ( defined $value ) - { - $tinfo->{'result_file'}= "r/$value.result"; - if ( $::opt_result_ext and $::opt_record or - -f "$tinfo->{'result_file'}$::opt_result_ext") + $value= mtr_match_prefix($opt, "--timezone="); + if ( defined $value ) { - $tinfo->{'result_file'}.= $::opt_result_ext; + $tinfo->{'timezone'}= $value; + $tinfo->{'skip'}= 1 if $::glob_win32; # FIXME server unsets TZ + last MASTER_OPT; } - $tinfo->{'master_opt'}= []; - $tinfo->{'master_restart'}= 0; - last; + + $value= mtr_match_prefix($opt, "--result-file="); + if ( defined $value ) + { + $tinfo->{'result_file'}= "r/$value.result"; + if ( $::opt_result_ext and $::opt_record or + -f "$tinfo->{'result_file'}$::opt_result_ext") + { + $tinfo->{'result_file'}.= $::opt_result_ext; + } + $tinfo->{'master_restart'}= 0; + last MASTER_OPT; + } + + # If we set default time zone, remove the one we have + $value= mtr_match_prefix($opt, "--default-time-zone="); + if ( defined $value ) + { + $tinfo->{'master_opt'}= []; + } + } + + # Ok, this was a real option list, add it + push(@{$tinfo->{'master_opt'}}, @$master_opt); } } if ( -f $slave_opt_file ) { - $tinfo->{'slave_opt'}= mtr_get_opts_from_file($slave_opt_file); $tinfo->{'slave_restart'}= 1; + my $slave_opt= mtr_get_opts_from_file($slave_opt_file); + + foreach my $opt ( @$slave_opt ) + { + # If we set default time zone, remove the one we have + my $value= mtr_match_prefix($opt, "--default-time-zone="); + $tinfo->{'slave_opt'}= [] if defined $value; + } + push(@{$tinfo->{'slave_opt'}}, @$slave_opt); } if ( -f $slave_mi_file ) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 6151dd68160..060d8f7207a 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -264,6 +264,7 @@ our $opt_warnings; our $opt_udiff; +our $opt_skip_ndbcluster; our $opt_with_ndbcluster; our $opt_with_openssl; @@ -463,6 +464,7 @@ sub command_line_setup () { # Control what test suites or cases to run 'force' => \$opt_force, 'with-ndbcluster' => \$opt_with_ndbcluster, + 'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster, 'do-test=s' => \$opt_do_test, 'suite=s' => \$opt_suite, 'skip-rpl' => \$opt_skip_rpl, @@ -662,6 +664,11 @@ sub command_line_setup () { $opt_ndbconnectstring= "host=localhost:$opt_ndbcluster_port"; } + if ( $opt_skip_ndbcluster ) + { + $opt_with_ndbcluster= 0; + } + # FIXME #if ( $opt_valgrind or $opt_valgrind_all ) @@ -1020,11 +1027,6 @@ sub kill_and_cleanup () { mtr_report("Removing Stale Files"); - if ( -l $opt_vardir and ! unlink($opt_vardir) ) - { - mtr_error("Can't remove soft link \"$opt_vardir\""); - } - rmtree("$opt_vardir/log"); rmtree("$opt_vardir/ndbcluster-$opt_ndbcluster_port"); rmtree("$opt_vardir/run"); @@ -1722,6 +1724,11 @@ sub mysqld_arguments ($$$$$) { mtr_add_arg($args, "%s--local-infile", $prefix); mtr_add_arg($args, "%s--datadir=%s", $prefix, $master->[$idx]->{'path_myddir'}); + + if ( $opt_skip_ndbcluster ) + { + mtr_add_arg($args, "%s--skip-ndbcluster", $prefix); + } } if ( $type eq 'slave' ) @@ -1862,19 +1869,11 @@ sub mysqld_arguments ($$$$$) { mtr_add_arg($args, "%s--rpl-recovery-rank=1", $prefix); mtr_add_arg($args, "%s--init-rpl-role=master", $prefix); } - else + elsif ( $type eq 'master' ) { mtr_add_arg($args, "%s--exit-info=256", $prefix); mtr_add_arg($args, "%s--open-files-limit=1024", $prefix); - - if ( $type eq 'master' ) - { - mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'}); - } - if ( $type eq 'slave' ) - { - mtr_add_arg($args, "%s--log=%s", $prefix, $slave->[0]->{'path_mylog'}); - } + mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'}); } return $args;