Commit 18025ae9 authored by unknown's avatar unknown

Merge mysql.com:/home/alexi/mysql-5.0

into  mysql.com:/home/alexi/dev/mysql-5.0-1

parents 3eb66207 94a93c5d
......@@ -90,6 +90,9 @@ case "$cpu_family--$model_name" in
*Athlon*)
cpu_arg="athlon";
;;
*Opteron*)
cpu_arg="opteron";
;;
# Intel ia64
*Itanium*)
......@@ -147,6 +150,9 @@ case "$cc_ver--$cc_verno" in
ppc-*)
check_cpu_args='-mcpu=$cpu_arg -mtune=$cpu_arg'
;;
x86_64-*)
check_cpu_args='-mtune=$cpu_arg'
;;
*)
check_cpu_cflags=""
return
......
......@@ -53,21 +53,20 @@ sub collect_test_cases ($) {
else
{
# ----------------------------------------------------------------------
# Skip some tests listed in disabled.def
# Disable some tests listed in disabled.def
# ----------------------------------------------------------------------
my %skiplist;
my $skipfile= "$testdir/disabled.def";
if ( open(SKIPFILE, $skipfile) )
my %disabled;
if ( open(DISABLED, "$testdir/disabled.def" ) )
{
while ( <SKIPFILE> )
while ( <DISABLED> )
{
chomp;
if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ )
{
$skiplist{$1}= $2;
$disabled{$1}= $2;
}
}
close SKIPFILE;
close DISABLED;
}
foreach my $elem ( sort readdir(TESTDIR) ) {
......@@ -75,7 +74,7 @@ sub collect_test_cases ($) {
next if ! defined $tname;
next if $::opt_do_test and ! defined mtr_match_prefix($elem,$::opt_do_test);
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%skiplist);
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled);
}
closedir TESTDIR;
}
......@@ -119,7 +118,7 @@ sub collect_one_test_case($$$$$$) {
my $tname= shift;
my $elem= shift;
my $cases= shift;
my $skiplist=shift;
my $disabled=shift;
my $path= "$testdir/$elem";
......@@ -188,7 +187,7 @@ sub collect_one_test_case($$$$$$) {
my $slave_mi_file= "$testdir/$tname.slave-mi";
my $master_sh= "$testdir/$tname-master.sh";
my $slave_sh= "$testdir/$tname-slave.sh";
my $disabled= "$testdir/$tname.disabled";
my $disabled_file= "$testdir/$tname.disabled";
$tinfo->{'master_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : [];
$tinfo->{'slave_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : [];
......@@ -292,18 +291,18 @@ sub collect_one_test_case($$$$$$) {
}
# FIXME why this late?
if ( $skiplist->{$tname} )
if ( $disabled->{$tname} )
{
$tinfo->{'skip'}= 1;
$tinfo->{'disable'}= 1; # Sub type of 'skip'
$tinfo->{'comment'}= $skiplist->{$tname} if $skiplist->{$tname};
$tinfo->{'comment'}= $disabled->{$tname} if $disabled->{$tname};
}
if ( -f $disabled )
if ( -f $disabled_file )
{
$tinfo->{'skip'}= 1;
$tinfo->{'disable'}= 1; # Sub type of 'skip'
$tinfo->{'comment'}= mtr_fromfile($disabled);
$tinfo->{'comment'}= mtr_fromfile($disabled_file);
}
# We can't restart a running server that may be in use
......
......@@ -186,8 +186,8 @@ sub spawn_parent_impl {
if ( $mode eq 'run' or $mode eq 'test' )
{
my $exit_value= -1;
my $signal_num= 0;
my $dumped_core= 0;
# my $signal_num= 0;
# my $dumped_core= 0;
if ( $mode eq 'run' )
{
......@@ -199,9 +199,10 @@ sub spawn_parent_impl {
mtr_error("$path ($pid) got lost somehow");
}
$exit_value= $? >> 8;
$signal_num= $? & 127;
$dumped_core= $? & 128;
$exit_value= $?;
# $exit_value= $? >> 8;
# $signal_num= $? & 127;
# $dumped_core= $? & 128;
return $exit_value;
}
......@@ -229,9 +230,10 @@ sub spawn_parent_impl {
if ( $ret_pid == $pid )
{
# We got termination of mysqltest, we are done
$exit_value= $? >> 8;
$signal_num= $? & 127;
$dumped_core= $? & 128;
$exit_value= $?;
# $exit_value= $? >> 8;
# $signal_num= $? & 127;
# $dumped_core= $? & 128;
last;
}
......@@ -473,6 +475,7 @@ sub mtr_stop_mysqld_servers ($) {
}
else
{
# Server is dead, we remove the pidfile if any
# Race, could have been removed between I tested with -f
# and the unlink() below, so I better check again with -f
......@@ -502,10 +505,12 @@ sub mtr_stop_mysqld_servers ($) {
# that for true Win32 processes, kill(0,$pid) will not return 1.
# ----------------------------------------------------------------------
start_reap_all(); # Avoid zombies
SIGNAL:
foreach my $sig (15,9)
{
my $retries= 10; # 10 seconds
my $retries= 20; # FIXME 20 seconds, this is silly!
kill($sig, keys %mysqld_pids);
while ( $retries-- and kill(0, keys %mysqld_pids) )
{
......@@ -514,6 +519,8 @@ sub mtr_stop_mysqld_servers ($) {
}
}
stop_reap_all(); # Get into control again
# ----------------------------------------------------------------------
# Now, we check if all we can find using kill(0,$pid) are dead,
# and just assume the rest are. We cleanup socket and PID files.
......@@ -632,7 +639,8 @@ sub mtr_mysqladmin_shutdown () {
$mysql_admin_pids{$pid}= 1;
}
# We wait blocking, we wait for the last one anyway
# As mysqladmin is such a simple program, we trust it to terminate.
# I.e. we wait blocking, and wait wait for them all before we go on.
while (keys %mysql_admin_pids)
{
foreach my $pid (keys %mysql_admin_pids)
......@@ -651,7 +659,8 @@ sub mtr_mysqladmin_shutdown () {
my $timeout= 20; # 20 seconds max
my $res= 1; # If we just fall through, we are done
# in the sense that the servers don't
# listen to their ports any longer
TIME:
while ( $timeout-- )
{
......@@ -669,6 +678,8 @@ sub mtr_mysqladmin_shutdown () {
last; # If we got here, we are done
}
$timeout or mtr_debug("At least one server is still listening to its port");
sleep(5) if $::glob_win32; # FIXME next startup fails if no sleep
return $res;
......@@ -794,8 +805,12 @@ sub sleep_until_file_created ($$$) {
#
##############################################################################
# FIXME something is wrong, we sometimes terminate with "Hangup" written
# to tty, and no STDERR output telling us why.
sub mtr_exit ($) {
my $code= shift;
# cluck("Called mtr_exit()");
local $SIG{HUP} = 'IGNORE';
kill('HUP', -$$);
exit($code);
......
......@@ -10,7 +10,6 @@ sub mtr_report_test_name($);
sub mtr_report_test_passed($);
sub mtr_report_test_failed($);
sub mtr_report_test_skipped($);
sub mtr_report_test_disabled($);
sub mtr_show_failed_diff ($);
sub mtr_report_stats ($);
......
......@@ -341,7 +341,6 @@ sub main () {
if ( ! $glob_use_running_server )
{
if ( $opt_start_dirty )
{
kill_running_server();
......@@ -356,7 +355,7 @@ sub main () {
}
}
if ( $opt_start_and_exit or $opt_start_dirty )
if ( $opt_start_dirty )
{
if ( ndbcluster_start() )
{
......@@ -371,9 +370,7 @@ sub main () {
mtr_error("Can't start the mysqld server");
}
}
else
{
if ( $opt_bench )
elsif ( $opt_bench )
{
run_benchmarks(shift); # Shift what? Extra arguments?!
}
......@@ -381,7 +378,6 @@ sub main () {
{
run_tests();
}
}
mtr_exit(0);
}
......@@ -1487,6 +1483,16 @@ sub run_testcase ($) {
}
}
# ----------------------------------------------------------------------
# If --start-and-exit given, stop here to let user manually run tests
# ----------------------------------------------------------------------
if ( $opt_start_and_exit )
{
mtr_report("\nServers started, exiting");
exit(0);
}
# ----------------------------------------------------------------------
# Run the test case
# ----------------------------------------------------------------------
......@@ -2248,7 +2254,8 @@ Misc options
script-debug Debug this script itself
compress Use the compressed protocol between client and server
timer Show test case execution time
start-and-exit Only initiate and start the "mysqld" servers
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
......
......@@ -2218,6 +2218,23 @@ a
1
2
3
select * from (t1 as t2 left join t1 as t3 using (a)) right join t1 on t1.a>1;
a a
NULL 1
1 2
2 2
3 2
1 3
2 3
3 3
select * from t1 right join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
a a
2 1
3 1
2 2
3 2
2 3
3 3
select * from (t1 as t2 left join t1 as t3 using (a)) right outer join t1 using ( a );
a
1
......
......@@ -1850,10 +1850,8 @@ select * from t1 left join (t1 as t2 left join t1 as t3 using (a)) using ( a );
select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
select * from t1 natural left join (t1 as t2 left join t1 as t3 using (a));
# right join on
# TODO: WL#2486 - there is a problem in the order of tables in RIGHT JOIN
# check how we set next_name_resolution_table
# select * from (t1 as t2 left join t1 as t3 using (a)) right join t1 on t1.a>1;
# select * from t1 right join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
select * from (t1 as t2 left join t1 as t3 using (a)) right join t1 on t1.a>1;
select * from t1 right join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
# right [outer] joing using
select * from (t1 as t2 left join t1 as t3 using (a)) right outer join t1 using ( a );
select * from t1 right outer join (t1 as t2 left join t1 as t3 using (a)) using ( a );
......
This diff is collapsed.
......@@ -374,7 +374,7 @@ struct Field_translator
Field (for tables), or a Field_translator (for views).
*/
class Natural_join_column
class Natural_join_column: public Sql_alloc
{
public:
Field_translator *view_field; /* Column reference of merge view. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment