summaryrefslogtreecommitdiff
path: root/innobase/row/row0row.c
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/row/row0row.c')
-rw-r--r--innobase/row/row0row.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/innobase/row/row0row.c b/innobase/row/row0row.c
index 2de7ffc79c0..38714b0c49b 100644
--- a/innobase/row/row0row.c
+++ b/innobase/row/row0row.c
@@ -386,10 +386,12 @@ row_build_row_ref(
dict_index_get_nth_field(clust_index, i)->prefix_len;
if (clust_col_prefix_len > 0) {
- if (len != UNIV_SQL_NULL
- && len > clust_col_prefix_len) {
+ if (len != UNIV_SQL_NULL) {
- dfield_set_len(dfield, clust_col_prefix_len);
+ dfield_set_len(dfield,
+ dtype_get_at_most_n_mbchars(
+ dfield_get_type(dfield),
+ clust_col_prefix_len, len, field));
}
}
}
@@ -471,10 +473,12 @@ row_build_row_ref_in_tuple(
dict_index_get_nth_field(clust_index, i)->prefix_len;
if (clust_col_prefix_len > 0) {
- if (len != UNIV_SQL_NULL
- && len > clust_col_prefix_len) {
+ if (len != UNIV_SQL_NULL) {
- dfield_set_len(dfield, clust_col_prefix_len);
+ dfield_set_len(dfield,
+ dtype_get_at_most_n_mbchars(
+ dfield_get_type(dfield),
+ clust_col_prefix_len, len, field));
}
}
}