Commit 3b9b6e65 authored by mats@romeo.(none)'s avatar mats@romeo.(none)

Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl

into  romeo.(none):/home/bkroot/mysql-5.1-new-rpl
parents 4f5e3b3d f5b8614f
...@@ -5375,7 +5375,9 @@ unpack_row(RELAY_LOG_INFO *rli, ...@@ -5375,7 +5375,9 @@ unpack_row(RELAY_LOG_INFO *rli,
if (bitmap_is_set(cols, field_ptr - begin_ptr)) if (bitmap_is_set(cols, field_ptr - begin_ptr))
{ {
ptr= f->unpack(f->ptr + offset, ptr); f->move_field_offset(offset);
ptr= f->unpack(f->ptr, ptr);
f->move_field_offset(-offset);
/* Field...::unpack() cannot return 0 */ /* Field...::unpack() cannot return 0 */
DBUG_ASSERT(ptr != NULL); DBUG_ASSERT(ptr != NULL);
} }
...@@ -6589,7 +6591,7 @@ static int find_and_fetch_row(TABLE *table, byte *key) ...@@ -6589,7 +6591,7 @@ static int find_and_fetch_row(TABLE *table, byte *key)
/* We have a key: search the table using the index */ /* We have a key: search the table using the index */
if (!table->file->inited && (error= table->file->ha_index_init(0, FALSE))) if (!table->file->inited && (error= table->file->ha_index_init(0, FALSE)))
return error; return error;
/* /*
We need to set the null bytes to ensure that the filler bit are We need to set the null bytes to ensure that the filler bit are
all set when returning. There are storage engines that just set all set when returning. There are storage engines that just set
...@@ -6675,6 +6677,7 @@ static int find_and_fetch_row(TABLE *table, byte *key) ...@@ -6675,6 +6677,7 @@ static int find_and_fetch_row(TABLE *table, byte *key)
table->s->null_bytes > 0 ? table->s->null_bytes - 1 : 0; table->s->null_bytes > 0 ? table->s->null_bytes - 1 : 0;
table->record[1][pos]= 0xFF; table->record[1][pos]= 0xFF;
error= table->file->rnd_next(table->record[1]); error= table->file->rnd_next(table->record[1]);
switch (error) switch (error)
{ {
case 0: case 0:
...@@ -6956,6 +6959,10 @@ int Update_rows_log_event::do_prepare_row(THD *thd, RELAY_LOG_INFO *rli, ...@@ -6956,6 +6959,10 @@ int Update_rows_log_event::do_prepare_row(THD *thd, RELAY_LOG_INFO *rli,
row_start, &m_cols, row_end, &m_master_reclength, row_start, &m_cols, row_end, &m_master_reclength,
table->write_set, UPDATE_ROWS_EVENT); table->write_set, UPDATE_ROWS_EVENT);
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
DBUG_DUMP("m_after_image", m_after_image, table->s->reclength);
/* /*
If we will access rows using the random access method, m_key will If we will access rows using the random access method, m_key will
be set to NULL, so we do not need to make a key copy in that case. be set to NULL, so we do not need to make a key copy in that case.
......
...@@ -2530,7 +2530,9 @@ my_size_t THD::pack_row(TABLE *table, MY_BITMAP const* cols, byte *row_data, ...@@ -2530,7 +2530,9 @@ my_size_t THD::pack_row(TABLE *table, MY_BITMAP const* cols, byte *row_data,
{ {
my_ptrdiff_t const offset= my_ptrdiff_t const offset=
field->is_null(rec_offset) ? def_offset : rec_offset; field->is_null(rec_offset) ? def_offset : rec_offset;
ptr= (byte*)field->pack((char *) ptr, field->ptr + offset); field->move_field_offset(offset);
ptr= (byte*)field->pack((char *) ptr, field->ptr);
field->move_field_offset(-offset);
} }
} }
return (static_cast<my_size_t>(ptr - row_data)); return (static_cast<my_size_t>(ptr - row_data));
...@@ -2615,12 +2617,19 @@ int THD::binlog_update_row(TABLE* table, bool is_trans, ...@@ -2615,12 +2617,19 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
my_size_t const after_size= pack_row(table, cols, after_row, my_size_t const after_size= pack_row(table, cols, after_row,
after_record); after_record);
DBUG_DUMP("before_record", before_record, table->s->reclength);
DBUG_DUMP("after_record", after_record, table->s->reclength);
DBUG_DUMP("before_row", before_row, before_size);
DBUG_DUMP("after_row", after_row, after_size);
Rows_log_event* const ev= Rows_log_event* const ev=
binlog_prepare_pending_rows_event(table, server_id, cols, colcnt, binlog_prepare_pending_rows_event(table, server_id, cols, colcnt,
before_size + after_size, is_trans, before_size + after_size, is_trans,
static_cast<Update_rows_log_event*>(0)); static_cast<Update_rows_log_event*>(0));
error= (unlikely(!ev)) || ev->add_row_data(before_row, before_size) || error=
unlikely(!ev) ||
ev->add_row_data(before_row, before_size) ||
ev->add_row_data(after_row, after_size); ev->add_row_data(after_row, after_size);
if (!table->write_row_record) if (!table->write_row_record)
......
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