Skip to content

Commit c3cf7f4

Browse files
BUG#24487120 - SLAVE'S SLAVE_SQL_RUNNING IS STOPPED DURING
LOAD DATA AT MASTER. Revert "BUG#23080148 - BACKPORT BUG 14653594 AND BUG 20683959 TO" This reverts commit 1d31f5b3090d129382b50b95512f2f79305715a1. The commit causes replication incompatibility between minor revisions and based on discussion with Srinivasarao, the patch is reverted.
1 parent 63b2c97 commit c3cf7f4

File tree

4 files changed

+30
-99
lines changed

4 files changed

+30
-99
lines changed

mysql-test/r/loaddata.result

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ DROP TABLE t1;
507507
# Bug#11765139 58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U
508508
#
509509
CREATE TABLE t1(f1 INT);
510-
SELECT 0xE1C330 INTO OUTFILE 't1.dat';
510+
SELECT 0xE1BB30 INTO OUTFILE 't1.dat';
511511
LOAD DATA INFILE 't1.dat' IGNORE INTO TABLE t1 CHARACTER SET utf8;
512512
DROP TABLE t1;
513513
#
@@ -532,27 +532,3 @@ FIELDS TERMINATED BY 't' LINES TERMINATED BY '';
532532
Got one of the listed errors
533533
SET @@sql_mode= @old_mode;
534534
DROP TABLE t1;
535-
536-
#
537-
# Bug#23080148 - Backport of Bug#20683959.
538-
# Bug#20683959 LOAD DATA INFILE IGNORES A SPECIFIC ROW SILENTLY
539-
# UNDER DB CHARSET IS UTF8.
540-
#
541-
CREATE DATABASE d1 CHARSET latin1;
542-
USE d1;
543-
CREATE TABLE t1 (val TEXT);
544-
LOAD DATA INFILE '../../std_data/bug20683959loaddata.txt' INTO TABLE t1;
545-
SELECT COUNT(*) FROM t1;
546-
COUNT(*)
547-
1
548-
SELECT HEX(val) FROM t1;
549-
HEX(val)
550-
C38322525420406E696F757A656368756E3A20E98198E2889AF58081AEE7B99DE4B88AE383A3E7B99DE69690F58087B3E7B9A7EFBDA8E7B99DEFBDB3E7B99DE78999E880B3E7B8BAEFBDAAE7B9A7E89699E296A1E7B8BAE4BBA3EFBD8CE7B8BAEFBDA9E7B8B2E2889AE38184E7B99DEFBDB3E7B99DE4B88AE383A3E7B99DE69690F58087B3E7B9A7EFBDA8E7B99DEFBDB3E7B99DE5B3A8EFBD84E8ABA0EFBDA8E89C89F580948EE599AAE7B8BAEFBDAAE7B8BAE9A198EFBDA9EFBDB1E7B9A7E581B5E289A0E7B8BAEFBDBEE7B9A7E9A194EFBDA9E882B4EFBDA5EFBDB5E980A7F5808B96E28693E99EABE38287E58F99E7B8BAE58AB1E28691E7B8BAF5808B9AE7828AE98095EFBDB1E7B8BAEFBDAFE7B8B2E288ABE6A89FE89EB3E6BA98F58081ADE88EA0EFBDBAE98095E6BA98F58081AEE89D93EFBDBAE8AD9BEFBDACE980A7F5808B96E28693E7B8BAF580918EE288AAE7B8BAE4B88AEFBC9EE7B8BAE4B99DE28691E7B8BAF5808B96EFBCA0E88DB3E6A68AEFBDB9EFBDB3E981B2E5B3A8E296A1E7B8BAE7A4BCE7828AE88DB3E6A68AEFBDB0EFBDBDE7B8BAA0E7B8BAE88B93EFBDBEE5B899EFBC9E
551-
CREATE DATABASE d2 CHARSET utf8;
552-
USE d2;
553-
CREATE TABLE t1 (val TEXT);
554-
LOAD DATA INFILE '../../std_data/bug20683959loaddata.txt' INTO TABLE t1;
555-
ERROR HY000: Invalid utf8 character string: '�"RT @niouzechun: \9058\221A'
556-
DROP TABLE d1.t1, d2.t1;
557-
DROP DATABASE d1;
558-
DROP DATABASE d2;

mysql-test/std_data/bug20683959loaddata.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

mysql-test/t/loaddata.test

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ disconnect con1;
610610
--echo #
611611

612612
CREATE TABLE t1(f1 INT);
613-
EVAL SELECT 0xE1C330 INTO OUTFILE 't1.dat';
613+
EVAL SELECT 0xE1BB30 INTO OUTFILE 't1.dat';
614614
--disable_warnings
615615
LOAD DATA INFILE 't1.dat' IGNORE INTO TABLE t1 CHARACTER SET utf8;
616616
--enable_warnings
@@ -656,26 +656,3 @@ SET @@sql_mode= @old_mode;
656656
--remove_file $MYSQLTEST_VARDIR/mysql
657657
DROP TABLE t1;
658658

