Skip to content

Commit 76ab666

Browse files
author
Tor Didriksen
committed
Bug#25474239 MISC MTR TESTS FAIL WHEN CHANGING DEFAULT CHARACTER SET FOR DATABASE
Patch #5 To repeat: ./mtr --mem --charset-for-testdb=utf8mb4 costmodel_planchange func_str func_weight_string group_min_max loaddata outfile_loaddata Fix: re-record with explicit charset for queries/tables
1 parent fa4c552 commit 76ab666

10 files changed

+384
-383
lines changed

mysql-test/r/func_str.result

Lines changed: 342 additions & 342 deletions
Large diffs are not rendered by default.

mysql-test/r/func_weight_string.result

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ hex(weight_string('aa' as binary(3)))
2525
select hex(weight_string(cast('aa' as binary(3))));
2626
hex(weight_string(cast('aa' as binary(3))))
2727
616100
28-
create table t1 select weight_string('test') as w;
28+
create table t1 charset latin1 select weight_string('test') as w;
2929
show create table t1;
3030
Table Create Table
3131
t1 CREATE TABLE `t1` (
3232
`w` varbinary(4) DEFAULT NULL
3333
) ENGINE=ENGINE DEFAULT CHARSET=latin1
3434
drop table t1;
35-
create table t1 select weight_string(repeat('t',66000)) as w;
35+
create table t1 charset latin1 select weight_string(repeat('t',66000)) as w;
3636
show create table t1;
3737
Table Create Table
3838
t1 CREATE TABLE `t1` (
@@ -51,7 +51,7 @@ coercibility(weight_string('test'))
5151
select coercibility(weight_string('test' collate latin1_swedish_ci));
5252
coercibility(weight_string('test' collate latin1_swedish_ci))
5353
0
54-
create table t1 (s1 varchar(5));
54+
create table t1 (s1 varchar(5)) charset latin1;
5555
insert into t1 values ('a'),(null);
5656
select hex(weight_string(s1)) from t1 order by s1;
5757
hex(weight_string(s1))
@@ -96,7 +96,7 @@ DROP VIEW v1;
9696
DROP VIEW v5;
9797
DROP VIEW v6;
9898
DROP TABLE t1;
99-
CREATE TABLE t1 (a VARCHAR(10));
99+
CREATE TABLE t1 (a VARCHAR(10)) charset latin1;
100100
INSERT INTO t1 VALUES ('abcd');
101101
INSERT INTO t1 VALUES ('dcba');
102102
CREATE VIEW v1 AS SELECT WEIGHT_STRING(_latin1 'ab') AS b;

mysql-test/r/group_min_max.result

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
drop table if exists t1;
22
create table t1 (
33
a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(248) default ' '
4-
);
4+
) charset latin1;
55
insert into t1 (a1, a2, b, c, d) values
66
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
77
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
@@ -44,7 +44,7 @@ test.t1 analyze status Table is already up to date
4444
drop table if exists t2;
4545
create table t2 (
4646
a1 char(64), a2 char(64) not null, b char(16), c char(16), d char(16), dummy char(248) default ' '
47-
);
47+
) charset latin1;
4848
insert into t2 select * from t1;
4949
insert into t2 (a1, a2, b, c, d) values
5050
('a','a',NULL,'a777','xyz'),('a','a',NULL,'a888','xyz'),('a','a',NULL,'a999','xyz'),
@@ -72,7 +72,7 @@ test.t2 analyze status Table is already up to date
7272
drop table if exists t3;
7373
create table t3 (
7474
a1 char(1), a2 char(1), b char(1), c char(4) not null, d char(3), dummy char(1) default ' '
75-
);
75+
) charset latin1;
7676
insert into t3 (a1, a2, b, c, d) values
7777
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
7878
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
@@ -2328,7 +2328,7 @@ c1 c2
23282328
30 8
23292329
30 9
23302330
drop table t1;
2331-
CREATE TABLE t1 (a varchar(5), b int(11), PRIMARY KEY (a,b));
2331+
CREATE TABLE t1 (a varchar(5), b int(11), PRIMARY KEY (a,b)) charset utf8mb4;
23322332
INSERT INTO t1 VALUES ('AA',1), ('AA',2), ('AA',3), ('BB',1), ('AA',4);
23332333
OPTIMIZE TABLE t1;
23342334
Table Op Msg_type Msg_text
@@ -2341,12 +2341,12 @@ a
23412341
BB
23422342
EXPLAIN SELECT a FROM t1 WHERE a='AA' GROUP BY a;
23432343
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
2344-
1 SIMPLE t1 NULL range PRIMARY PRIMARY 7 NULL 1 100.00 Using where; Using index for group-by
2344+
1 SIMPLE t1 NULL range PRIMARY PRIMARY 22 NULL 1 100.00 Using where; Using index for group-by
23452345
Warnings:
23462346
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = 'AA') group by `test`.`t1`.`a`
23472347
EXPLAIN SELECT a FROM t1 WHERE a='BB' GROUP BY a;
23482348
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
2349-
1 SIMPLE t1 NULL ref PRIMARY PRIMARY 7 const 1 100.00 Using index
2349+
1 SIMPLE t1 NULL ref PRIMARY PRIMARY 22 const 1 100.00 Using index
23502350
Warnings:
23512351
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = 'BB') group by `test`.`t1`.`a`
23522352
SELECT DISTINCT a FROM t1 WHERE a='BB';
@@ -2396,14 +2396,14 @@ COUNT(DISTINCT a)
23962396
1
23972397
DROP TABLE t1;
23982398
DROP PROCEDURE a;
2399-
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a));
2399+
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a)) charset utf8mb4;
24002400
INSERT INTO t1 (a) VALUES
24012401
(''), ('CENTRAL'), ('EASTERN'), ('GREATER LONDON'),
24022402
('NORTH CENTRAL'), ('NORTH EAST'), ('NORTH WEST'), ('SCOTLAND'),
24032403
('SOUTH EAST'), ('SOUTH WEST'), ('WESTERN');
24042404
EXPLAIN SELECT DISTINCT a,a FROM t1 ORDER BY a;
24052405
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
2406-
1 SIMPLE t1 NULL index PRIMARY PRIMARY 66 NULL 11 100.00 Using index
2406+
1 SIMPLE t1 NULL index PRIMARY PRIMARY 258 NULL 11 100.00 Using index
24072407
Warnings:
24082408
Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a`,`test`.`t1`.`a` AS `a` from `test`.`t1` order by `test`.`t1`.`a`
24092409
SELECT DISTINCT a,a FROM t1 ORDER BY a;
@@ -3605,7 +3605,7 @@ CREATE TABLE t1 (
36053605
f1 int(11) NOT NULL DEFAULT '0',
36063606
f2 char(1) NOT NULL DEFAULT '',
36073607
PRIMARY KEY (f1,f2)
3608-
) ;
3608+
) charset utf8mb4;
36093609
insert into t1 values(1,'A'),(1 , 'B'), (1, 'C'), (2, 'A'),
36103610
(3, 'A'), (3, 'B'), (3, 'C'), (3, 'D');
36113611
SELECT f1, COUNT(DISTINCT f2) FROM t1 GROUP BY f1;
@@ -3615,7 +3615,7 @@ f1 COUNT(DISTINCT f2)
36153615
3 4
36163616
explain SELECT f1, COUNT(DISTINCT f2) FROM t1 GROUP BY f1;
36173617
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
3618-
1 SIMPLE t1 NULL range PRIMARY PRIMARY 5 NULL 9 100.00 Using index for group-by (scanning)
3618+
1 SIMPLE t1 NULL range PRIMARY PRIMARY 8 NULL 9 100.00 Using index for group-by (scanning)
36193619
Warnings:
36203620
Note 1003 /* select#1 */ select `test`.`t1`.`f1` AS `f1`,count(distinct `test`.`t1`.`f2`) AS `COUNT(DISTINCT f2)` from `test`.`t1` group by `test`.`t1`.`f1`
36213621
drop table t1;

mysql-test/r/loaddata.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Field 3,'Field 4|
4242
|Field 5' ,'Field 6| NULL
4343
|Field 6| | 'Field 7'|
4444
drop table t1;
45-
create table t1 (a int, b char(10));
45+
create table t1 (a int, b char(10)) charset latin1;
4646
load data infile '../../std_data/loaddata3.dat' ignore into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
4747
Warnings:
4848
Warning 1366 Incorrect integer value: 'error ' for column 'a' at row 3

mysql-test/r/outfile_loaddata.result

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ DROP TABLE t1;
7979
#
8080
# Bug#32533: SELECT INTO OUTFILE never escapes multibyte character
8181
#
82-
CREATE TABLE t1 (c1 VARCHAR(256));
82+
CREATE TABLE t1 (c1 VARCHAR(256) charset latin1);
8383
INSERT INTO t1 VALUES (0xC3);
8484
SELECT HEX(c1) FROM t1;
8585
HEX(c1)
@@ -89,7 +89,7 @@ TRUNCATE t1;
8989
SELECT HEX(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug32533.txt'));
9090
HEX(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug32533.txt'))
9191
C35CC3C30A
92-
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug32533.txt' INTO TABLE t1 FIELDS ENCLOSED BY 0xC3;
92+
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug32533.txt' INTO TABLE t1 CHARACTER SET latin1 FIELDS ENCLOSED BY 0xC3;
9393
SELECT HEX(c1) FROM t1;
9494
HEX(c1)
9595
C3

mysql-test/t/func_str.test

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_la
390390
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
391391
select collation(encode('abcd','ab')), coercibility(encode('abcd','ab'));
392392

393-
create table t1
393+
create table t1 charset latin1
394394
select
395395
bin(130),
396396
oct(130),
@@ -465,7 +465,7 @@ select SUBSTR('abcdefg',1,-1) FROM DUAL;
465465
# Test that fix_fields doesn't follow to upper level (to comparison)
466466
# when an error on a lower level (in concat) has accured:
467467
#
468-
create table t7 (s1 char);
468+
create table t7 (s1 char) charset latin1;
469469
--error 1267
470470
select * from t7
471471
where concat(s1 collate latin1_general_ci,s1 collate latin1_swedish_ci) = 'AA';
@@ -615,7 +615,7 @@ SELECT CHAR_LENGTH(CHAR(NULL,121,83,81,'76')) as my_column;
615615
# Test case for bug #8669: null aes_decrypt result in order by query
616616
#
617617

618-
CREATE TABLE t1 (id int PRIMARY KEY, str char(255) NOT NULL);
618+
CREATE TABLE t1 (id int PRIMARY KEY, str char(255) NOT NULL) charset latin1;
619619
CREATE TABLE t2 (id int NOT NULL UNIQUE);
620620
INSERT INTO t2 VALUES (1),(2);
621621
INSERT INTO t1 VALUES (1, aes_encrypt('foo', 'bar'));
@@ -741,7 +741,7 @@ drop table t1;
741741
#
742742

743743
select load_file("lkjlkj");
744-
select ifnull(load_file("lkjlkj"),"it's null");
744+
select ifnull(load_file("lkjlkj"),"it is null");
745745

746746
#
747747
# Bug#15351: Wrong collation used for comparison of md5() and sha()
@@ -846,7 +846,7 @@ select "18383815659218730760" + 0;
846846
# Bug #21698: substitution of a string field for a constant under a function
847847
#
848848

849-
CREATE TABLE t1 (code varchar(10));
849+
CREATE TABLE t1 (code varchar(10)) charset utf8mb4;
850850
INSERT INTO t1 VALUES ('a12'), ('A12'), ('a13');
851851

852852
SELECT ASCII(code), code FROM t1 WHERE code='A12';
@@ -858,7 +858,7 @@ SELECT LENGTH(code), code FROM t1 WHERE code='A12';
858858
SELECT LENGTH(code), code FROM t1 WHERE code='A12' AND LENGTH(code)=5;
859859

860860
ALTER TABLE t1 ADD INDEX (code);
861-
CREATE TABLE t2 (id varchar(10) PRIMARY KEY);
861+
CREATE TABLE t2 (id varchar(10) PRIMARY KEY) charset utf8mb4;
862862
INSERT INTO t2 VALUES ('a11'), ('a12'), ('a13'), ('a14');
863863

864864
SELECT * FROM t1 INNER JOIN t2 ON t1.code=t2.id
@@ -1428,7 +1428,7 @@ SELECT REPEAT('1', DAY(FROM_UNIXTIME(-1)));
14281428
SELECT RPAD('hi', DAY(FROM_UNIXTIME(-1)),'?');
14291429
SELECT LPAD('hi', DAY(FROM_UNIXTIME(-1)),'?');
14301430

1431-
CREATE TABLE t1
1431+
CREATE TABLE t1 charset utf8mb4
14321432
SELECT SUBSTRING('1', DAY(FROM_UNIXTIME(-1))) AS f1,
14331433
LEFT('1', DAY(FROM_UNIXTIME(-1))) AS f2,
14341434
RIGHT('1', DAY(FROM_UNIXTIME(-1))) AS f3,
@@ -1500,7 +1500,7 @@ SELECT format(123, 1, 'Non-existent-locale');
15001500
--echo #
15011501
SELECT FORMAT(123.33, 2, 'no_NO'), FORMAT(1123.33, 2, 'no_NO');
15021502
SELECT FORMAT(12333e-2, 2, 'no_NO'), FORMAT(112333e-2, 2, 'no_NO');
1503-
CREATE TABLE t1 AS SELECT format(123,2,'no_NO');
1503+
CREATE TABLE t1 charset utf8mb4 AS SELECT format(123,2,'no_NO');
15041504
SHOW CREATE TABLE t1;
15051505
SELECT * FROM t1;
15061506
DROP TABLE t1;
@@ -1585,10 +1585,10 @@ let $1=64;
15851585
while($1)
15861586
{
15871587
dec $1;
1588-
eval CREATE TABLE t1 AS SELECT TO_BASE64(REPEAT('a',$1)) AS to_base64;
1588+
eval CREATE TABLE t1 charset utf8mb4 AS SELECT TO_BASE64(REPEAT('a',$1)) AS to_base64;
15891589
SHOW CREATE TABLE t1;
15901590
SELECT to_base64, LENGTH(to_base64) FROM t1;
1591-
CREATE TABLE t2 AS SELECT from_base64(to_base64) AS from_base64 FROM t1;
1591+
CREATE TABLE t2 charset utf8mb4 AS SELECT from_base64(to_base64) AS from_base64 FROM t1;
15921592
SHOW CREATE TABLE t2;
15931593
SELECT from_base64, LENGTH(from_base64) FROM t2;
15941594
DROP TABLE t2;

mysql-test/t/func_weight_string.test

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ select hex(weight_string(cast('aa' as binary(3))));
5454
# then the result data type is VARBINARY. Otherwise
5555
# the result data type is BLOB.
5656
#
57-
create table t1 select weight_string('test') as w;
57+
create table t1 charset latin1 select weight_string('test') as w;
5858

5959
#Replace default engine value with static engine string
6060
--replace_result $DEFAULT_ENGINE ENGINE
6161
show create table t1;
6262
drop table t1;
63-
create table t1 select weight_string(repeat('t',66000)) as w;
63+
create table t1 charset latin1 select weight_string(repeat('t',66000)) as w;
6464

6565
#Replace default engine value with static engine string
6666
--replace_result $DEFAULT_ENGINE ENGINE
@@ -87,7 +87,7 @@ select coercibility(weight_string('test' collate latin1_swedish_ci));
8787
# Bug#33663 Character sets: weight_string function,
8888
# varchar column, wrong result
8989
#
90-
create table t1 (s1 varchar(5));
90+
create table t1 (s1 varchar(5)) charset latin1;
9191
insert into t1 values ('a'),(null);
9292
select hex(weight_string(s1)) from t1 order by s1;
9393
drop table t1;
@@ -117,7 +117,7 @@ DROP VIEW v1;
117117
DROP VIEW v5;
118118
DROP VIEW v6;
119119
DROP TABLE t1;
120-
CREATE TABLE t1 (a VARCHAR(10));
120+
CREATE TABLE t1 (a VARCHAR(10)) charset latin1;
121121
INSERT INTO t1 VALUES ('abcd');
122122
INSERT INTO t1 VALUES ('dcba');
123123
CREATE VIEW v1 AS SELECT WEIGHT_STRING(_latin1 'ab') AS b;

mysql-test/t/group_min_max.test

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ drop table if exists t1;
2121

2222
create table t1 (
2323
a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(248) default ' '
24-
);
24+
) charset latin1;
2525

2626
insert into t1 (a1, a2, b, c, d) values
2727
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
@@ -71,7 +71,7 @@ drop table if exists t2;
7171

7272
create table t2 (
7373
a1 char(64), a2 char(64) not null, b char(16), c char(16), d char(16), dummy char(248) default ' '
74-
);
74+
) charset latin1;
7575
insert into t2 select * from t1;
7676
# add few rows with NULL's in the MIN/MAX column
7777
insert into t2 (a1, a2, b, c, d) values
@@ -108,7 +108,7 @@ drop table if exists t3;
108108

109109
create table t3 (
110110
a1 char(1), a2 char(1), b char(1), c char(4) not null, d char(3), dummy char(1) default ' '
111-
);
111+
) charset latin1;
112112

113113
insert into t3 (a1, a2, b, c, d) values
114114
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
@@ -727,7 +727,7 @@ drop table t1;
727727
# returns impossible range
728728
#
729729

730-
CREATE TABLE t1 (a varchar(5), b int(11), PRIMARY KEY (a,b));
730+
CREATE TABLE t1 (a varchar(5), b int(11), PRIMARY KEY (a,b)) charset utf8mb4;
731731
INSERT INTO t1 VALUES ('AA',1), ('AA',2), ('AA',3), ('BB',1), ('AA',4);
732732
OPTIMIZE TABLE t1;
733733

@@ -785,7 +785,7 @@ DROP PROCEDURE a;
785785
# Bug #18068: SELECT DISTINCT
786786
#
787787

788-
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a));
788+
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a)) charset utf8mb4;
789789

790790
INSERT INTO t1 (a) VALUES
791791
(''), ('CENTRAL'), ('EASTERN'), ('GREATER LONDON'),
@@ -1331,7 +1331,7 @@ CREATE TABLE t1 (
13311331
f1 int(11) NOT NULL DEFAULT '0',
13321332
f2 char(1) NOT NULL DEFAULT '',
13331333
PRIMARY KEY (f1,f2)
1334-
) ;
1334+
) charset utf8mb4;
13351335
insert into t1 values(1,'A'),(1 , 'B'), (1, 'C'), (2, 'A'),
13361336
(3, 'A'), (3, 'B'), (3, 'C'), (3, 'D');
13371337

mysql-test/t/loaddata.test

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ load data infile '../../std_data/loaddata2.dat' ignore into table t1 fields term
2121
select concat('|',a,'|'), concat('|',b,'|') from t1;
2222
drop table t1;
2323

24-
create table t1 (a int, b char(10));
24+
create table t1 (a int, b char(10)) charset latin1;
2525
load data infile '../../std_data/loaddata3.dat' ignore into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
2626
select * from t1;
2727
truncate table t1;
@@ -661,8 +661,9 @@ SET sql_mode=default;
661661
--copy_file $EXE_MYSQL $MYSQLTEST_VARDIR/mysql
662662

663663
--echo # Without fix, load data hangs forever.
664+
# The actual error code depends on character set
664665
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
665-
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,1000
666+
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,ER_INVALID_CHARACTER_STRING
666667
eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/mysql' REPLACE INTO TABLE t1
667668
FIELDS TERMINATED BY 't' LINES TERMINATED BY '';
668669

mysql-test/t/outfile_loaddata.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ DROP TABLE t1;
100100
--echo # Bug#32533: SELECT INTO OUTFILE never escapes multibyte character
101101
--echo #
102102

103-
CREATE TABLE t1 (c1 VARCHAR(256));
103+
CREATE TABLE t1 (c1 VARCHAR(256) charset latin1);
104104
INSERT INTO t1 VALUES (0xC3);
105105
SELECT HEX(c1) FROM t1;
106106

@@ -119,7 +119,7 @@ TRUNCATE t1;
119119
# Disabled by WL#5094
120120
--disable_warnings
121121
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
122-
--eval LOAD DATA INFILE '$file' INTO TABLE t1 FIELDS ENCLOSED BY 0xC3
122+
--eval LOAD DATA INFILE '$file' INTO TABLE t1 CHARACTER SET latin1 FIELDS ENCLOSED BY 0xC3
123123
--enable_warnings
124124
SELECT HEX(c1) FROM t1;
125125

0 commit comments

Comments
 (0)