Commit eec860fd authored by hf@deer.(none)'s avatar hf@deer.(none)

Merge bk@192.168.21.1:/usr/home/bk/mysql-4.1

into deer.(none):/home/hf/work/mysql-4.1.emb
parents c43d7d92 22a65bcf
...@@ -159,28 +159,28 @@ enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY, ...@@ -159,28 +159,28 @@ enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
/* Shutdown/kill enums and constants */ /* Shutdown/kill enums and constants */
/* Bits for THD::killable. */ /* Bits for THD::killable. */
#define KILLABLE_CONNECT (unsigned char)(1 << 0) #define MYSQL_SHUTDOWN_KILLABLE_CONNECT (unsigned char)(1 << 0)
#define KILLABLE_TRANS (unsigned char)(1 << 1) #define MYSQL_SHUTDOWN_KILLABLE_TRANS (unsigned char)(1 << 1)
#define KILLABLE_LOCK_TABLE (unsigned char)(1 << 2) #define MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE (unsigned char)(1 << 2)
#define KILLABLE_UPDATE (unsigned char)(1 << 3) #define MYSQL_SHUTDOWN_KILLABLE_UPDATE (unsigned char)(1 << 3)
enum enum_shutdown_level { enum mysql_enum_shutdown_level {
/* /*
We want levels to be in growing order of hardness (because we use number We want levels to be in growing order of hardness (because we use number
comparisons). Note that DEFAULT does not respect the growing property, but comparisons). Note that DEFAULT does not respect the growing property, but
it's ok. it's ok.
*/ */
SHUTDOWN_DEFAULT= 0, DEFAULT= 0,
/* wait for existing connections to finish */ /* wait for existing connections to finish */
SHUTDOWN_WAIT_CONNECTIONS= KILLABLE_CONNECT, WAIT_CONNECTIONS= MYSQL_SHUTDOWN_KILLABLE_CONNECT,
/* wait for existing trans to finish */ /* wait for existing trans to finish */
SHUTDOWN_WAIT_TRANSACTIONS= KILLABLE_TRANS, WAIT_TRANSACTIONS= MYSQL_SHUTDOWN_KILLABLE_TRANS,
/* wait for existing updates to finish (=> no partial MyISAM update) */ /* wait for existing updates to finish (=> no partial MyISAM update) */
SHUTDOWN_WAIT_UPDATES= KILLABLE_UPDATE, WAIT_UPDATES= MYSQL_SHUTDOWN_KILLABLE_UPDATE,
/* flush InnoDB buffers and other storage engines' buffers*/ /* flush InnoDB buffers and other storage engines' buffers*/
SHUTDOWN_WAIT_ALL_BUFFERS= (KILLABLE_UPDATE << 1), WAIT_ALL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1),
/* don't flush InnoDB buffers, flush other storage engines' buffers*/ /* don't flush InnoDB buffers, flush other storage engines' buffers*/
SHUTDOWN_WAIT_CRITICAL_BUFFERS= (KILLABLE_UPDATE << 1) + 1, WAIT_CRITICAL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1) + 1,
/* Now the 2 levels of the KILL command */ /* Now the 2 levels of the KILL command */
#if MYSQL_VERSION_ID >= 50000 #if MYSQL_VERSION_ID >= 50000
KILL_QUERY= 254, KILL_QUERY= 254,
...@@ -188,10 +188,6 @@ enum enum_shutdown_level { ...@@ -188,10 +188,6 @@ enum enum_shutdown_level {
KILL_CONNECTION= 255 KILL_CONNECTION= 255
}; };
/* Same value and type (0, enum_shutdown_level) but not same meaning */
#define NOT_KILLED SHUTDOWN_DEFAULT
extern unsigned long max_allowed_packet; extern unsigned long max_allowed_packet;
extern unsigned long net_buffer_length; extern unsigned long net_buffer_length;
......
...@@ -227,28 +227,28 @@ enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, ...@@ -227,28 +227,28 @@ enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
/* Shutdown/kill enums and constants */ /* Shutdown/kill enums and constants */
/* Bits for THD::killable. */ /* Bits for THD::killable. */
#define KILLABLE_CONNECT (unsigned char)(1 << 0) #define MYSQL_SHUTDOWN_KILLABLE_CONNECT (unsigned char)(1 << 0)
#define KILLABLE_TRANS (unsigned char)(1 << 1) #define MYSQL_SHUTDOWN_KILLABLE_TRANS (unsigned char)(1 << 1)
#define KILLABLE_LOCK_TABLE (unsigned char)(1 << 2) #define MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE (unsigned char)(1 << 2)
#define KILLABLE_UPDATE (unsigned char)(1 << 3) #define MYSQL_SHUTDOWN_KILLABLE_UPDATE (unsigned char)(1 << 3)
enum enum_shutdown_level { enum mysql_enum_shutdown_level {
/* /*
We want levels to be in growing order of hardness (because we use number We want levels to be in growing order of hardness (because we use number
comparisons). Note that DEFAULT does not respect the growing property, but comparisons). Note that DEFAULT does not respect the growing property, but
it's ok. it's ok.
*/ */
SHUTDOWN_DEFAULT= 0, DEFAULT= 0,
/* wait for existing connections to finish */ /* wait for existing connections to finish */
SHUTDOWN_WAIT_CONNECTIONS= KILLABLE_CONNECT, WAIT_CONNECTIONS= MYSQL_SHUTDOWN_KILLABLE_CONNECT,
/* wait for existing trans to finish */ /* wait for existing trans to finish */
SHUTDOWN_WAIT_TRANSACTIONS= KILLABLE_TRANS, WAIT_TRANSACTIONS= MYSQL_SHUTDOWN_KILLABLE_TRANS,
/* wait for existing updates to finish (=> no partial MyISAM update) */ /* wait for existing updates to finish (=> no partial MyISAM update) */
SHUTDOWN_WAIT_UPDATES= KILLABLE_UPDATE, WAIT_UPDATES= MYSQL_SHUTDOWN_KILLABLE_UPDATE,
/* flush InnoDB buffers and other storage engines' buffers*/ /* flush InnoDB buffers and other storage engines' buffers*/
SHUTDOWN_WAIT_ALL_BUFFERS= (KILLABLE_UPDATE << 1), WAIT_ALL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1),
/* don't flush InnoDB buffers, flush other storage engines' buffers*/ /* don't flush InnoDB buffers, flush other storage engines' buffers*/
SHUTDOWN_WAIT_CRITICAL_BUFFERS= (KILLABLE_UPDATE << 1) + 1, WAIT_CRITICAL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1) + 1,
/* Now the 2 levels of the KILL command */ /* Now the 2 levels of the KILL command */
#if MYSQL_VERSION_ID >= 50000 #if MYSQL_VERSION_ID >= 50000
KILL_QUERY= 254, KILL_QUERY= 254,
...@@ -256,10 +256,6 @@ enum enum_shutdown_level { ...@@ -256,10 +256,6 @@ enum enum_shutdown_level {
KILL_CONNECTION= 255 KILL_CONNECTION= 255
}; };
/* Same value and type (0, enum_shutdown_level) but not same meaning */
#define NOT_KILLED SHUTDOWN_DEFAULT
/* options for mysql_set_option */ /* options for mysql_set_option */
enum enum_mysql_set_option enum enum_mysql_set_option
{ {
......
...@@ -470,6 +470,42 @@ ERROR 23000: Duplicate entry 'ꪪꪪ' for key 1 ...@@ -470,6 +470,42 @@ ERROR 23000: Duplicate entry 'ꪪꪪ' for key 1
drop table t1; drop table t1;
create table t1 ( create table t1 (
c char(10) character set utf8 collate utf8_bin, c char(10) character set utf8 collate utf8_bin,
unique key a using hash (c(1))
) engine=heap;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c` char(10) character set utf8 collate utf8_bin default NULL,
UNIQUE KEY `a` (`c`(1))
) ENGINE=HEAP DEFAULT CHARSET=latin1
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
insert into t1 values ('aa');
ERROR 23000: Duplicate entry 'aa' for key 1
insert into t1 values ('aaa');
ERROR 23000: Duplicate entry 'aaa' for key 1
insert into t1 values ('б');
insert into t1 values ('бб');
ERROR 23000: Duplicate entry 'б' for key 1
insert into t1 values ('ббб');
ERROR 23000: Duplicate entry 'б' for key 1
select c as c_all from t1 order by c;
c_all
a
b
c
d
e
f
б
select c as c_a from t1 where c='a';
c_a
a
select c as c_a from t1 where c='б';
c_a
б
drop table t1;
create table t1 (
c char(10) character set utf8 collate utf8_bin,
unique key a using btree (c(1)) unique key a using btree (c(1))
) engine=heap; ) engine=heap;
show create table t1; show create table t1;
......
...@@ -349,27 +349,25 @@ drop table t1; ...@@ -349,27 +349,25 @@ drop table t1;
# Bug 4531: unique key prefix interacts poorly with utf8 # Bug 4531: unique key prefix interacts poorly with utf8
# Check HEAP+HASH, binary collation # Check HEAP+HASH, binary collation
# #
# This doesn't work correctly yet. create table t1 (
# c char(10) character set utf8 collate utf8_bin,
#create table t1 ( unique key a using hash (c(1))
#c char(10) character set utf8 collate utf8_bin, ) engine=heap;
#unique key a using hash (c(1)) show create table t1;
#) engine=heap; insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
#show create table t1; --error 1062
#insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f'); insert into t1 values ('aa');
#--error 1062 --error 1062
#insert into t1 values ('aa'); insert into t1 values ('aaa');
#--error 1062 insert into t1 values ('б');
#insert into t1 values ('aaa'); --error 1062
#insert into t1 values ('б'); insert into t1 values ('бб');
#--error 1062 --error 1062
#insert into t1 values ('бб'); insert into t1 values ('ббб');
#--error 1062 select c as c_all from t1 order by c;
#insert into t1 values ('ббб'); select c as c_a from t1 where c='a';
#select c as c_all from t1 order by c; select c as c_a from t1 where c='б';
#select c as c_a from t1 where c='a'; drop table t1;
#select c as c_a from t1 where c='б';
#drop table t1;
# #
# Bug 4531: unique key prefix interacts poorly with utf8 # Bug 4531: unique key prefix interacts poorly with utf8
......
...@@ -430,7 +430,7 @@ int ha_heap::create(const char *name, TABLE *table_arg, ...@@ -430,7 +430,7 @@ int ha_heap::create(const char *name, TABLE *table_arg,
{ {
if (!f_is_packed(flag) && if (!f_is_packed(flag) &&
f_packtype(flag) == (int) FIELD_TYPE_DECIMAL && f_packtype(flag) == (int) FIELD_TYPE_DECIMAL &&
!(flag & FIELDFLAG_BINARY)) !(field->charset() == &my_charset_bin))
seg->type= (int) HA_KEYTYPE_TEXT; seg->type= (int) HA_KEYTYPE_TEXT;
else else
seg->type= (int) HA_KEYTYPE_BINARY; seg->type= (int) HA_KEYTYPE_BINARY;
......
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