summaryrefslogtreecommitdiff
path: root/innobase/data
diff options
context:
space:
mode:
authorunknown <marko@hundin.mysql.fi>2005-05-13 12:55:59 +0300
committerunknown <marko@hundin.mysql.fi>2005-05-13 12:55:59 +0300
commit67d0502bcf05ee19edf0710ef153ca6b68244b26 (patch)
treef7a65769b2ebf26f3ccd3ac5abe47be27756c038 /innobase/data
parent807a543b8b795adb1b9c6546d1e2a044ecf1950e (diff)
downloadmariadb-git-67d0502bcf05ee19edf0710ef153ca6b68244b26.tar.gz
InnoDB ON UPDATE CASCADE fixes:
Enforce maximum char_length of UTF-8 data (Bug #10409). Pad UTF-8 variable-length CHAR columns with 0x20. Pad UCS2 CHAR columns with 0x0020 (Bug #10511). innobase/data/data0type.c: dtype_get_at_most_n_mbchars(): Avoid division by zero in assertion when this function is called with dtype->mbmaxlen==0 innobase/row/row0ins.c: row_ins_cascade_calc_update_vec(): Enforce maximum char_length of UTF-8 data (Bug #10409). Pad UTF-8 CHAR columns with 0x20. Pad UCS2 CHAR columns with 0x0020 (Bug #10511).
Diffstat (limited to 'innobase/data')
-rw-r--r--innobase/data/data0type.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/innobase/data/data0type.c b/innobase/data/data0type.c
index 36b0f9603e5..d4264ad2926 100644
--- a/innobase/data/data0type.c
+++ b/innobase/data/data0type.c
@@ -63,9 +63,10 @@ dtype_get_at_most_n_mbchars(
{
#ifndef UNIV_HOTBACKUP
ut_a(data_len != UNIV_SQL_NULL);
- ut_a(!(prefix_len % dtype->mbmaxlen));
+ ut_ad(!dtype->mbmaxlen || !(prefix_len % dtype->mbmaxlen));
if (dtype->mbminlen != dtype->mbmaxlen) {
+ ut_a(!(prefix_len % dtype->mbmaxlen));
return(innobase_get_at_most_n_mbchars(
dtype_get_charset_coll(dtype->prtype),
prefix_len, data_len, str));