Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-4.1
into mdk10.(none):/home/reggie/bk/mysql-4.1
This commit is contained in:
commit
d07945c23b
@ -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);
|
|||||||
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;
|
|||||||
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(*)
|
|||||||
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;
|
|||||||
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;
|
|||||||
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;
|
|||||||
|
|
||||||
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
|
||||||
|
11
sql/item.cc
11
sql/item.cc
@ -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()
|
|||||||
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)
|
|||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user