Commit f51659f6 authored by unknown's avatar unknown

Merge witty.ndb.mysql.com:/Users/mattiasj/Public/shared-vms/mysql-5.1-bug33379

into  witty.ndb.mysql.com:/Users/mattiasj/clones/51-topush
parents dd16453d 95470b7e
drop table if exists t1; drop table if exists t1;
# test with not null
create table t1 (a bit not null) partition by key (a);
insert into t1 values (b'1');
select hex(a) from t1 where a = b'1';
hex(a)
1
drop table t1;
create table t1 (a tinyint not null) partition by key (a); create table t1 (a tinyint not null) partition by key (a);
insert into t1 values (2); insert into t1 values (2);
select * from t1 where a = 2; select * from t1 where a = 2;
...@@ -125,6 +132,13 @@ select * from t1 where a = 'y'; ...@@ -125,6 +132,13 @@ select * from t1 where a = 'y';
a a
y y
drop table t1; drop table t1;
# test with null allowed
create table t1 (a bit) partition by key (a);
insert into t1 values (b'1');
select hex(a) from t1 where a = b'1';
hex(a)
1
drop table t1;
create table t1 (a tinyint) partition by key (a); create table t1 (a tinyint) partition by key (a);
insert into t1 values (2); insert into t1 values (2);
select * from t1 where a = 2; select * from t1 where a = 2;
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
drop table if exists t1; drop table if exists t1;
--enable_warnings --enable_warnings
# FIXME: disabled this test because of valgrind error -- echo # test with not null
#create table t1 (a bit not null) partition by key (a); create table t1 (a bit not null) partition by key (a);
#insert into t1 values (b'1'); insert into t1 values (b'1');
#select * from t1 where a = b'1'; select hex(a) from t1 where a = b'1';
#drop table t1; drop table t1;
create table t1 (a tinyint not null) partition by key (a); create table t1 (a tinyint not null) partition by key (a);
insert into t1 values (2); insert into t1 values (2);
select * from t1 where a = 2; select * from t1 where a = 2;
...@@ -100,11 +100,11 @@ create table t1 (a set('y','n') not null) partition by key (a); ...@@ -100,11 +100,11 @@ create table t1 (a set('y','n') not null) partition by key (a);
insert into t1 values ('y'); insert into t1 values ('y');
select * from t1 where a = 'y'; select * from t1 where a = 'y';
drop table t1; drop table t1;
# FIXME: disabled this test because of valgrind error -- echo # test with null allowed
#create table t1 (a bit) partition by key (a); create table t1 (a bit) partition by key (a);
#insert into t1 values (b'1'); insert into t1 values (b'1');
#select * from t1 where a = b'1'; select hex(a) from t1 where a = b'1';
#drop table t1; drop table t1;
create table t1 (a tinyint) partition by key (a); create table t1 (a tinyint) partition by key (a);
insert into t1 values (2); insert into t1 values (2);
select * from t1 where a = 2; select * from t1 where a = 2;
......
...@@ -8793,6 +8793,23 @@ Field_bit::Field_bit(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, ...@@ -8793,6 +8793,23 @@ Field_bit::Field_bit(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
} }
void Field_bit::hash(ulong *nr, ulong *nr2)
{
if (is_null())
{
*nr^= (*nr << 1) | 1;
}
else
{
CHARSET_INFO *cs= &my_charset_bin;
longlong value= Field_bit::val_int();
uchar tmp[8];
mi_int8store(tmp,value);
cs->coll->hash_sort(cs, tmp, 8, nr, nr2);
}
}
size_t size_t
Field_bit::do_last_null_byte() const Field_bit::do_last_null_byte() const
{ {
......
...@@ -1904,6 +1904,7 @@ class Field_bit :public Field { ...@@ -1904,6 +1904,7 @@ class Field_bit :public Field {
Field::move_field_offset(ptr_diff); Field::move_field_offset(ptr_diff);
bit_ptr= ADD_TO_PTR(bit_ptr, ptr_diff, uchar*); bit_ptr= ADD_TO_PTR(bit_ptr, ptr_diff, uchar*);
} }
void hash(ulong *nr, ulong *nr2);
private: private:
virtual size_t do_last_null_byte() const; virtual size_t do_last_null_byte() const;
......
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