mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
addresses #808
no longer append hidden primary key at end of data inserted in tokudb table git-svn-id: file:///svn/mysql/tokudb-engine/src@3900 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
8125c7c2af
commit
369670902e
1 changed files with 13 additions and 11 deletions
|
@ -1192,11 +1192,11 @@ int ha_tokudb::pack_row(DBT * row, const uchar * record, bool new_row) {
|
|||
bzero((void *) row, sizeof(*row));
|
||||
if (share->fixed_length_row) {
|
||||
row->data = (void *) record;
|
||||
row->size = table_share->reclength + hidden_primary_key;
|
||||
row->size = table_share->reclength;
|
||||
if (hidden_primary_key) {
|
||||
if (new_row)
|
||||
if (new_row) {
|
||||
get_auto_primary_key(current_ident);
|
||||
memcpy_fixed((char *) record + table_share->reclength, (char *) current_ident, TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1214,10 +1214,9 @@ int ha_tokudb::pack_row(DBT * row, const uchar * record, bool new_row) {
|
|||
(record + field_offset(*field)));
|
||||
|
||||
if (hidden_primary_key) {
|
||||
if (new_row)
|
||||
if (new_row) {
|
||||
get_auto_primary_key(current_ident);
|
||||
memcpy_fixed((char *) ptr, (char *) current_ident, TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH);
|
||||
ptr += TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH;
|
||||
}
|
||||
}
|
||||
row->data = rec_buff;
|
||||
row->size = (size_t) (ptr - rec_buff);
|
||||
|
@ -1232,7 +1231,7 @@ int ha_tokudb::pack_row(DBT * row, const uchar * record, bool new_row) {
|
|||
//
|
||||
void ha_tokudb::unpack_row(uchar * record, DBT * row) {
|
||||
if (share->fixed_length_row)
|
||||
memcpy(record, (void *) row->data, table_share->reclength + hidden_primary_key);
|
||||
memcpy(record, (void *) row->data, table_share->reclength);
|
||||
else {
|
||||
/* Copy null bits */
|
||||
my_bitmap_map *old_map = dbug_tmp_use_all_columns(table, table->write_set);
|
||||
|
@ -2029,12 +2028,15 @@ int ha_tokudb::read_row(int error, uchar * buf, uint keynr, DBT * row, DBT * fou
|
|||
TOKUDB_DBUG_RETURN(error);
|
||||
}
|
||||
//
|
||||
// TODO: figure out the most appropriate place to put this comment
|
||||
// Autogenerated primary keys are are appended to the end of the row, and we extract
|
||||
// its value into current_ident
|
||||
// extract hidden primary key to current_ident
|
||||
//
|
||||
if (hidden_primary_key) {
|
||||
memcpy_fixed(current_ident, (char *) row->data + row->size - TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH, TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH);
|
||||
if (keynr == primary_key) {
|
||||
memcpy_fixed(current_ident, (char *) found_key->data, TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH);
|
||||
}
|
||||
else {
|
||||
memcpy_fixed(current_ident, (char *) row->data, TOKUDB_HIDDEN_PRIMARY_KEY_LENGTH);
|
||||
}
|
||||
}
|
||||
table->status = 0;
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue