Skip to content

Commit e975cd0

Browse files
author
Alexander Barkov
committed
MDEV-9842 LOAD DATA INFILE does not work well with a TEXT column when using sjis
1 parent 3fc6a8b commit e975cd0

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

mysql-test/r/ctype_sjis.result

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18730,3 +18730,21 @@ DROP TABLE t1;
1873018730
#
1873118731
# End of 10.0 tests
1873218732
#
18733+
#
18734+
# Start of 10.2 tests
18735+
#
18736+
#
18737+
# MDEV-9842 LOAD DATA INFILE does not work well with a TEXT column when using sjis
18738+
#
18739+
CREATE TABLE t1 (a TEXT CHARACTER SET sjis);
18740+
LOAD DATA INFILE '../../std_data/loaddata/mdev9842.txt' INTO TABLE t1 CHARACTER SET sjis;
18741+
SELECT HEX(a) FROM t1;
18742+
HEX(a)
18743+
78835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C835C
18744+
SELECT a=CONCAT('x', REPEAT(_sjis 0x835C, 200)) FROM t1;
18745+
a=CONCAT('x', REPEAT(_sjis 0x835C, 200))
18746+
1
18747+
DROP TABLE t1;
18748+
#
18749+
# End of 10.2 tests
18750+
#
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
x�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\

mysql-test/t/ctype_sjis.test

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,21 @@ SET NAMES sjis;
231231
--echo #
232232
--echo # End of 10.0 tests
233233
--echo #
234+
235+
--echo #
236+
--echo # Start of 10.2 tests
237+
--echo #
238+
239+
--echo #
240+
--echo # MDEV-9842 LOAD DATA INFILE does not work well with a TEXT column when using sjis
241+
--echo #
242+
CREATE TABLE t1 (a TEXT CHARACTER SET sjis);
243+
LOAD DATA INFILE '../../std_data/loaddata/mdev9842.txt' INTO TABLE t1 CHARACTER SET sjis;
244+
SELECT HEX(a) FROM t1;
245+
SELECT a=CONCAT('x', REPEAT(_sjis 0x835C, 200)) FROM t1;
246+
DROP TABLE t1;
247+
248+
249+
--echo #
250+
--echo # End of 10.2 tests
251+
--echo #

sql/sql_load.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1492,7 +1492,8 @@ int READ_INFO::read_field()
14921492

14931493
for (;;)
14941494
{
1495-
while ( to < end_of_buff)
1495+
// Make sure we have enough space for the longest multi-byte character.
1496+
while ( to + read_charset->mbmaxlen <= end_of_buff)
14961497
{
14971498
chr = GET;
14981499
if (chr == my_b_EOF)

0 commit comments

Comments
 (0)