Commit 251409bb authored by unknown's avatar unknown
Browse files

BUG#16255: Merge to 5.0

parents d0394c70 f895a16c
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -2915,6 +2915,28 @@ select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
s1
2
drop table t1;
create table t1 (
retailerID varchar(8) NOT NULL,
statusID   int(10) unsigned NOT NULL,
changed    datetime NOT NULL,
UNIQUE KEY retailerID (retailerID, statusID, changed)
);
INSERT INTO t1 VALUES("0026", "1", "2005-12-06 12:18:56");
INSERT INTO t1 VALUES("0026", "2", "2006-01-06 12:25:53");
INSERT INTO t1 VALUES("0037", "1", "2005-12-06 12:18:56");
INSERT INTO t1 VALUES("0037", "2", "2006-01-06 12:25:53");
INSERT INTO t1 VALUES("0048", "1", "2006-01-06 12:37:50");
INSERT INTO t1 VALUES("0059", "1", "2006-01-06 12:37:50");
select * from t1 r1 
where (r1.retailerID,(r1.changed)) in 
(SELECT r2.retailerId,(max(changed)) from t1 r2 
group by r2.retailerId);
retailerID	statusID	changed
0026	2	2006-01-06 12:25:53
0037	2	2006-01-06 12:25:53
0048	1	2006-01-06 12:37:50
0059	1	2006-01-06 12:37:50
drop table t1;
create table t1 (df decimal(5,1));
insert into t1 values(1.1);
insert into t1 values(2.2);
+24 −1
Original line number Diff line number Diff line
@@ -1868,7 +1868,30 @@ select * from t1 where NOT(s1+1 = ANY (select s1 from t1));
select * from t1 where (s1 = ALL (select s1/s1 from t1));
select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
drop table t1;
# End of 4.1 tests

#
# Bug #16255: Subquery in where
#
create table t1 (
  retailerID varchar(8) NOT NULL,
  statusID   int(10) unsigned NOT NULL,
  changed    datetime NOT NULL,
  UNIQUE KEY retailerID (retailerID, statusID, changed)
);

INSERT INTO t1 VALUES("0026", "1", "2005-12-06 12:18:56");
INSERT INTO t1 VALUES("0026", "2", "2006-01-06 12:25:53");
INSERT INTO t1 VALUES("0037", "1", "2005-12-06 12:18:56");
INSERT INTO t1 VALUES("0037", "2", "2006-01-06 12:25:53");
INSERT INTO t1 VALUES("0048", "1", "2006-01-06 12:37:50");
INSERT INTO t1 VALUES("0059", "1", "2006-01-06 12:37:50");

select * from t1 r1 
  where (r1.retailerID,(r1.changed)) in 
         (SELECT r2.retailerId,(max(changed)) from t1 r2 
          group by r2.retailerId);
drop table t1;

# End of 4.1 tests

#
+23 −24
Original line number Diff line number Diff line
@@ -1098,22 +1098,21 @@ Item_in_subselect::row_value_transformer(JOIN *join)
        DBUG_RETURN(RES_ERROR);
      Item *item_eq=
        new Item_func_eq(new
                         Item_direct_ref(&select_lex->context,
                         Item_ref(&select_lex->context,
                                  (*optimizer->get_cache())->
                                  addr(i),
                                  (char *)"<no matter>",
                                  (char *)in_left_expr_name),
                         new
                         Item_direct_ref(&select_lex->context,
                         Item_ref(&select_lex->context,
                                  select_lex->ref_pointer_array + i,
                                  (char *)"<no matter>",
                                  (char *)"<list ref>")
                        );
      Item *item_isnull=
        new Item_func_isnull(new
                             Item_direct_ref(&select_lex->context,
                                             select_lex->
                                             ref_pointer_array+i,
                             Item_ref(&select_lex->context,
                                      select_lex->ref_pointer_array+i,
                                      (char *)"<no matter>",
                                      (char *)"<list ref>")
                            );
@@ -1125,7 +1124,7 @@ Item_in_subselect::row_value_transformer(JOIN *join)
                  new
                  Item_is_not_null_test(this,
                                        new
                                        Item_direct_ref(&select_lex->context,
                                        Item_ref(&select_lex->context,
                                                 select_lex->
                                                 ref_pointer_array + i,
                                                 (char *)"<no matter>",
@@ -1185,7 +1184,7 @@ Item_in_subselect::row_value_transformer(JOIN *join)
                    new
                    Item_is_not_null_test(this,
                                          new
                                          Item_direct_ref(&select_lex->context,
                                          Item_ref(&select_lex->context,
                                                   select_lex->
                                                   ref_pointer_array + i,
                                                   (char *)"<no matter>",