Commit 3145787d authored by unknown's avatar unknown

Merge rurik.mysql.com:/home/igor/dev/mysql-4.1-0

into rurik.mysql.com:/home/igor/dev/mysql-5.0-0


BitKeeper/etc/ignore:
  auto-union
BitKeeper/etc/logging_ok:
  auto-union
myisam/mi_key.c:
  Auto merged
mysql-test/r/ctype_utf8.result:
  Auto merged
mysql-test/r/ps_1general.result:
  Auto merged
mysql-test/r/ps_2myisam.result:
  Auto merged
mysql-test/r/ps_3innodb.result:
  Auto merged
mysql-test/r/ps_4heap.result:
  Auto merged
mysql-test/r/ps_5merge.result:
  Auto merged
sql/item_buff.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
parents e5a97df6 d499ead6
...@@ -102,6 +102,7 @@ Makefile.in ...@@ -102,6 +102,7 @@ Makefile.in
Makefile.in' Makefile.in'
PENDING/* PENDING/*
TAGS TAGS
VC++Files/client/mysql_amd64.dsp
ac_available_languages_fragment ac_available_languages_fragment
acinclude.m4 acinclude.m4
aclocal.m4 aclocal.m4
...@@ -274,6 +275,8 @@ client/mysqlmanager-pwgen ...@@ -274,6 +275,8 @@ client/mysqlmanager-pwgen
client/mysqlmanagerc client/mysqlmanagerc
client/mysqlshow client/mysqlshow
client/mysqltest client/mysqltest
client/mysqltestmanager-pwgen
client/mysqltestmanagerc
client/mysys_priv.h client/mysys_priv.h
client/select_test client/select_test
client/ssl_test client/ssl_test
...@@ -284,10 +287,12 @@ cmd-line-utils/libedit/common.h ...@@ -284,10 +287,12 @@ cmd-line-utils/libedit/common.h
cmd-line-utils/libedit/makelist cmd-line-utils/libedit/makelist
comon.h comon.h
config.cache config.cache
config.guess
config.h config.h
config.h.in config.h.in
config.log config.log
config.status config.status
config.sub
configure configure
configure.lineno configure.lineno
core core
...@@ -355,6 +360,7 @@ innobase/ib_config.h.in ...@@ -355,6 +360,7 @@ innobase/ib_config.h.in
innobase/stamp-h1 innobase/stamp-h1
insert_test insert_test
install install
install-sh
isam/isamchk isam/isamchk
isam/isamlog isam/isamlog
isam/pack_isam isam/pack_isam
...@@ -519,7 +525,9 @@ linked_libmysqldex_sources ...@@ -519,7 +525,9 @@ linked_libmysqldex_sources
linked_server_sources linked_server_sources
linked_tools_sources linked_tools_sources
locked locked
ltmain.sh
man/*.1 man/*.1
missing
mit-pthreads/config.flags mit-pthreads/config.flags
mit-pthreads/include/bits mit-pthreads/include/bits
mit-pthreads/include/pthread/machdep.h mit-pthreads/include/pthread/machdep.h
...@@ -936,6 +944,7 @@ scripts/mysqld_multi ...@@ -936,6 +944,7 @@ scripts/mysqld_multi
scripts/mysqld_safe scripts/mysqld_safe
scripts/mysqldumpslow scripts/mysqldumpslow
scripts/mysqlhotcopy scripts/mysqlhotcopy
scripts/mysqlhotcopy.sh.rej
scripts/safe_mysqld scripts/safe_mysqld
select_test select_test
server-tools/instance-manager/client.c server-tools/instance-manager/client.c
...@@ -1100,18 +1109,10 @@ tmp/* ...@@ -1100,18 +1109,10 @@ tmp/*
tools/my_vsnprintf.c tools/my_vsnprintf.c
tools/mysqlmanager tools/mysqlmanager
tools/mysqlmngd tools/mysqlmngd
tools/mysqltestmanager
tools/mysys_priv.h tools/mysys_priv.h
vi.h vi.h
vio/test-ssl vio/test-ssl
vio/test-sslclient vio/test-sslclient
vio/test-sslserver vio/test-sslserver
vio/viotest-ssl vio/viotest-ssl
VC++Files/client/mysql_amd64.dsp
client/mysqltestmanager-pwgen
client/mysqltestmanagerc
tools/mysqltestmanager
config.guess
config.sub
install-sh
ltmain.sh
missing
...@@ -52,6 +52,7 @@ dlenev@build.mysql.com ...@@ -52,6 +52,7 @@ dlenev@build.mysql.com
dlenev@jabberwock.localdomain dlenev@jabberwock.localdomain
dlenev@mysql.com dlenev@mysql.com
ejonore@mc03.ndb.mysql.com ejonore@mc03.ndb.mysql.com
elliot@mysql.com
evgen@moonbone.(none) evgen@moonbone.(none)
evgen@moonbone.local evgen@moonbone.local
gbichot@bk-internal.mysql.com gbichot@bk-internal.mysql.com
......
...@@ -107,7 +107,8 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key, ...@@ -107,7 +107,8 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
} }
if (keyseg->flag & HA_SPACE_PACK) if (keyseg->flag & HA_SPACE_PACK)
{ {
end=pos+length; FIX_LENGTH(cs, pos, length, char_length);
end= pos + char_length;
if (type != HA_KEYTYPE_NUM) if (type != HA_KEYTYPE_NUM)
{ {
while (end > pos && end[-1] == ' ') while (end > pos && end[-1] == ' ')
...@@ -118,8 +119,7 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key, ...@@ -118,8 +119,7 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
while (pos < end && pos[0] == ' ') while (pos < end && pos[0] == ' ')
pos++; pos++;
} }
length=(uint) (end-pos); char_length= (uint) (end - pos);
FIX_LENGTH(cs, pos, length, char_length);
store_key_length_inc(key,char_length); store_key_length_inc(key,char_length);
memcpy((byte*) key,(byte*) pos,(size_t) char_length); memcpy((byte*) key,(byte*) pos,(size_t) char_length);
key+=char_length; key+=char_length;
......
...@@ -891,3 +891,14 @@ string ...@@ -891,3 +891,14 @@ string
create table t1 (a varchar(255)) default character set utf8; create table t1 (a varchar(255)) default character set utf8;
insert into t1 values (1.0); insert into t1 values (1.0);
drop table t1; drop table t1;
create table t1 (
id int not null,
city varchar(20) not null,
key (city(7),id)
) character set=utf8;
insert into t1 values (1,'Durban North');
insert into t1 values (2,'Durban');
select * from t1 where city = 'Durban';
id city
2 Durban
drop table t1;
...@@ -471,13 +471,13 @@ execute stmt1; ...@@ -471,13 +471,13 @@ execute stmt1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 3 N 1 31 8 def type 253 10 3 Y 0 31 8
def possible_keys 253 4096 0 Y 0 31 8 def possible_keys 253 4096 0 Y 0 31 8
def key 253 64 0 Y 0 31 8 def key 253 64 0 Y 0 31 8
def key_len 253 4096 0 Y 128 31 63 def key_len 253 4096 0 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 14 N 1 31 8 def Extra 253 255 14 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
...@@ -487,13 +487,13 @@ execute stmt1 using @arg00; ...@@ -487,13 +487,13 @@ execute stmt1 using @arg00;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 5 N 1 31 8 def type 253 10 5 Y 0 31 8
def possible_keys 253 4096 7 Y 0 31 8 def possible_keys 253 4096 7 Y 0 31 8
def key 253 64 7 Y 0 31 8 def key 253 64 7 Y 0 31 8
def key_len 253 4096 1 Y 128 31 63 def key_len 253 4096 1 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 27 N 1 31 8 def Extra 253 255 27 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
......
...@@ -1152,13 +1152,13 @@ execute stmt1; ...@@ -1152,13 +1152,13 @@ execute stmt1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 3 N 1 31 8 def type 253 10 3 Y 0 31 8
def possible_keys 253 4096 0 Y 0 31 8 def possible_keys 253 4096 0 Y 0 31 8
def key 253 64 0 Y 0 31 8 def key 253 64 0 Y 0 31 8
def key_len 253 4096 0 Y 128 31 63 def key_len 253 4096 0 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 0 N 1 31 8 def Extra 253 255 0 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t9 ALL NULL NULL NULL NULL 2 1 SIMPLE t9 ALL NULL NULL NULL NULL 2
......
...@@ -1152,13 +1152,13 @@ execute stmt1; ...@@ -1152,13 +1152,13 @@ execute stmt1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 3 N 1 31 8 def type 253 10 3 Y 0 31 8
def possible_keys 253 4096 0 Y 0 31 8 def possible_keys 253 4096 0 Y 0 31 8
def key 253 64 0 Y 0 31 8 def key 253 64 0 Y 0 31 8
def key_len 253 4096 0 Y 128 31 63 def key_len 253 4096 0 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 0 N 1 31 8 def Extra 253 255 0 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t9 ALL NULL NULL NULL NULL 2 1 SIMPLE t9 ALL NULL NULL NULL NULL 2
......
...@@ -1153,13 +1153,13 @@ execute stmt1; ...@@ -1153,13 +1153,13 @@ execute stmt1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 3 N 1 31 8 def type 253 10 3 Y 0 31 8
def possible_keys 253 4096 0 Y 0 31 8 def possible_keys 253 4096 0 Y 0 31 8
def key 253 64 0 Y 0 31 8 def key 253 64 0 Y 0 31 8
def key_len 253 4096 0 Y 128 31 63 def key_len 253 4096 0 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 0 N 1 31 8 def Extra 253 255 0 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t9 ALL NULL NULL NULL NULL 2 1 SIMPLE t9 ALL NULL NULL NULL NULL 2
......
...@@ -1195,13 +1195,13 @@ execute stmt1; ...@@ -1195,13 +1195,13 @@ execute stmt1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 3 N 1 31 8 def type 253 10 3 Y 0 31 8
def possible_keys 253 4096 0 Y 0 31 8 def possible_keys 253 4096 0 Y 0 31 8
def key 253 64 0 Y 0 31 8 def key 253 64 0 Y 0 31 8
def key_len 253 4096 0 Y 128 31 63 def key_len 253 4096 0 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 0 N 1 31 8 def Extra 253 255 0 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t9 ALL NULL NULL NULL NULL 2 1 SIMPLE t9 ALL NULL NULL NULL NULL 2
...@@ -4207,13 +4207,13 @@ execute stmt1; ...@@ -4207,13 +4207,13 @@ execute stmt1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def id 8 3 1 N 32929 0 63 def id 8 3 1 N 32929 0 63
def select_type 253 19 6 N 1 31 8 def select_type 253 19 6 N 1 31 8
def table 253 64 2 N 1 31 8 def table 253 64 2 Y 0 31 8
def type 253 10 3 N 1 31 8 def type 253 10 3 Y 0 31 8
def possible_keys 253 4096 0 Y 0 31 8 def possible_keys 253 4096 0 Y 0 31 8
def key 253 64 0 Y 0 31 8 def key 253 64 0 Y 0 31 8
def key_len 253 4096 0 Y 128 31 63 def key_len 253 4096 0 Y 128 31 63
def ref 253 1024 0 Y 0 31 8 def ref 253 1024 0 Y 0 31 8
def rows 8 10 1 N 32929 0 63 def rows 8 10 1 Y 32928 0 63
def Extra 253 255 0 N 1 31 8 def Extra 253 255 0 N 1 31 8
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t9 ALL NULL NULL NULL NULL 2 1 SIMPLE t9 ALL NULL NULL NULL NULL 2
......
...@@ -731,3 +731,17 @@ select ifnull(NULL, _utf8'string'); ...@@ -731,3 +731,17 @@ select ifnull(NULL, _utf8'string');
create table t1 (a varchar(255)) default character set utf8; create table t1 (a varchar(255)) default character set utf8;
insert into t1 values (1.0); insert into t1 values (1.0);
drop table t1; drop table t1;
#
# Bug#10253 compound index length and utf8 char set
# produces invalid query results
#
create table t1 (
id int not null,
city varchar(20) not null,
key (city(7),id)
) character set=utf8;
insert into t1 values (1,'Durban North');
insert into t1 values (2,'Durban');
select * from t1 where city = 'Durban';
drop table t1;
...@@ -746,9 +746,15 @@ sub record_log_pos { ...@@ -746,9 +746,15 @@ sub record_log_pos {
my ($file,$position) = get_row( $dbh, "show master status" ); my ($file,$position) = get_row( $dbh, "show master status" );
die "master status is undefined" if !defined $file || !defined $position; die "master status is undefined" if !defined $file || !defined $position;
my ($master_host, undef, undef, undef, $log_file, $log_pos ) my $row_hash = get_row_hash( $dbh, "show slave status" );
= get_row( $dbh, "show slave status" ); my ($master_host, $log_file, $log_pos );
if ( $dbh->{mysql_serverinfo} =~ /^3\.23/ ) {
($master_host, $log_file, $log_pos )
= @{$row_hash}{ qw / Master_Host Log_File Pos / };
} else {
($master_host, $log_file, $log_pos )
= @{$row_hash}{ qw / Master_Host Master_Log_File Read_Master_Log_Pos / };
}
my $hostname = hostname(); my $hostname = hostname();
$dbh->do( qq{ replace into $table_name $dbh->do( qq{ replace into $table_name
...@@ -773,6 +779,14 @@ sub get_row { ...@@ -773,6 +779,14 @@ sub get_row {
return $sth->fetchrow_array(); return $sth->fetchrow_array();
} }
sub get_row_hash {
my ( $dbh, $sql ) = @_;
my $sth = $dbh->prepare($sql);
$sth->execute;
return $sth->fetchrow_hashref();
}
sub scan_raid_dir { sub scan_raid_dir {
my ( $r_db_files, $data_dir, @raid_dir ) = @_; my ( $r_db_files, $data_dir, @raid_dir ) = @_;
......
...@@ -52,7 +52,7 @@ Item_buff::~Item_buff() {} ...@@ -52,7 +52,7 @@ Item_buff::~Item_buff() {}
*/ */
Item_str_buff::Item_str_buff(THD *thd, Item *arg) Item_str_buff::Item_str_buff(THD *thd, Item *arg)
:item(arg), value(min(arg->max_length, thd->variables. max_sort_length)) :item(arg), value(min(arg->max_length, thd->variables.max_sort_length))
{} {}
bool Item_str_buff::cmp(void) bool Item_str_buff::cmp(void)
......
...@@ -714,8 +714,10 @@ int THD::send_explain_fields(select_result *result) ...@@ -714,8 +714,10 @@ int THD::send_explain_fields(select_result *result)
CHARSET_INFO *cs= system_charset_info; CHARSET_INFO *cs= system_charset_info;
field_list.push_back(new Item_return_int("id",3, MYSQL_TYPE_LONGLONG)); field_list.push_back(new Item_return_int("id",3, MYSQL_TYPE_LONGLONG));
field_list.push_back(new Item_empty_string("select_type", 19, cs)); field_list.push_back(new Item_empty_string("select_type", 19, cs));
field_list.push_back(new Item_empty_string("table", NAME_LEN, cs)); field_list.push_back(item= new Item_empty_string("table", NAME_LEN, cs));
field_list.push_back(new Item_empty_string("type", 10, cs)); item->maybe_null= 1;
field_list.push_back(item= new Item_empty_string("type", 10, cs));
item->maybe_null= 1;
field_list.push_back(item=new Item_empty_string("possible_keys", field_list.push_back(item=new Item_empty_string("possible_keys",
NAME_LEN*MAX_KEY, cs)); NAME_LEN*MAX_KEY, cs));
item->maybe_null=1; item->maybe_null=1;
...@@ -727,7 +729,9 @@ int THD::send_explain_fields(select_result *result) ...@@ -727,7 +729,9 @@ int THD::send_explain_fields(select_result *result)
field_list.push_back(item=new Item_empty_string("ref", field_list.push_back(item=new Item_empty_string("ref",
NAME_LEN*MAX_REF_PARTS, cs)); NAME_LEN*MAX_REF_PARTS, cs));
item->maybe_null=1; item->maybe_null=1;
field_list.push_back(new Item_return_int("rows", 10, MYSQL_TYPE_LONGLONG)); field_list.push_back(item= new Item_return_int("rows", 10,
MYSQL_TYPE_LONGLONG));
item->maybe_null= 1;
field_list.push_back(new Item_empty_string("Extra", 255, cs)); field_list.push_back(new Item_empty_string("Extra", 255, cs));
return (result->send_fields(field_list, return (result->send_fields(field_list,
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)); Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF));
......
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