summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build-tools/Do-solaris-pkg28
-rw-r--r--mysql-test/r/join_outer.result20
-rw-r--r--mysql-test/t/join_outer.test13
-rw-r--r--sql/item_cmpfunc.h1
4 files changed, 48 insertions, 14 deletions
diff --git a/Build-tools/Do-solaris-pkg b/Build-tools/Do-solaris-pkg
index 685a1f0923b..8815033146c 100644
--- a/Build-tools/Do-solaris-pkg
+++ b/Build-tools/Do-solaris-pkg
@@ -14,19 +14,17 @@ $pkginfo = "pkginfo";
($gid ,$pkg ,$uid ,$userInfo ,$email ,$quota ,$group ,$passwd
,$category ,$userHome ,$vendor ,$loginShell ,$pstamp ,$basedir)=();
-$fullname = shift @ARGV;
-$fullname or die "No package name was specified";
--d $fullname or die "That directory is not present!";
+$tarball= $fullname= shift @ARGV;
+$fullname=~ s/.*(mysql.*)\.tar\.gz/$1/;
+$workdir= $$;
+chomp ($parent_workdir= `pwd`);
-$fullname =~ s,/+$,,; # Remove ending slash if any
+$hostname= ($fullname=~ m/^.+-64bit$/) ? $hostname . "-64bit" : $hostname;
+$pkgdir= "$ENV{'HOME'}/$hostname";
-$pkgdir= `cd ../$hostname; pwd`;
-$pwd = `pwd`;
-if ($pwd =~ '\/usr\/local') {
- $pwd = $`;
-}
-die "Wrong location, please cd to <PKGBASE>/usr/local/ and run again.\n"
- if ($pwd eq "");
+mkdir $workdir or die "Can't make workdir: $!\n";
+chdir $workdir or die "Can't change to workdir: $!\n";
+system ("tar xzvf $tarball") == 0 or die "Can't untar: $!\n";
system ("$find . -print | $pkgproto > $temp");
open (PREPROTO,"<$temp") or die "Unable to read prototype information ($!)\n";
@@ -57,8 +55,9 @@ unlink $temp or warn "Unable to remove tempfile ($!)\n";
# Now we can start building the package
#
# First get some info
+$fullname =~ s,/+$,,; # Remove ending slash if any
-$fullname =~ /^((mysql)-.+)-([\d\.]+)-.+$/
+$fullname =~ /^((mysql)-\w+-?\w+?)-([\d\.]+\w?)-.+$/
or die "This name is not what I expected - \"$fullname\"";
$default{"name"}= $2;
@@ -137,10 +136,11 @@ system ("gzip /tmp/$packagename");
# Clean-up the spool area
system ("(cd /var/spool/pkg; rm -rf $pkg)");
# Clean-up the ~/packaging/ area
-system ("(rm -rf mysql*)");
unlink $pkginfo;
unlink $prototype;
-system ("mv /tmp/${packagename}.gz $pkgdir");
+chdir $parent_workdir or die "Can't change to parent workdir '$parent_workdir': $!\n";
+system ("rm -rf $workdir") == 0 or die "Can't remove the working dir: $!\n";
+system ("mv /tmp/${packagename}.gz $pkgdir") == 0 or die "Can't move the finished package out of /tmp: $!\n";
print "Done. (~/$hostname/$packagename.gz)\n";
# The subroutines
sub chkvar {
diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result
index c045aa0d00a..09a55ba2054 100644
--- a/mysql-test/r/join_outer.result
+++ b/mysql-test/r/join_outer.result
@@ -683,6 +683,26 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t3 ALL NULL NULL NULL NULL 2
drop table t1, t2, t3;
create table t1 (
+a int(11),
+b char(10),
+key (a)
+);
+insert into t1 (a) values (1),(2),(3),(4);
+create table t2 (a int);
+select * from t1 left join t2 on t1.a=t2.a where not (t2.a <=> t1.a);
+a b a
+1 NULL NULL
+2 NULL NULL
+3 NULL NULL
+4 NULL NULL
+select * from t1 left join t2 on t1.a=t2.a having not (t2.a <=> t1.a);
+a b a
+1 NULL NULL
+2 NULL NULL
+3 NULL NULL
+4 NULL NULL
+drop table t1,t2;
+create table t1 (
match_id tinyint(3) unsigned not null auto_increment,
home tinyint(3) unsigned default '0',
unique key match_id (match_id),
diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test
index d177a68e685..8096176a744 100644
--- a/mysql-test/t/join_outer.test
+++ b/mysql-test/t/join_outer.test
@@ -457,6 +457,19 @@ explain select * from t1 left join t2 on b1 = a1 left join t3 on c1 = a1 an
drop table t1, t2, t3;
+# Test for BUG#8711 '<=>' was considered to be a NULL-rejecting predicate.
+create table t1 (
+ a int(11),
+ b char(10),
+ key (a)
+);
+insert into t1 (a) values (1),(2),(3),(4);
+create table t2 (a int);
+
+select * from t1 left join t2 on t1.a=t2.a where not (t2.a <=> t1.a);
+select * from t1 left join t2 on t1.a=t2.a having not (t2.a <=> t1.a);
+drop table t1,t2;
+
# Test for BUG#5088
create table t1 (
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index 061ed468b78..8e8e4e922c0 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -284,6 +284,7 @@ public:
Item_func_equal(Item *a,Item *b) :Item_bool_rowready_func2(a,b) {};
longlong val_int();
void fix_length_and_dec();
+ table_map not_null_tables() const { return 0; }
enum Functype functype() const { return EQUAL_FUNC; }
enum Functype rev_functype() const { return EQUAL_FUNC; }
cond_result eq_cmp_result() const { return COND_TRUE; }