summaryrefslogtreecommitdiff
path: root/sql/rpl_utility.cc
diff options
context:
space:
mode:
authorcbell/Chuck@mysql_cab_desk. <>2007-07-30 12:55:26 -0400
committercbell/Chuck@mysql_cab_desk. <>2007-07-30 12:55:26 -0400
commit11fc097e8df5ffb79fd20a778ad7220e92633d1b (patch)
tree782b6159eda9477210a258d9ddbb402547a7819e /sql/rpl_utility.cc
parent0950f6435c4a104b41d864b9f31ce8197ffdb947 (diff)
downloadmariadb-git-11fc097e8df5ffb79fd20a778ad7220e92633d1b.tar.gz
WL#3915 : (NDB) master's cols > slave
Corrective patch to fix test failures in pushbuild and add assertions to help debug rpl_extraColmaster test failures.
Diffstat (limited to 'sql/rpl_utility.cc')
-rw-r--r--sql/rpl_utility.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc
index 2a124c7b14e..279575f33ce 100644
--- a/sql/rpl_utility.cc
+++ b/sql/rpl_utility.cc
@@ -48,8 +48,12 @@ uint32 table_def::calc_field_size(uint col, uchar *master_data)
else
{
length= m_field_metadata[col] & 0x00ff;
+ DBUG_ASSERT(length > 0);
if (length > 255)
+ {
+ DBUG_ASSERT(uint2korr(master_data) > 0);
length= uint2korr(master_data) + 2;
+ }
else
length= (uint) *master_data + 1;
}
@@ -93,13 +97,17 @@ 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_len >= 0 && from_bit_len >= 0 && from_bit_len <= 7);
length= from_len + ((from_bit_len > 0) ? 1 : 0);
break;
}
case MYSQL_TYPE_VARCHAR:
+ {
length= m_field_metadata[col] > 255 ? 2 : 1; // c&p of Field_varstring::data_length()
+ DBUG_ASSERT(uint2korr(master_data) > 0);
length+= length == 1 ? (uint32) *master_data : uint2korr(master_data);
break;
+ }
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
case MYSQL_TYPE_LONG_BLOB:
@@ -113,6 +121,7 @@ uint32 table_def::calc_field_size(uint col, uchar *master_data)
default:
length= -1;
}
+ DBUG_ASSERT(length >= 0);
return length;
}