mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
fix the problem with mysql unpack_key implementation. closes #561
git-svn-id: file:///svn/mysql/tokudb-engine/src@3187 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
1e2322e7f6
commit
2ee2ad741f
1 changed files with 22 additions and 2 deletions
|
@ -1025,11 +1025,18 @@ void ha_tokudb::unpack_key(uchar * record, DBT * key, uint index) {
|
|||
}
|
||||
record[key_part->null_offset] &= ~key_part->null_bit;
|
||||
}
|
||||
/* tokutek change to make pack_key and unpack_key work for
|
||||
decimals */
|
||||
uint unpack_length = key_part->length;
|
||||
if (key_part->field->type() == MYSQL_TYPE_NEWDECIMAL) {
|
||||
Field_new_decimal *field_nd = (Field_new_decimal *) key_part->field;
|
||||
unpack_length += field_nd->precision << 8;
|
||||
}
|
||||
pos = (uchar *) key_part->field->unpack_key(record + field_offset(key_part->field), pos,
|
||||
#if MYSQL_VERSION_ID < 50123
|
||||
key_part->length);
|
||||
unpack_length);
|
||||
#else
|
||||
key_part->length, table->s->db_low_byte_first);
|
||||
unpack_length, table->s->db_low_byte_first);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -2242,6 +2249,19 @@ int ha_tokudb::create(const char *name, TABLE * form, HA_CREATE_INFO * create_in
|
|||
int error;
|
||||
char newname[get_name_length(name) + 32];
|
||||
|
||||
if (tokudb_debug & TOKUDB_DEBUG_OPEN) {
|
||||
uint i;
|
||||
for (i=0; i<form->s->keys; i++) {
|
||||
KEY *key = &form->s->key_info[i];
|
||||
uint p;
|
||||
for (p=0; p<key->key_parts; p++) {
|
||||
KEY_PART_INFO *key_info = &key->key_part[p];
|
||||
printf("%d:%s:%d:key:%d:%d:type=%d:flags=%x\n", my_tid(), __FILE__, __LINE__,
|
||||
i, p, key_info->field->type(), key_info->field->flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// a table is a directory of dictionaries
|
||||
make_name(newname, name, 0);
|
||||
error = mkdirpath(newname, 0777);
|
||||
|
|
Loading…
Reference in a new issue