Commit 3fc3bb68 authored by unknown's avatar unknown
Browse files

Merge mskold@build.mysql.com:/home/bk/mysql-4.1

into mysql.com:/usr/local/home/marty/MySQL/test/mysql-4.1

parents a3e0b69b 61441468
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -116,3 +116,21 @@ select collation(a), collation(b), collation(binary 'ccc') from t1 limit 1;
collation(a)	collation(b)	collation(binary 'ccc')
latin1_bin	binary	latin1_bin
drop table t1;
create table t1( firstname char(20), lastname char(20));
insert into t1 values ("john","doe"),("John","Doe");
select * from t1 where firstname='john' and firstname like binary 'john';
firstname	lastname
john	doe
select * from t1 where firstname='john' and binary 'john' = firstname;
firstname	lastname
john	doe
select * from t1 where firstname='john' and firstname = binary 'john';
firstname	lastname
john	doe
select * from t1 where firstname='John' and firstname like binary 'john';
firstname	lastname
john	doe
select * from t1 where firstname='john' and firstname like binary 'John';
firstname	lastname
John	Doe
drop table t1;
+13 −0
Original line number Diff line number Diff line
@@ -67,3 +67,16 @@ select * from t1 where lower(b)='bbb';
select charset(a), charset(b), charset(binary 'ccc') from t1 limit 1;
select collation(a), collation(b), collation(binary 'ccc') from t1 limit 1;
drop table t1;

#
# Bug5134: WHERE x = 'bar' AND x LIKE BINARY 'bar' returns wrong results
#

create table t1( firstname char(20), lastname char(20));
insert into t1 values ("john","doe"),("John","Doe");
select * from t1 where firstname='john' and firstname like binary 'john';
select * from t1 where firstname='john' and binary 'john' = firstname;
select * from t1 where firstname='john' and firstname = binary 'john';
select * from t1 where firstname='John' and firstname like binary 'john';
select * from t1 where firstname='john' and firstname like binary 'John';
drop table t1;
+8 −2
Original line number Diff line number Diff line
@@ -4186,7 +4186,10 @@ change_cond_ref_to_const(I_List<COND_CMP> *save_list,Item *and_father,
  Item *right_item= func->arguments()[1];
  Item_func::Functype functype=  func->functype();

  if (right_item->eq(field,0) && left_item != value)
  if (right_item->eq(field,0) && left_item != value &&
      (left_item->result_type() != STRING_RESULT ||
       value->result_type() != STRING_RESULT ||
       left_item->collation.collation == value->collation.collation))
  {
    Item *tmp=value->new_item();
    if (tmp)
@@ -4204,7 +4207,10 @@ change_cond_ref_to_const(I_List<COND_CMP> *save_list,Item *and_father,
      func->set_cmp_func();
    }
  }
  else if (left_item->eq(field,0) && right_item != value)
  else if (left_item->eq(field,0) && right_item != value &&
           (right_item->result_type() != STRING_RESULT ||
            value->result_type() != STRING_RESULT ||
            right_item->collation.collation == value->collation.collation))
  {
    Item *tmp=value->new_item();
    if (tmp)