mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
bug#15682 - ndb
incorrect handling of varchar in position/rnd_pos Commit for 5.0.17 release clone mysql-test/r/ndb_basic.result: bug#15682 mysql-test/t/ndb_basic.test: bug#15682 sql/ha_ndbcluster.cc: bug#15682
This commit is contained in:
@ -677,3 +677,19 @@ select * from atablewithareallylongandirritatingname;
|
||||
a
|
||||
2
|
||||
drop table atablewithareallylongandirritatingname;
|
||||
create table t1 (f1 varchar(50), f2 text,f3 int, primary key(f1)) engine=NDB;
|
||||
insert into t1 (f1,f2,f3)VALUES("111111","aaaaaa",1);
|
||||
insert into t1 (f1,f2,f3)VALUES("222222","bbbbbb",2);
|
||||
select * from t1 order by f1;
|
||||
f1 f2 f3
|
||||
111111 aaaaaa 1
|
||||
222222 bbbbbb 2
|
||||
select * from t1 order by f2;
|
||||
f1 f2 f3
|
||||
111111 aaaaaa 1
|
||||
222222 bbbbbb 2
|
||||
select * from t1 order by f3;
|
||||
f1 f2 f3
|
||||
111111 aaaaaa 1
|
||||
222222 bbbbbb 2
|
||||
drop table t1;
|
||||
|
@ -623,3 +623,14 @@ create table atablewithareallylongandirritatingname (a int);
|
||||
insert into atablewithareallylongandirritatingname values (2);
|
||||
select * from atablewithareallylongandirritatingname;
|
||||
drop table atablewithareallylongandirritatingname;
|
||||
|
||||
#
|
||||
# Bug#15682
|
||||
#
|
||||
create table t1 (f1 varchar(50), f2 text,f3 int, primary key(f1)) engine=NDB;
|
||||
insert into t1 (f1,f2,f3)VALUES("111111","aaaaaa",1);
|
||||
insert into t1 (f1,f2,f3)VALUES("222222","bbbbbb",2);
|
||||
select * from t1 order by f1;
|
||||
select * from t1 order by f2;
|
||||
select * from t1 order by f3;
|
||||
drop table t1;
|
||||
|
@ -2812,8 +2812,25 @@ void ha_ndbcluster::position(const byte *record)
|
||||
}
|
||||
*buff++= 0;
|
||||
}
|
||||
memcpy(buff, record + key_part->offset, key_part->length);
|
||||
buff += key_part->length;
|
||||
size_t len = key_part->length;
|
||||
const byte * ptr = record + key_part->offset;
|
||||
Field *field = key_part->field;
|
||||
if ((field->type() == MYSQL_TYPE_VARCHAR) &&
|
||||
((Field_varstring*)field)->length_bytes == 1)
|
||||
{
|
||||
/**
|
||||
* Keys always use 2 bytes length
|
||||
*/
|
||||
buff[0] = ptr[0];
|
||||
buff[1] = 0;
|
||||
memcpy(buff+2, ptr + 1, len);
|
||||
len += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(buff, ptr, len);
|
||||
}
|
||||
buff += len;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user