diff options
author | Rich Prohaska <prohaska@tokutek.com> | 2014-02-03 16:12:57 -0500 |
---|---|---|
committer | Rich Prohaska <prohaska@tokutek.com> | 2014-02-03 16:12:57 -0500 |
commit | be8aa787db90af30a96eed3ff4e89a46b74cff29 (patch) | |
tree | 79dd82782c51c88f317bdd36fbd974f6be0b078e /storage | |
parent | 88f846d6761837fd041574536ed12fdd4662b570 (diff) | |
download | mariadb-git-be8aa787db90af30a96eed3ff4e89a46b74cff29.tar.gz |
#175 compare enums using eq_def
Diffstat (limited to 'storage')
-rw-r--r-- | storage/tokudb/hatoku_cmp.cc | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/storage/tokudb/hatoku_cmp.cc b/storage/tokudb/hatoku_cmp.cc index 65e0ad7f4ac..70aa55e38eb 100644 --- a/storage/tokudb/hatoku_cmp.cc +++ b/storage/tokudb/hatoku_cmp.cc @@ -3140,19 +3140,11 @@ static uint32_t pack_key_from_desc( return (uint32_t)(packed_key_pos - buf); // } -static bool fields_have_same_name( - Field* a, - Field* b - ) -{ +static bool fields_have_same_name(Field* a, Field* b) { return strcmp(a->field_name, b->field_name) == 0; } -static bool fields_are_same_type( - Field* a, - Field* b - ) -{ +static bool fields_are_same_type(Field* a, Field* b) { bool retval = true; enum_field_types a_mysql_type = a->real_type(); enum_field_types b_mysql_type = b->real_type(); @@ -3209,8 +3201,22 @@ static bool fields_are_same_type( goto cleanup; } break; - case MYSQL_TYPE_ENUM: - case MYSQL_TYPE_SET: + case MYSQL_TYPE_ENUM: { + Field_enum *a_enum = static_cast<Field_enum *>(a); + if (!a_enum->eq_def(b)) { + retval = false; + goto cleanup; + } + break; + } + case MYSQL_TYPE_SET: { + Field_set *a_set = static_cast<Field_set *>(a); + if (!a_set->eq_def(b)) { + retval = false; + goto cleanup; + } + break; + } case MYSQL_TYPE_BIT: // length if (a->pack_length() != b->pack_length()) { @@ -3315,12 +3321,7 @@ cleanup: return retval; } - -static bool are_two_fields_same( - Field* a, - Field* b - ) -{ +static bool are_two_fields_same(Field* a, Field* b) { return fields_have_same_name(a, b) && fields_are_same_type(a, b); } |