diff options
author | unknown <heikki@hundin.mysql.fi> | 2004-09-16 20:50:24 +0300 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2004-09-16 20:50:24 +0300 |
commit | a2d94d92f5b462d64aa33cdef8e0a0c0ae2297ae (patch) | |
tree | 4af62c5047a3c9d07dd0bae6236b6e6677cb207c /innobase/dict | |
parent | 8bf8c8596873b534ad4a13eb73152c617c50c21b (diff) | |
download | mariadb-git-a2d94d92f5b462d64aa33cdef8e0a0c0ae2297ae.tar.gz |
dict0dict.h, dict0dict.c, row0row.c, pars0opt.c:
Fix bug #5180: having a column prefix index in the primary key, and the same column fully in a secondary key could cause an assertion failure in row_build_row_ref()
innobase/pars/pars0opt.c:
Fix bug #5180: having a column prefix index in the primary key, and the same column fully in a secondary key could cause an assertion failure in row_build_row_ref()
innobase/row/row0row.c:
Fix bug #5180: having a column prefix index in the primary key, and the same column fully in a secondary key could cause an assertion failure in row_build_row_ref()
innobase/dict/dict0dict.c:
Fix bug #5180: having a column prefix index in the primary key, and the same column fully in a secondary key could cause an assertion failure in row_build_row_ref()
innobase/include/dict0dict.h:
Fix bug #5180: having a column prefix index in the primary key, and the same column fully in a secondary key could cause an assertion failure in row_build_row_ref()
Diffstat (limited to 'innobase/dict')
-rw-r--r-- | innobase/dict/dict0dict.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/innobase/dict/dict0dict.c b/innobase/dict/dict0dict.c index bd07c5abffe..61bf3fae137 100644 --- a/innobase/dict/dict0dict.c +++ b/innobase/dict/dict0dict.c @@ -526,8 +526,10 @@ dict_index_contains_col_or_prefix( } /************************************************************************ -Looks for a matching field in an index. The column and the prefix len have -to be the same. */ +Looks for a matching field in an index. The column has to be the same. The +column in index must be complete, or must contain a prefix longer than the +column in index2. That is, we must be able to construct the prefix in index2 +from the prefix in index. */ ulint dict_index_get_nth_field_pos( @@ -555,7 +557,9 @@ dict_index_get_nth_field_pos( field = dict_index_get_nth_field(index, pos); if (field->col == field2->col - && field->prefix_len == field2->prefix_len) { + && (field->prefix_len == 0 + || (field->prefix_len >= field2->prefix_len + && field2->prefix_len != 0))) { return(pos); } |