Commit d07945c2 authored by reggie@mdk10.(none)'s avatar reggie@mdk10.(none)

Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-4.1

into mdk10.(none):/home/reggie/bk/mysql-4.1
parents 9506fb97 831a6124
...@@ -8,6 +8,7 @@ Miguel@light.local ...@@ -8,6 +8,7 @@ Miguel@light.local
Sinisa@sinisa.nasamreza.org Sinisa@sinisa.nasamreza.org
WAX@sergbook.mysql.com WAX@sergbook.mysql.com
acurtis@pcgem.rdg.cyberkinetica.com acurtis@pcgem.rdg.cyberkinetica.com
acurtis@xiphis.org
administrador@light.hegel.local administrador@light.hegel.local
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
akishkin@work.mysql.com akishkin@work.mysql.com
......
...@@ -535,6 +535,19 @@ s2 CHAR(5) COLLATE latin1_swedish_ci); ...@@ -535,6 +535,19 @@ s2 CHAR(5) COLLATE latin1_swedish_ci);
SELECT * FROM t1 WHERE s1 = s2; SELECT * FROM t1 WHERE s1 = s2;
ERROR HY000: Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '=' ERROR HY000: Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1
(s1 CHAR(5) COLLATE latin1_german1_ci,
s2 CHAR(5) COLLATE latin1_swedish_ci,
s3 CHAR(5) COLLATE latin1_bin);
INSERT INTO t1 VALUES ('a','A','A');
SELECT * FROM t1 WHERE s1 = s2;
ERROR HY000: Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='
SELECT * FROM t1 WHERE s1 = s3;
s1 s2 s3
SELECT * FROM t1 WHERE s2 = s3;
s1 s2 s3
a A A
DROP TABLE t1;
SET NAMES latin1; SET NAMES latin1;
CREATE TABLE t1 CREATE TABLE t1
(s1 char(10) COLLATE latin1_german1_ci, (s1 char(10) COLLATE latin1_german1_ci,
......
...@@ -299,6 +299,8 @@ select UNIX_TIMESTAMP() from t1; ...@@ -299,6 +299,8 @@ select UNIX_TIMESTAMP() from t1;
UNIX_TIMESTAMP() UNIX_TIMESTAMP()
select USER() from t1; select USER() from t1;
USER() USER()
select CURRENT_USER() from t1;
CURRENT_USER()
select benchmark(1,1) from t1; select benchmark(1,1) from t1;
benchmark(1,1) benchmark(1,1)
explain extended select benchmark(1,1) from t1; explain extended select benchmark(1,1) from t1;
......
...@@ -1103,7 +1103,7 @@ count(*) ...@@ -1103,7 +1103,7 @@ count(*)
drop table t1; drop table t1;
create table t2 ( create table t2 (
a char character set latin1 collate latin1_swedish_ci, a char character set latin1 collate latin1_swedish_ci,
b char character set latin1 collate latin1_bin); b char character set latin1 collate latin1_german1_ci);
create table t1 as create table t1 as
(select a from t2) union (select a from t2) union
(select b from t2); (select b from t2);
......
...@@ -158,6 +158,18 @@ SELECT * FROM t1 WHERE s1 = s2; ...@@ -158,6 +158,18 @@ SELECT * FROM t1 WHERE s1 = s2;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1
(s1 CHAR(5) COLLATE latin1_german1_ci,
s2 CHAR(5) COLLATE latin1_swedish_ci,
s3 CHAR(5) COLLATE latin1_bin);
INSERT INTO t1 VALUES ('a','A','A');
--error 1267
SELECT * FROM t1 WHERE s1 = s2;
SELECT * FROM t1 WHERE s1 = s3;
SELECT * FROM t1 WHERE s2 = s3;
DROP TABLE t1;
# #
# Test that optimizer doesn't use indexes with wrong collation # Test that optimizer doesn't use indexes with wrong collation
# #
......
...@@ -184,6 +184,7 @@ select LAST_INSERT_ID() from t1; ...@@ -184,6 +184,7 @@ select LAST_INSERT_ID() from t1;
select RAND() from t1; select RAND() from t1;
select UNIX_TIMESTAMP() from t1; select UNIX_TIMESTAMP() from t1;
select USER() from t1; select USER() from t1;
select CURRENT_USER() from t1;
select benchmark(1,1) from t1; select benchmark(1,1) from t1;
explain extended select benchmark(1,1) from t1; explain extended select benchmark(1,1) from t1;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
......
...@@ -641,7 +641,7 @@ drop table t1; ...@@ -641,7 +641,7 @@ drop table t1;
create table t2 ( create table t2 (
a char character set latin1 collate latin1_swedish_ci, a char character set latin1 collate latin1_swedish_ci,
b char character set latin1 collate latin1_bin); b char character set latin1 collate latin1_german1_ci);
--error 1271 --error 1271
create table t1 as create table t1 as
(select a from t2) union (select a from t2) union
......
...@@ -474,8 +474,17 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags) ...@@ -474,8 +474,17 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
set(0, DERIVATION_NONE); set(0, DERIVATION_NONE);
return 1; return 1;
} }
if (collation->state & MY_CS_BINSORT)
{
return 0;
}
else if (dt.collation->state & MY_CS_BINSORT)
{
set(dt);
return 0;
}
CHARSET_INFO *bin= get_charset_by_csname(collation->csname, CHARSET_INFO *bin= get_charset_by_csname(collation->csname,
MY_CS_BINSORT,MYF(0)); MY_CS_BINSORT,MYF(0));
set(bin, DERIVATION_NONE); set(bin, DERIVATION_NONE);
} }
} }
......
...@@ -306,6 +306,7 @@ Item *create_func_current_user() ...@@ -306,6 +306,7 @@ Item *create_func_current_user()
char buff[HOSTNAME_LENGTH+USERNAME_LENGTH+2]; char buff[HOSTNAME_LENGTH+USERNAME_LENGTH+2];
uint length; uint length;
thd->lex->safe_to_cache_query= 0;
length= (uint) (strxmov(buff, thd->priv_user, "@", thd->priv_host, NullS) - length= (uint) (strxmov(buff, thd->priv_user, "@", thd->priv_host, NullS) -
buff); buff);
return new Item_string(NullS, thd->memdup(buff, length), length, return new Item_string(NullS, thd->memdup(buff, length), length,
......
...@@ -526,8 +526,11 @@ int mysql_drop_function(THD *thd,const LEX_STRING *udf_name) ...@@ -526,8 +526,11 @@ int mysql_drop_function(THD *thd,const LEX_STRING *udf_name)
tables.real_name= tables.alias= (char*) "func"; tables.real_name= tables.alias= (char*) "func";
if (!(table = open_ltable(thd,&tables,TL_WRITE))) if (!(table = open_ltable(thd,&tables,TL_WRITE)))
goto err; goto err;
if (!table->file->index_read_idx(table->record[0],0,(byte*) udf_name->str, table->field[0]->store(udf_name->str, udf_name->length, system_charset_info);
(uint) udf_name->length, table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS);
if (!table->file->index_read_idx(table->record[0], 0,
(byte*) table->field[0]->ptr,
table->key_info[0].key_length,
HA_READ_KEY_EXACT)) HA_READ_KEY_EXACT))
{ {
int error; int error;
......
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