Commit e1bb82bb authored by unknown's avatar unknown

Merge witty.ndb.mysql.com:/Users/mattiasj/clones/mysql-5.1-bug34225

into  witty.ndb.mysql.com:/Users/mattiasj/clones/51-topush
parents 2dac9f68 f51659f6
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);
insert into t1 values (2);
select * from t1 where a = 2;
......@@ -125,6 +132,13 @@ select * from t1 where a = 'y';
a
y
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);
insert into t1 values (2);
select * from t1 where a = 2;
......
......@@ -11,11 +11,11 @@
drop table if exists t1;
--enable_warnings
# FIXME: disabled this test because of valgrind error
#create table t1 (a bit not null) partition by key (a);
#insert into t1 values (b'1');
#select * from t1 where a = b'1';
#drop table t1;
-- echo # 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';
drop table t1;
create table t1 (a tinyint not null) partition by key (a);
insert into t1 values (2);
select * from t1 where a = 2;
......@@ -100,11 +100,11 @@ create table t1 (a set('y','n') not null) partition by key (a);
insert into t1 values ('y');
select * from t1 where a = 'y';
drop table t1;
# FIXME: disabled this test because of valgrind error
#create table t1 (a bit) partition by key (a);
#insert into t1 values (b'1');
#select * from t1 where a = b'1';
#drop table t1;
-- echo # 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';
drop table t1;
create table t1 (a tinyint) partition by key (a);
insert into t1 values (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,
}
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
Field_bit::do_last_null_byte() const
{
......
......@@ -1904,6 +1904,7 @@ class Field_bit :public Field {
Field::move_field_offset(ptr_diff);
bit_ptr= ADD_TO_PTR(bit_ptr, ptr_diff, uchar*);
}
void hash(ulong *nr, ulong *nr2);
private:
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