summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/rpl_record.cc11
-rw-r--r--sql/rpl_utility.cc2
-rw-r--r--sql/rpl_utility.h12
3 files changed, 15 insertions, 10 deletions
diff --git a/sql/rpl_record.cc b/sql/rpl_record.cc
index 8772729763f..36dcedb3b88 100644
--- a/sql/rpl_record.cc
+++ b/sql/rpl_record.cc
@@ -250,13 +250,14 @@ unpack_row(RELAY_LOG_INFO const *rli,
We only unpack the field if it was non-null.
Use the master's size information if available else call
normal unpack operation.
- */
+ */
#if 0
- bool save= table->s->db_low_byte_first;
- table->s->db_low_byte_first= TRUE;
+ bool save= table->s->db_low_byte_first;
+ table->s->db_low_byte_first= TRUE;
#endif
- if (tabledef && tabledef->field_metadata(i))
- pack_ptr= f->unpack(f->ptr, pack_ptr, tabledef->field_metadata(i));
+ uint16 const metadata= tabledef->field_metadata(i);
+ if (tabledef && metadata)
+ pack_ptr= f->unpack(f->ptr, pack_ptr, metadata);
else
pack_ptr= f->unpack(f->ptr, pack_ptr);
#if 0
diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc
index 9c0eb9891a0..85ed6089f56 100644
--- a/sql/rpl_utility.cc
+++ b/sql/rpl_utility.cc
@@ -97,7 +97,7 @@ uint32 table_def::calc_field_size(uint col, uchar *master_data)
{
uint from_len= (m_field_metadata[col] >> 8U) & 0x00ff;
uint from_bit_len= m_field_metadata[col] & 0x00ff;
- DBUG_ASSERT(from_bit_len >= 0 && from_bit_len <= 7);
+ DBUG_ASSERT(from_bit_len <= 7);
length= from_len + ((from_bit_len > 0) ? 1 : 0);
break;
}
diff --git a/sql/rpl_utility.h b/sql/rpl_utility.h
index 034b6e084af..d08f62363af 100644
--- a/sql/rpl_utility.h
+++ b/sql/rpl_utility.h
@@ -65,10 +65,14 @@ public:
m_field_metadata(0), m_null_bits(0), m_memory(NULL)
{
m_memory= (uchar *)my_multi_malloc(MYF(MY_WME),
- &m_type, size,
- &m_field_metadata, size * sizeof(short),
- &m_null_bits, (m_size + 7) / 8,
- NULL);
+ &m_type, size,
+ &m_field_metadata,
+ size * sizeof(uint16),
+ &m_null_bits, (size + 7) / 8,
+ NULL);
+
+ bzero(m_field_metadata, size * sizeof(uint16));
+
if (m_type)
memcpy(m_type, types, size);
else