Loading mysql-test/r/func_str.result +12 −0 Original line number Diff line number Diff line Loading @@ -1960,4 +1960,16 @@ NULL SELECT UNHEX('G') IS NULL; UNHEX('G') IS NULL 1 SELECT INSERT('abc', 3, 3, '1234'); INSERT('abc', 3, 3, '1234') ab1234 SELECT INSERT('abc', 4, 3, '1234'); INSERT('abc', 4, 3, '1234') abc1234 SELECT INSERT('abc', 5, 3, '1234'); INSERT('abc', 5, 3, '1234') abc SELECT INSERT('abc', 6, 3, '1234'); INSERT('abc', 6, 3, '1234') abc End of 5.0 tests mysql-test/t/func_str.test +8 −1 Original line number Diff line number Diff line Loading @@ -1008,7 +1008,6 @@ select repeat('a', cast(2 as unsigned int)); select rpad('abc', cast(5 as unsigned integer), 'x'); select lpad('abc', cast(5 as unsigned integer), 'x'); # # Bug #25197 :repeat function returns null when using table field directly as count # Loading Loading @@ -1036,4 +1035,12 @@ DROP TABLE t1; SELECT UNHEX('G'); SELECT UNHEX('G') IS NULL; # # Bug #26281: INSERT() function mishandles NUL on boundary condition # SELECT INSERT('abc', 3, 3, '1234'); SELECT INSERT('abc', 4, 3, '1234'); SELECT INSERT('abc', 5, 3, '1234'); SELECT INSERT('abc', 6, 3, '1234'); --echo End of 5.0 tests sql/item_strfunc.cc +5 −5 Original line number Diff line number Diff line Loading @@ -967,18 +967,18 @@ String *Item_func_insert::val_str(String *str) args[3]->null_value) goto null; /* purecov: inspected */ if ((start < 0) || (start > res->length() + 1)) if ((start < 0) || (start > res->length())) return res; // Wrong param; skip insert if ((length < 0) || (length > res->length() + 1)) length= res->length() + 1; if ((length < 0) || (length > res->length())) length= res->length(); /* start and length are now sufficiently valid to pass to charpos function */ start= res->charpos((int) start); length= res->charpos((int) length, (uint32) start); /* Re-testing with corrected params */ if (start > res->length() + 1) return res; // Wrong param; skip insert if (start > res->length()) return res; /* purecov: inspected */ // Wrong param; skip insert if (length > res->length() - start) length= res->length() - start; Loading Loading
mysql-test/r/func_str.result +12 −0 Original line number Diff line number Diff line Loading @@ -1960,4 +1960,16 @@ NULL SELECT UNHEX('G') IS NULL; UNHEX('G') IS NULL 1 SELECT INSERT('abc', 3, 3, '1234'); INSERT('abc', 3, 3, '1234') ab1234 SELECT INSERT('abc', 4, 3, '1234'); INSERT('abc', 4, 3, '1234') abc1234 SELECT INSERT('abc', 5, 3, '1234'); INSERT('abc', 5, 3, '1234') abc SELECT INSERT('abc', 6, 3, '1234'); INSERT('abc', 6, 3, '1234') abc End of 5.0 tests
mysql-test/t/func_str.test +8 −1 Original line number Diff line number Diff line Loading @@ -1008,7 +1008,6 @@ select repeat('a', cast(2 as unsigned int)); select rpad('abc', cast(5 as unsigned integer), 'x'); select lpad('abc', cast(5 as unsigned integer), 'x'); # # Bug #25197 :repeat function returns null when using table field directly as count # Loading Loading @@ -1036,4 +1035,12 @@ DROP TABLE t1; SELECT UNHEX('G'); SELECT UNHEX('G') IS NULL; # # Bug #26281: INSERT() function mishandles NUL on boundary condition # SELECT INSERT('abc', 3, 3, '1234'); SELECT INSERT('abc', 4, 3, '1234'); SELECT INSERT('abc', 5, 3, '1234'); SELECT INSERT('abc', 6, 3, '1234'); --echo End of 5.0 tests
sql/item_strfunc.cc +5 −5 Original line number Diff line number Diff line Loading @@ -967,18 +967,18 @@ String *Item_func_insert::val_str(String *str) args[3]->null_value) goto null; /* purecov: inspected */ if ((start < 0) || (start > res->length() + 1)) if ((start < 0) || (start > res->length())) return res; // Wrong param; skip insert if ((length < 0) || (length > res->length() + 1)) length= res->length() + 1; if ((length < 0) || (length > res->length())) length= res->length(); /* start and length are now sufficiently valid to pass to charpos function */ start= res->charpos((int) start); length= res->charpos((int) length, (uint32) start); /* Re-testing with corrected params */ if (start > res->length() + 1) return res; // Wrong param; skip insert if (start > res->length()) return res; /* purecov: inspected */ // Wrong param; skip insert if (length > res->length() - start) length= res->length() - start; Loading