Commit ea739898 authored by unknown's avatar unknown

Fixed bug #32282: TEXT silently truncates when value is exactly 65536

bytes length.

The server has been modified to report warnings on truncation to
65536 bytes as usual.



sql/sql_string.cc:
  Fixed bug #32282.
  The well_formed_copy_nchars function returned an incorrect value
  of copied bytes of the truncated input string: extra length of
  the first truncated character added to the *from_end_pos pointer.
  That has been fixed.
mysql-test/r/type_blob.result:
  Added test case for bug #32282.
mysql-test/t/type_blob.test:
  Added test case for bug #32282.
parent ac0612f5
......@@ -807,4 +807,18 @@ set @@sql_mode='TRADITIONAL';
create table t1 (a text default '');
ERROR 42000: BLOB/TEXT column 'a' can't have a default value
set @@sql_mode='';
CREATE TABLE t (c TEXT CHARSET ASCII);
INSERT INTO t (c) VALUES (REPEAT('1',65537));
Warnings:
Warning 1265 Data truncated for column 'c' at row 1
INSERT INTO t (c) VALUES (REPEAT('2',65536));
Warnings:
Warning 1265 Data truncated for column 'c' at row 1
INSERT INTO t (c) VALUES (REPEAT('3',65535));
SELECT LENGTH(c), CHAR_LENGTH(c) FROM t;
LENGTH(c) CHAR_LENGTH(c)
65535 65535
65535 65535
65535 65535
DROP TABLE t;
End of 5.0 tests
......@@ -436,4 +436,15 @@ set @@sql_mode='TRADITIONAL';
create table t1 (a text default '');
set @@sql_mode='';
#
# Bug #32282: TEXT silently truncates when value is exactly 65536 bytes
#
CREATE TABLE t (c TEXT CHARSET ASCII);
INSERT INTO t (c) VALUES (REPEAT('1',65537));
INSERT INTO t (c) VALUES (REPEAT('2',65536));
INSERT INTO t (c) VALUES (REPEAT('3',65535));
SELECT LENGTH(c), CHAR_LENGTH(c) FROM t;
DROP TABLE t;
--echo End of 5.0 tests
......@@ -858,7 +858,7 @@ outp:
with optional left padding (for binary -> UCS2 conversion)
SYNOPSIS
well_formed_copy_nhars()
well_formed_copy_nchars()
to Store result here
to_length Maxinum length of "to" string
to_cs Character set of "to" string
......@@ -997,7 +997,10 @@ outp:
goto outp;
}
else
{
from= from_prev;
break;
}
}
*from_end_pos= from;
res= to - to_start;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment