Merge mysql.com:/usr/home/bar/mysql-4.1.b10892

into  mysql.com:/usr/home/bar/mysql-5.0


mysql-test/t/grant.test:
  Auto merged
sql/item.cc:
  Auto merged
mysql-test/r/grant.result:
  using local copy
This commit is contained in:
unknown 2005-08-08 19:04:10 +05:00
commit 3f70f80463
2 changed files with 15 additions and 4 deletions

View file

@ -480,4 +480,11 @@ flush privileges;
delete from tables_priv where host = '' and user = 'mysqltest_1'; delete from tables_priv where host = '' and user = 'mysqltest_1';
flush privileges; flush privileges;
#
# Bug #10892 user variables not auto cast for comparisons
# Check that we don't get illegal mix of collations
#
set @user123="non-existent";
select * from mysql.db where user=@user123;
# End of 4.1 tests # End of 4.1 tests

View file

@ -1016,14 +1016,18 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
; // Do nothing ; // Do nothing
} }
else if ((flags & MY_COLL_ALLOW_SUPERSET_CONV) && else if ((flags & MY_COLL_ALLOW_SUPERSET_CONV) &&
derivation < dt.derivation && collation->state & MY_CS_UNICODE &&
collation->state & MY_CS_UNICODE) (derivation < dt.derivation ||
(derivation == dt.derivation &&
!(dt.collation->state & MY_CS_UNICODE))))
{ {
// Do nothing // Do nothing
} }
else if ((flags & MY_COLL_ALLOW_SUPERSET_CONV) && else if ((flags & MY_COLL_ALLOW_SUPERSET_CONV) &&
dt.derivation < derivation && dt.collation->state & MY_CS_UNICODE &&
dt.collation->state & MY_CS_UNICODE) (dt.derivation < derivation ||
(dt.derivation == derivation &&
!(collation->state & MY_CS_UNICODE))))
{ {
set(dt); set(dt);
} }