Commit 1b40adcb authored by bar@mysql.com's avatar bar@mysql.com

grant.result, grant.test:

  fixing tests accordingly
item.cc:
  Bug #10892 user variables not auto cast for comparisons
  When mixing strings with different character sets,
  and coercibility is the same, we allow conversion
  if one character set is superset for other character set.
parent fc5829d6
...@@ -440,3 +440,6 @@ insert into tables_priv values ('','test_db','mysqltest_1','test_table','test_gr ...@@ -440,3 +440,6 @@ insert into tables_priv values ('','test_db','mysqltest_1','test_table','test_gr
flush privileges; 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;
set @user123="non-existent";
select * from mysql.db where user=@user123;
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv
...@@ -402,4 +402,11 @@ flush privileges; ...@@ -402,4 +402,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
...@@ -455,14 +455,16 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags) ...@@ -455,14 +455,16 @@ 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 && derivation <= dt.derivation &&
collation->state & MY_CS_UNICODE) collation->state & MY_CS_UNICODE &&
!(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.derivation <= derivation &&
dt.collation->state & MY_CS_UNICODE) dt.collation->state & MY_CS_UNICODE &&
!(collation->state & MY_CS_UNICODE))
{ {
set(dt); set(dt);
} }
......
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