Commit 15ff383e authored by serg@serg.mysql.com's avatar serg@serg.mysql.com

Merge bk-internal:/home/bk/mysql-4.1/

into serg.mysql.com:/usr/home/serg/Abk/mysql-4.1
parents 88df7b69 9749ece2
...@@ -45,29 +45,30 @@ name ...@@ -45,29 +45,30 @@ name
drop table t1,t2; drop table t1,t2;
create table t1 (a char(10) not null, b char(10) binary not null,key (a), key(b)); create table t1 (a char(10) not null, b char(10) binary not null,key (a), key(b));
insert into t1 values ("hello ","hello "),("hello2 ","hello2 "); insert into t1 values ("hello ","hello "),("hello2 ","hello2 ");
select * from t1 where a="hello"; select concat("-",a,"-",b,"-") from t1 where a="hello";
a b concat("-",a,"-",b,"-")
hello hello -hello-hello-
select * from t1 where a="hello "; select concat("-",a,"-",b,"-") from t1 where a="hello ";
a b concat("-",a,"-",b,"-")
hello hello -hello-hello-
select * from t1 ignore index (a) where a="hello "; select concat("-",a,"-",b,"-") from t1 ignore index (a) where a="hello ";
a b concat("-",a,"-",b,"-")
hello hello -hello-hello-
select * from t1 where b="hello"; select concat("-",a,"-",b,"-") from t1 where b="hello";
a b concat("-",a,"-",b,"-")
hello hello -hello-hello-
select * from t1 where b="hello "; select concat("-",a,"-",b,"-") from t1 where b="hello ";
a b concat("-",a,"-",b,"-")
hello hello -hello-hello-
select * from t1 ignore index (b) where b="hello "; select concat("-",a,"-",b,"-") from t1 ignore index (b) where b="hello ";
a b concat("-",a,"-",b,"-")
-hello-hello-
alter table t1 modify b tinytext not null, drop key b, add key (b(100)); alter table t1 modify b tinytext not null, drop key b, add key (b(100));
select * from t1 where b="hello "; select concat("-",a,"-",b,"-") from t1 where b="hello ";
a b concat("-",a,"-",b,"-")
select * from t1 ignore index (b) where b="hello "; select concat("-",a,"-",b,"-") from t1 ignore index (b) where b="hello ";
a b concat("-",a,"-",b,"-")
hello hello -hello-hello-
drop table t1; drop table t1;
create table t1 (b char(8)); create table t1 (b char(8));
insert into t1 values(NULL); insert into t1 values(NULL);
......
...@@ -30,16 +30,16 @@ drop table t1,t2; ...@@ -30,16 +30,16 @@ drop table t1,t2;
create table t1 (a char(10) not null, b char(10) binary not null,key (a), key(b)); create table t1 (a char(10) not null, b char(10) binary not null,key (a), key(b));
insert into t1 values ("hello ","hello "),("hello2 ","hello2 "); insert into t1 values ("hello ","hello "),("hello2 ","hello2 ");
select * from t1 where a="hello"; select concat("-",a,"-",b,"-") from t1 where a="hello";
select * from t1 where a="hello "; select concat("-",a,"-",b,"-") from t1 where a="hello ";
select * from t1 ignore index (a) where a="hello "; select concat("-",a,"-",b,"-") from t1 ignore index (a) where a="hello ";
select * from t1 where b="hello"; select concat("-",a,"-",b,"-") from t1 where b="hello";
select * from t1 where b="hello "; select concat("-",a,"-",b,"-") from t1 where b="hello ";
select * from t1 ignore index (b) where b="hello "; select concat("-",a,"-",b,"-") from t1 ignore index (b) where b="hello ";
# blob test # blob test
alter table t1 modify b tinytext not null, drop key b, add key (b(100)); alter table t1 modify b tinytext not null, drop key b, add key (b(100));
select * from t1 where b="hello "; select concat("-",a,"-",b,"-") from t1 where b="hello ";
select * from t1 ignore index (b) where b="hello "; select concat("-",a,"-",b,"-") from t1 ignore index (b) where b="hello ";
drop table t1; drop table t1;
# #
......
...@@ -67,7 +67,7 @@ int find_ref_key(TABLE *table,Field *field, uint *key_length) ...@@ -67,7 +67,7 @@ int find_ref_key(TABLE *table,Field *field, uint *key_length)
/* Copy a key from record to some buffer */ /* Copy a key from record to some buffer */
/* if length == 0 then copy hole key */ /* if length == 0 then copy whole key */
void key_copy(byte *key,TABLE *table,uint idx,uint key_length) void key_copy(byte *key,TABLE *table,uint idx,uint key_length)
{ {
......
...@@ -2753,19 +2753,15 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse, ...@@ -2753,19 +2753,15 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
if (!keyuse->used_tables && if (!keyuse->used_tables &&
!(join->select_options & SELECT_DESCRIBE)) !(join->select_options & SELECT_DESCRIBE))
{ // Compare against constant { // Compare against constant
store_key_item *tmp=new store_key_item(thd, store_key_item tmp(thd, keyinfo->key_part[i].field,
keyinfo->key_part[i].field, (char*)key_buff + maybe_null,
(char*)key_buff + maybe_null ? (char*) key_buff : 0,
maybe_null, keyinfo->key_part[i].length, keyuse->val);
maybe_null ?
(char*) key_buff : 0,
keyinfo->key_part[i].length,
keyuse->val);
if (thd->is_fatal_error) if (thd->is_fatal_error)
{ {
return TRUE; return TRUE;
} }
tmp->copy(); tmp.copy();
} }
else else
*ref_key++= get_store_key(thd, *ref_key++= get_store_key(thd,
......
...@@ -174,7 +174,7 @@ class JOIN :public Sql_alloc ...@@ -174,7 +174,7 @@ class JOIN :public Sql_alloc
Item_sum **sum_funcs; Item_sum **sum_funcs;
Procedure *procedure; Procedure *procedure;
Item *having; Item *having;
Item *tmp_having; // To store Having when processed tenporary table Item *tmp_having; // To store Having when processed temporary table
uint select_options; uint select_options;
select_result *result; select_result *result;
TMP_TABLE_PARAM tmp_table_param; TMP_TABLE_PARAM tmp_table_param;
...@@ -306,7 +306,6 @@ class store_key :public Sql_alloc ...@@ -306,7 +306,6 @@ class store_key :public Sql_alloc
{ {
protected: protected:
Field *to_field; // Store data here Field *to_field; // Store data here
Field *key_field; // Copy of key field
char *null_ptr; char *null_ptr;
char err; char err;
public: public:
......
...@@ -75,6 +75,21 @@ static int my_strnncoll_binary(CHARSET_INFO * cs __attribute__((unused)), ...@@ -75,6 +75,21 @@ static int my_strnncoll_binary(CHARSET_INFO * cs __attribute__((unused)),
return cmp ? cmp : (int) (slen - tlen); return cmp ? cmp : (int) (slen - tlen);
} }
static int my_strnncollsp_binary(CHARSET_INFO * cs,
const uchar *s, uint slen,
const uchar *t, uint tlen)
{
int len, cmp;
for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
len = ( slen > tlen ) ? tlen : slen;
cmp= memcmp(s,t,len);
return cmp ? cmp : (int) (slen - tlen);
}
static void my_caseup_str_bin(CHARSET_INFO *cs __attribute__((unused)), static void my_caseup_str_bin(CHARSET_INFO *cs __attribute__((unused)),
char *str __attribute__((unused))) char *str __attribute__((unused)))
{ {
...@@ -309,7 +324,7 @@ CHARSET_INFO my_charset_bin = ...@@ -309,7 +324,7 @@ CHARSET_INFO my_charset_bin =
"","", "","",
0, /* strxfrm_multiply */ 0, /* strxfrm_multiply */
my_strnncoll_binary, /* strnncoll */ my_strnncoll_binary, /* strnncoll */
my_strnncoll_binary, my_strnncollsp_binary,
my_strnxfrm_bin, /* strxnfrm */ my_strnxfrm_bin, /* strxnfrm */
my_like_range_simple, /* like_range */ my_like_range_simple, /* like_range */
my_wildcmp_bin, /* wildcmp */ my_wildcmp_bin, /* wildcmp */
......
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