659-
--echo
660-
--echo #
661-
--echo # Bug#23080148 - Backport of Bug#20683959.
662-
--echo # Bug#20683959 LOAD DATA INFILE IGNORES A SPECIFIC ROW SILENTLY
663-
--echo # UNDER DB CHARSET IS UTF8.
664-
--echo #
665-
666-
CREATE DATABASE d1 CHARSET latin1;
667-
USE d1;
668-
CREATE TABLE t1 (val TEXT);
669-
LOAD DATA INFILE '../../std_data/bug20683959loaddata.txt' INTO TABLE t1;
670-
SELECT COUNT(*) FROM t1;
671-
SELECT HEX(val) FROM t1;
672-
673-
CREATE DATABASE d2 CHARSET utf8;
674-
USE d2;
675-
CREATE TABLE t1 (val TEXT);
676-
--error ER_INVALID_CHARACTER_STRING
677-
LOAD DATA INFILE '../../std_data/bug20683959loaddata.txt' INTO TABLE t1;
678-
679-
DROP TABLE d1.t1, d2.t1;
680-
DROP DATABASE d1;
681-
DROP DATABASE d2;

sql/sql_load.cc

Lines changed: 28 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,8 +1363,8 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
13631363
set_if_bigger(length,line_start.length());
13641364
stack=stack_pos=(int*) sql_alloc(sizeof(int)*length);
13651365

1366-
if (!(buffer=(uchar*) my_malloc(buff_length+1,MYF(MY_WME))))
1367-
error= true; /* purecov: inspected */
1366+
if (!(buffer=(uchar*) my_malloc(buff_length+1,MYF(0))))
1367+
error=1; /* purecov: inspected */
13681368
else
13691369
{
13701370
end_of_buff=buffer+buff_length;
@@ -1556,50 +1556,37 @@ int READ_INFO::read_field()
15561556
}
15571557
}
15581558
#ifdef USE_MB
1559-
uint ml= my_mbcharlen(read_charset, chr);
1560-
if (ml == 0)
1561-
{
1562-
*to= '\0';
1563-
my_error(ER_INVALID_CHARACTER_STRING, MYF(0),
1564-
read_charset->csname, buffer);
1565-
error= true;
1566-
return 1;
1567-
}
1559+
if (my_mbcharlen(read_charset, chr) > 1 &&
1560+
to + my_mbcharlen(read_charset, chr) <= end_of_buff)
1561+
{
1562+
uchar* p= to;
1563+
int ml, i;
1564+
*to++ = chr;
15681565

1569-
if (ml > 1 &&
1570-
to + ml <= end_of_buff)
1571-
{
1572-
uchar* p= to;
1573-
*to++ = chr;
1566+
ml= my_mbcharlen(read_charset, chr);
15741567

1575-
for (uint i= 1; i < ml; i++)
1568+
for (i= 1; i < ml; i++)
1569+
{
1570+
chr= GET;
1571+
if (chr == my_b_EOF)
15761572
{
1577-
chr= GET;
1578-
if (chr == my_b_EOF)
1579-
{
1580-
/*
1581-
Need to back up the bytes already ready from illformed
1582-
multi-byte char
1583-
*/
1584-
to-= i;
1585-
goto found_eof;
1586-
}
1587-
*to++ = chr;
1573+
/*
1574+
Need to back up the bytes already ready from illformed
1575+
multi-byte char
1576+
*/
1577+
to-= i;
1578+
goto found_eof;
15881579
}
1589-
if (my_ismbchar(read_charset,
1580+
*to++ = chr;
1581+
}
1582+
if (my_ismbchar(read_charset,
15901583
(const char *)p,
15911584
(const char *)to))
1592-
continue;
1593-
for (uint i= 0; i < ml; i++)
1594-
PUSH(*--to);
1595-
chr= GET;
1596-
}
1597-
else if (ml > 1)
1598-
{
1599-
// Buffer is too small, exit while loop, and reallocate.
1600-
PUSH(chr);
1601-
break;
1602-
}
1585+
continue;
1586+
for (i= 0; i < ml; i++)
1587+
PUSH(*--to);
1588+
chr= GET;
1589+
}
16031590
#endif
16041591
*to++ = (uchar) chr;
16051592
}
@@ -1843,15 +1830,7 @@ int READ_INFO::read_value(int delim, String *val)
18431830
for (chr= GET; my_tospace(chr) != delim && chr != my_b_EOF;)
18441831
{
18451832
#ifdef USE_MB
1846-
uint ml= my_mbcharlen(read_charset, chr);
1847-
if (ml == 0)
1848-
{
1849-
chr= my_b_EOF;
1850-
val->length(0);
1851-
return chr;
1852-
}
1853-
1854-
if (ml > 1)
1833+
if (my_mbcharlen(read_charset, chr) > 1)
18551834
{
18561835
DBUG_PRINT("read_xml",("multi byte"));
18571836
int i, ml= my_mbcharlen(read_charset, chr);

0 commit comments

Comments
 (0)