mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
addresses #1619
clean up pack and unpack functions a bit before adding more stuff to them git-svn-id: file:///svn/mysql/tokudb-engine/src@10721 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
c3d8615df4
commit
89c6d9f7c2
2 changed files with 13 additions and 7 deletions
|
@ -1265,8 +1265,7 @@ void ha_tokudb::unpack_row(uchar * record, DBT const *row, DBT const *key, bool
|
|||
|
||||
|
||||
|
||||
u_int32_t ha_tokudb::place_key_into_mysql_buff(uchar * record, uchar* data, uint index) {
|
||||
KEY *key_info = table->key_info + index;
|
||||
u_int32_t ha_tokudb::place_key_into_mysql_buff(KEY* key_info, uchar * record, uchar* data) {
|
||||
KEY_PART_INFO *key_part = key_info->key_part, *end = key_part + key_info->key_parts;
|
||||
uchar *pos = data;
|
||||
|
||||
|
@ -1304,12 +1303,20 @@ u_int32_t ha_tokudb::place_key_into_mysql_buff(uchar * record, uchar* data, uint
|
|||
void ha_tokudb::unpack_key(uchar * record, DBT const *key, uint index) {
|
||||
u_int32_t bytes_read;
|
||||
uchar *pos = (uchar *) key->data + 1;
|
||||
bytes_read = place_key_into_mysql_buff(record,pos,index);
|
||||
bytes_read = place_key_into_mysql_buff(
|
||||
&table->key_info[index],
|
||||
record,
|
||||
pos
|
||||
);
|
||||
if((table->key_info[index].flags & HA_CLUSTERING) && !hidden_primary_key) {
|
||||
//
|
||||
// also unpack primary key
|
||||
//
|
||||
place_key_into_mysql_buff(record,pos+bytes_read,primary_key);
|
||||
place_key_into_mysql_buff(
|
||||
&table->key_info[primary_key],
|
||||
record,
|
||||
pos+bytes_read
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1329,8 +1336,7 @@ u_int32_t ha_tokudb::place_key_into_dbt_buff(KEY* key_info, uchar * buff, const
|
|||
//
|
||||
if (key_part->field->null_bit) {
|
||||
/* Store 0 if the key part is a NULL part */
|
||||
uint null_offset = (uint) ((char*) key_part->field->null_ptr
|
||||
- (char*) table->record[0]);
|
||||
uint null_offset = get_null_offset(table, key_part->field);
|
||||
if (record[null_offset] & key_part->field->null_bit) {
|
||||
*curr_buff++ = NULL_COL_VAL;
|
||||
*has_null = true;
|
||||
|
|
|
@ -201,7 +201,7 @@ private:
|
|||
|
||||
ulong max_row_length(const uchar * buf);
|
||||
int pack_row(DBT * row, const uchar * record, bool strip_pk);
|
||||
u_int32_t place_key_into_mysql_buff(uchar * record, uchar* data, uint index);
|
||||
u_int32_t place_key_into_mysql_buff(KEY* key_info, uchar * record, uchar* data);
|
||||
void unpack_key(uchar * record, DBT const *key, uint index);
|
||||
u_int32_t place_key_into_dbt_buff(KEY* key_info, uchar * buff, const uchar * record, bool* has_null, int key_length);
|
||||
DBT* create_dbt_key_from_key(DBT * key, KEY* key_info, uchar * buff, const uchar * record, bool* has_null, int key_length = MAX_KEY_LENGTH);
|
||||
|
|
Loading…
Reference in a new issue