From a2073df2848f0c8a405aca2b5ba8712f37c77cc0 Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Fri, 10 Jun 2005 21:29:37 +0200 Subject: [PATCH 1/6] mtr_process.pl: Added a sleep for 5 seconds when shuting down, work around for strange problem with server restarts mtr_cases.pl: Set default time zone as opt to mysqld mysql-test-run.pl: Enabled --mysqld= to work Put some Windows path names into environment, to be used in --replace_result mysql-test-run.sh: Make shell script tolerant to Windows change in test cases --- mysql-test/lib/mtr_cases.pl | 14 ++++++-------- mysql-test/lib/mtr_process.pl | 2 ++ mysql-test/mysql-test-run.pl | 18 +++++++++++++++--- mysql-test/mysql-test-run.sh | 3 ++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl index 878afe95f2c..b4f0080a4e9 100644 --- a/mysql-test/lib/mtr_cases.pl +++ b/mysql-test/lib/mtr_cases.pl @@ -171,8 +171,8 @@ sub collect_one_test_case($$$$$) { my $slave_sh= "$testdir/$tname-slave.sh"; my $disabled= "$testdir/$tname.disabled"; - $tinfo->{'master_opt'}= []; - $tinfo->{'slave_opt'}= []; + $tinfo->{'master_opt'}= ["--default-time-zone=+3:00"]; + $tinfo->{'slave_opt'}= ["--default-time-zone=+3:00"]; $tinfo->{'slave_mi'}= []; if ( -f $master_opt_file ) @@ -180,9 +180,9 @@ sub collect_one_test_case($$$$$) { $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 - my $extra_master_opt= mtr_get_opts_from_file($master_opt_file); + $tinfo->{'master_opt'}= mtr_get_opts_from_file($master_opt_file); - foreach my $opt (@$extra_master_opt) + foreach my $opt (@{$tinfo->{'master_opt'}}) { my $value; @@ -191,7 +191,7 @@ sub collect_one_test_case($$$$$) { if ( defined $value ) { $tinfo->{'timezone'}= $value; - $extra_master_opt= []; + $tinfo->{'master_opt'}= []; $tinfo->{'master_restart'}= 0; last; } @@ -206,13 +206,11 @@ sub collect_one_test_case($$$$$) { { $tinfo->{'result_file'}.= $::opt_result_ext; } - $extra_master_opt= []; + $tinfo->{'master_opt'}= []; $tinfo->{'master_restart'}= 0; last; } } - - $tinfo->{'master_opt'}= $extra_master_opt; } if ( -f $slave_opt_file ) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index 7bca422773c..1eb4f6b7c58 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -669,6 +669,8 @@ sub mtr_mysqladmin_shutdown () { last; # If we got here, we are done } + sleep(5) if $::glob_win32; # FIXME next startup fails if no sleep + return $res; } diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index d4fb37c2f96..17ddebdcb2b 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -204,7 +204,7 @@ our $opt_bench= 0; our $opt_small_bench= 0; our $opt_big_test= 0; # Send --big-test to mysqltest -our $opt_extra_mysqld_opt; # FIXME not handled +our @opt_extra_mysqld_opt; our $opt_compress; our $opt_current_test; @@ -500,7 +500,7 @@ sub command_line_setup () { 'record' => \$opt_record, # ??? - 'mysqld=s' => \$opt_extra_mysqld_opt, + 'mysqld=s' => \@opt_extra_mysqld_opt, # Run test on running server 'extern' => \$opt_extern, @@ -953,13 +953,25 @@ sub environment_setup () { $ENV{'LC_COLLATE'}= "C"; $ENV{'USE_RUNNING_SERVER'}= $glob_use_running_server; $ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir; + $ENV{'MYSQL_TEST_WINDIR'}= $glob_mysql_test_dir; $ENV{'MASTER_MYSOCK'}= $master->[0]->{'path_mysock'}; + $ENV{'MASTER_WINMYSOCK'}= $master->[0]->{'path_mysock'}; $ENV{'MASTER_MYSOCK1'}= $master->[1]->{'path_mysock'}; $ENV{'MASTER_MYPORT'}= $master->[0]->{'path_myport'}; $ENV{'MASTER_MYPORT1'}= $master->[1]->{'path_myport'}; $ENV{'SLAVE_MYPORT'}= $slave->[0]->{'path_myport'}; # $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME $ENV{'MYSQL_TCP_PORT'}= 3306; + + if ( $glob_cygwin_perl ) + { + foreach my $key ('MYSQL_TEST_WINDIR','MASTER_MYSOCK') + { + $ENV{$key}= `cygpath -w $ENV{$key}`; + $ENV{$key} =~ s,\\,\\\\,g; + chomp($ENV{$key}); + } + } } @@ -1852,7 +1864,7 @@ sub mysqld_arguments ($$$$$) { } } - foreach my $arg ( @$extra_opt ) + foreach my $arg ( @opt_extra_mysqld_opt, @$extra_opt ) { mtr_add_arg($args, "%s%s", $prefix, $arg); } diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 3f7e7d22200..7540a76317e 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -170,7 +170,8 @@ cd .. BASEDIR=`pwd` cd $CWD MYSQL_TEST_DIR=$BASEDIR/mysql-test -export MYSQL_TEST_DIR +MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR +export MYSQL_TEST_DIR MYSQL_TEST_WINDIR STD_DATA=$MYSQL_TEST_DIR/std_data hostname=`hostname` # Installed in the mysql privilege table From a13597604be0e4b9560cd4b18ded2f8471995829 Mon Sep 17 00:00:00 2001 From: "konstantin@mysql.com" <> Date: Wed, 15 Jun 2005 02:57:23 +0400 Subject: [PATCH 2/6] gcc 2.96 fixes (workarounds for compiler bugs in namespace handling) --- extra/yassl/include/yassl_int.hpp | 7 ++++++- extra/yassl/include/yassl_types.hpp | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/extra/yassl/include/yassl_int.hpp b/extra/yassl/include/yassl_int.hpp index d3f7754f074..60a78a3970e 100644 --- a/extra/yassl/include/yassl_int.hpp +++ b/extra/yassl/include/yassl_int.hpp @@ -164,7 +164,12 @@ private: // openSSL bignum struct BIGNUM { - Integer int_; + /* + gcc 2.96 fix: because of two Integer classes (yaSSL::Integer and + TaoCrypt::Integer), we need to explicitly state the namespace + here to let gcc 2.96 deduce the correct type. + */ + yaSSL::Integer int_; void assign(const byte* b, uint s) { int_.assign(b,s); } }; diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp index d1d3fb829de..01b82d95039 100644 --- a/extra/yassl/include/yassl_types.hpp +++ b/extra/yassl/include/yassl_types.hpp @@ -445,6 +445,15 @@ const opaque master_label[MASTER_LABEL_SZ + 1] = "master secret"; const opaque key_label [KEY_LABEL_SZ + 1] = "key expansion"; -} // naemspace +} // namespace + +#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96 +/* + gcc 2.96 bails out because of two declarations of byte: yaSSL::byte and + TaoCrypt::byte. TODO: define global types.hpp and move the declaration of + 'byte' there. +*/ +using yaSSL::byte; +#endif #endif // yaSSL_TYPES_HPP From 2545d83f31119724b85a040cc70eec1ba5581738 Mon Sep 17 00:00:00 2001 From: "mleich@mysql.com" <> Date: Wed, 15 Jun 2005 19:16:17 +0200 Subject: [PATCH 3/6] Improvement of the auxiliary routines include/show_msg*.inc - replace @message by $message --> The annoying protocol line "SET @message= " will disappear. - extended description - some examples added --- mysql-test/include/show_msg.inc | 10 +++- mysql-test/include/show_msg80.inc | 82 ++++++++++++++++++++++++++++--- mysql-test/r/mysqltest.result | 9 ++-- mysql-test/t/mysqltest.test | 12 +++-- 4 files changed, 92 insertions(+), 21 deletions(-) diff --git a/mysql-test/include/show_msg.inc b/mysql-test/include/show_msg.inc index 5a29541edcf..659dce14686 100755 --- a/mysql-test/include/show_msg.inc +++ b/mysql-test/include/show_msg.inc @@ -6,13 +6,19 @@ # Usage: # Add the following to any *.test file: # : -# set @message="This is a message example"; +# let $message= ; # --source include/show_msg.inc # : # +# Attention: +# - Please do not write any spaces between $message and the "=", because the +# assignment will not work. +# - Be careful with single quotes. They must be escaped like "''" or "\'". +# +# "include/show_msg80.inc" contains a detailed description and examples. --disable_query_log -SET @utf8_message = CONVERT(@message using utf8); +eval SET @utf8_message = CONVERT('$message' using utf8); select @utf8_message as "" union select repeat(CONVERT('-' using utf8),char_length(@utf8_message)); diff --git a/mysql-test/include/show_msg80.inc b/mysql-test/include/show_msg80.inc index d9a59c5517a..acc2c4301a3 100755 --- a/mysql-test/include/show_msg80.inc +++ b/mysql-test/include/show_msg80.inc @@ -1,22 +1,88 @@ #### include/show_msg80.inc # -# This file writes the value set in @message into the -# a protocol file as part of executing a test sequence -# with a dash line that is fixed on 80 characters. -# This can be used in the case of long messages, -# multi line messages that exceed 80 or if an 80 char -# line is desired for short messages. +# This file writes the value set in @message into the a protocol file as part +# of executing a test sequence with a dash line that is fixed on 80 characters. +# +# This can be used in the case of long messages, multi line messages that +# exceed 80 or if an 80 char line is desired for short messages. # # Usage: # Add the following to any *.test file: # : -# set @message="This is a message example"; +# let $message= ; # --source include/show_msg80.inc # : # +# Attention: +# - Please do not write any spaces between $message and the "=", because the +# assignment will not work. +# - Be careful with single quotes. They must be escaped like "''" or "\'". +# +# +# Content of "$message" and protocol output depending on the assignement: +# ----------------------------------------------------------------------- +# first char after "$message=", +# where the content is not (space or tab) +# first chat after beginning of the line, +# where the content is not (space or tab) +# last char before ";" +# | beginning or end of line +# +# script: let $message= | +# | | +# |................| +# | ; +# content: " +# ...." +# protocol output: || +# || +# |.....| +# || +# |--- 80 dashes ---| +# +# +# Examples of messages: +# --------------------- +# +# Several lines with indentation variant 1: +# script: |let $message= . Testcase 3.1 : Ensure that Pi is not an| +# | . integer number| +# | . Third line; +# protocol: |. Testcase 3.1 : Ensure that Pi is not an| +# |. integer number| +# |. Third line| +# |------ 80 dashes ----| +# Please mention that +# - the auxiliary "." preserves the indentation. +# - it is easy to write the script lines to get a fine indentation +# - the "." is printed +# +# Several lines with indentation variant 2: +# script: |let $message= +# |" Testcase 3.1 : Ensure that Pi is not an| +# | integer number.| +# | Third line"; +# protocol: |" Testcase 3.1 : Ensure that Pi is not an| +# | integer number.| +# | Third line"| +# |------ 80 dashes ----| +# +# Please mention that +# - the '"' preserves the indentation. +# - it is not so easy to write the script lines to get a fine indentation +# - the '"' is printed +# +# Several lines with lost indentation (negative example) +# script: |let $message= Here is message line 1 +# | message line 2; +# protocol: |Here is message line 1| +# |message line 2| +# |------ 80 dashes ----| +# Please mention, that the leading spaces of the message lines disappeared. +# --disable_query_log -SET @utf8_message = CONVERT(@message using utf8); +eval SET @utf8_message = CONVERT('$message' using utf8); select @utf8_message as "" union select repeat(CONVERT('-' using utf8),80); diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result index 87e2fca970b..63123b418eb 100644 --- a/mysql-test/r/mysqltest.result +++ b/mysql-test/r/mysqltest.result @@ -148,17 +148,14 @@ a'b a"b select 'aaa\\','aa''a',"aa""a"; aaa\ aa'a aa"a aaa\ aa'a aa"a -SET @message = 'Here comes a message'; Here comes a message -------------------- -SET @message = USER(); root@localhost -------------- -SET @message = 'Here comes a very very long message that is longer then 80 characters -on multiple lines'; -Here comes a very very long message that is longer then 80 characters -on multiple lines +"Here comes a very very long message that + - is longer then 80 characters and + - consists of several lines" -------------------------------------------------------------------------------- diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test index 4e16e57058d..43e82c4037b 100644 --- a/mysql-test/t/mysqltest.test +++ b/mysql-test/t/mysqltest.test @@ -299,19 +299,21 @@ select 'aaa\\','aa''a',"aa""a"; # -# Check of include/show_msg.inc +# Check of include/show_msg.inc and include/show_msg80.inc # # The message contains in most cases a string with the default character set -SET @message = 'Here comes a message'; +let $message= Here comes a message; --source include/show_msg.inc # The message could also contain a string with character set utf8 -SET @message = USER(); +let $message= `SELECT USER()`; --source include/show_msg.inc # The message contains more then 80 characters on multiple lines -SET @message = 'Here comes a very very long message that is longer then 80 characters -on multiple lines'; +let $message= +"Here comes a very very long message that + - is longer then 80 characters and + - consists of several lines"; --source include/show_msg80.inc From 2e732594bcbcf17cf47805e02d3cde95e23c9b2d Mon Sep 17 00:00:00 2001 From: "mleich@mysql.com" <> Date: Thu, 16 Jun 2005 12:46:09 +0200 Subject: [PATCH 4/6] Post review fixes --- mysql-test/include/show_msg80.inc | 73 +++++++++++++++++++++---------- mysql-test/r/mysqltest.result | 5 +++ mysql-test/t/mysqltest.test | 8 ++++ 3 files changed, 64 insertions(+), 22 deletions(-) diff --git a/mysql-test/include/show_msg80.inc b/mysql-test/include/show_msg80.inc index acc2c4301a3..42fb35edbcc 100755 --- a/mysql-test/include/show_msg80.inc +++ b/mysql-test/include/show_msg80.inc @@ -16,14 +16,19 @@ # Attention: # - Please do not write any spaces between $message and the "=", because the # assignment will not work. -# - Be careful with single quotes. They must be escaped like "''" or "\'". +# - Be careful with single quotes within the value. They must be escaped like +# "''" or "\'". +# - Do not keep the value between single quotes. # # -# Content of "$message" and protocol output depending on the assignement: -# ----------------------------------------------------------------------- -# first char after "$message=", +# Content of "$message" and protocol output depending on the assignment: +# ---------------------------------------------------------------------- +# +# I is assumed, that the value is not kept between double quotes. +# +# first character after "$message=", # where the content is not (space or tab) -# first chat after beginning of the line, +# first character after beginning of the line, # where the content is not (space or tab) # last char before ";" # | beginning or end of line @@ -31,7 +36,7 @@ # script: let $message= | # | | # |................| -# | ; +# | ; # content: " # ...." # protocol output: || @@ -40,24 +45,17 @@ # || # |--- 80 dashes ---| # +# Attention: +# and set to characters like "-$#" which are also used +# to start comments, options and the names of mysqltest variables +# lead to syntax errors or mangled messages. +# # # Examples of messages: # --------------------- # -# Several lines with indentation variant 1: -# script: |let $message= . Testcase 3.1 : Ensure that Pi is not an| -# | . integer number| -# | . Third line; -# protocol: |. Testcase 3.1 : Ensure that Pi is not an| -# |. integer number| -# |. Third line| -# |------ 80 dashes ----| -# Please mention that -# - the auxiliary "." preserves the indentation. -# - it is easy to write the script lines to get a fine indentation -# - the "." is printed -# -# Several lines with indentation variant 2: +# Variant1 (ease of use): +# Several lines with indentation kept between double quotes # script: |let $message= # |" Testcase 3.1 : Ensure that Pi is not an| # | integer number.| @@ -69,10 +67,32 @@ # # Please mention that # - the '"' preserves the indentation. -# - it is not so easy to write the script lines to get a fine indentation +# - it is easy to write the script lines to get a fine indentation, +# if the value starts at the beginning of a new line # - the '"' is printed +# - there are the least or no problems with characters like "-#$" # -# Several lines with lost indentation (negative example) +# +# Variant 2 (grep the messages from the protocol is easy): +# Several lines with indentation + auxiliary character (".") +# at the (non tab or space) beginning of every message line +# script: |let $message= . Testcase 3.1 : Ensure that Pi is not an| +# | . integer number.| +# | . Third line; +# protocol: |. Testcase 3.1 : Ensure that Pi is not an| +# |. integer number.| +# |. Third line| +# |------ 80 dashes ----| +# Please mention that +# - the auxiliary character preserves the indentation. +# - it is easy to write the script lines to get a fine indentation +# - the auxiliary character is printed +# - it is recommended to use "." as auxiliary character +# - auxiliary characters like "-'$#" cause problems +# +# +# +# Bad variant1: Several lines with lost indentation # script: |let $message= Here is message line 1 # | message line 2; # protocol: |Here is message line 1| @@ -80,6 +100,15 @@ # |------ 80 dashes ----| # Please mention, that the leading spaces of the message lines disappeared. # +# Bad variant2: Several lines leading to a syntax error, because of "-" +# script: |let $message= - This is a message +# | - with a second and +# | - third line; +# protocol: | - third line;; +# |ERROR 42000: You have an error ... near '- third line' +# + several following errors +# +# --disable_query_log eval SET @utf8_message = CONVERT('$message' using utf8); diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result index 63123b418eb..2b171229096 100644 --- a/mysql-test/r/mysqltest.result +++ b/mysql-test/r/mysqltest.result @@ -159,3 +159,8 @@ root@localhost - is longer then 80 characters and - consists of several lines" -------------------------------------------------------------------------------- + +. Here comes a very very long message that +. - is longer then 80 characters and +. - consists of several lines +-------------------------------------------------------------------------------- diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test index 43e82c4037b..14b8c1d1127 100644 --- a/mysql-test/t/mysqltest.test +++ b/mysql-test/t/mysqltest.test @@ -311,9 +311,17 @@ let $message= `SELECT USER()`; --source include/show_msg.inc # The message contains more then 80 characters on multiple lines +# and is kept between double quotes. let $message= "Here comes a very very long message that - is longer then 80 characters and - consists of several lines"; --source include/show_msg80.inc +# The message contains more then 80 characters on multiple lines +# and uses the auxiliary character "." at the beginning of the message lines. +let $message= . Here comes a very very long message that + . - is longer then 80 characters and + . - consists of several lines; +--source include/show_msg80.inc + From bd0386839c550e7ceaf86778933c4eb5e8b15407 Mon Sep 17 00:00:00 2001 From: "joerg@mysql.com" <> Date: Thu, 16 Jun 2005 13:44:08 +0200 Subject: [PATCH 5/6] "configure.in": Correct equality comparison: In shell 'test', it is single '=' (bug#11007). --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 08b739c5782..d7a081ed6c5 100644 --- a/configure.in +++ b/configure.in @@ -2273,7 +2273,7 @@ AC_ARG_WITH([mysqlmanager], [if test "x${withval}" != "xno"; then tools_dirs="$tools_dirs server-tools" fi], - [if test "x${with_server}" == "xyes"; then + [if test "x${with_server}" = "xyes"; then tools_dirs="$tools_dirs server-tools" fi] ) From 375e79bb6eabc8169ff9a7bf0331d5553805723a Mon Sep 17 00:00:00 2001 From: "timour@mysql.com" <> Date: Thu, 16 Jun 2005 18:03:51 +0300 Subject: [PATCH 6/6] Post-fix for BUG#11211 Exclude the query that generates warning from PS tests, due to extra warning under PS. --- mysql-test/t/alias.test | 3 ++- mysql-test/t/group_by.test | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mysql-test/t/alias.test b/mysql-test/t/alias.test index 986af339456..646f077217d 100644 --- a/mysql-test/t/alias.test +++ b/mysql-test/t/alias.test @@ -61,8 +61,9 @@ INSERT INTO t1 VALUES (3359361,406,3359361,'Mustermann Musterfrau',7001,'2000-05 INSERT INTO t1 VALUES (3359362,406,3359362,'Mustermann Musterfrau',7001,'2000-05-20','workflow','Auftrag erledigt','Originalvertrag eingegangen und geprüft','','privat',1509984,2145874,'+','','P',1909154,'MobilComSuper92000D1(Akquise)',NULL,NULL,'MS9ND1',327,24,'MobilCom Intern',7003,NULL,'auto',20010202105916,'Mobilfunk','PP','','',''); # This died because we used the field Kundentyp twice - +--disable_ps_protocol SELECT ELT(FIELD(kundentyp,'PP','PPA','PG','PGA','FK','FKA','FP','FPA','K','KA','V','VA',''), 'Privat (Private Nutzung)','Privat (Private Nutzung) Sitz im Ausland','Privat (geschaeftliche Nutzung)','Privat (geschaeftliche Nutzung) Sitz im Ausland','Firma (Kapitalgesellschaft)','Firma (Kapitalgesellschaft) Sitz im Ausland','Firma (Personengesellschaft)','Firma (Personengesellschaft) Sitz im Ausland','oeff. rechtl. Koerperschaft','oeff. rechtl. Koerperschaft Sitz im Ausland','Eingetragener Verein','Eingetragener Verein Sitz im Ausland','Typ unbekannt') AS Kundentyp ,kategorie FROM t1 WHERE hdl_nr < 2000000 AND kategorie IN ('Prepaid','Mobilfunk') AND st_klasse = 'Workflow' GROUP BY kundentyp ORDER BY kategorie; +--enable_ps_protocol drop table t1; diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index 606429b8dfe..b4762b847b8 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -550,10 +550,11 @@ insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2'); insert into t2 values ('aaa', 'bb1'), ('aaa', 'bb2'); # query with ambiguous column reference 'c2' +--disable_ps_protocol select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4 group by c2; - show warnings; +--enable_ps_protocol # this query has no ambiguity select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4