[MDEV-22147] main.mysqldump fails with wrong result (truncated output) Created: 2020-04-03  Updated: 2020-05-25  Resolved: 2020-05-25

Status: Closed
Project: MariaDB Server
Component/s: Scripts & Clients, Tests
Affects Version/s: 10.2
Fix Version/s: 10.2.33

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: regression

Issue Links:
Problem/Incident
is caused by MDEV-20604 Duplicate key value is silently trunc... Closed
Relates
relates to MDEV-22545 my_vsnprintf behaves not as in C stan... Closed

 Description   

10.2 05e4a87c

main.mysqldump 'innodb'                  [ fail ]
...
@@ -3756,7 +3756,7 @@
 #
 CREATE TABLE t1(a int);
 INSERT INTO t1 VALUES (1), (2);
-mysqldump: Input filename too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+mysqldump: Input filename too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
 DROP TABLE t1;
 CREATE TABLE t2 (a INT) ENGINE=MyISAM;
 CREATE TABLE t3 (a INT) ENGINE=MyISAM;
 
mysqltest: Result content mismatch

The failure started happening in 10.2 branch after this commit:

commit cb4da5da74b7a6f2e7c4f4ed1b0e5affe45fe2a2
Author: Oleksandr Byelkin
Date:   Mon Mar 16 16:53:10 2020 +0100
 
    MDEV-20604: Duplicate key value is silently truncated to 64 characters in print_keydup_error
    
    Added indication of truncated string for "s" and "M" formats

Judging by the commit contents, probably the test result just needs to be updated.



 Comments   
Comment by Marko Mäkelä [ 2020-05-19 ]

I think that the truncation that MDEV-20604 introduced should be reviewed and avoided in some cases. Here are a few more examples:

git diff fbe2712705d464bf8488df249c36115e2c1f63f7{~,} -- mysql-test plugin/type_inet/mysql-test/type_inet

diff --git a/mysql-test/main/frm-debug.result b/mysql-test/main/frm-debug.result
index 332d7e00a8f..caf344e241d 100644
--- a/mysql-test/main/frm-debug.result
+++ b/mysql-test/main/frm-debug.result
@@ -13,8 +13,8 @@ CREATE TABLE t1 (c01 INT, c02 CHAR(20), c03 TEXT, c04 DOUBLE);
 Warnings:
 Note	1105	build_frm_image: Field data type info length: 14
 Note	1105	DBUG: [0] name='c01' type_info=''
-Note	1105	DBUG: [1] name='c02' type_info='xchar'
-Note	1105	DBUG: [2] name='c03' type_info='xblob'
+Note	1105	DBUG: [1] name='c02' type_info='xc...'
+Note	1105	DBUG: [2] name='c03' type_info='xb...'
 Note	1105	DBUG: [3] name='c04' type_info=''
 SET SESSION debug_dbug="-d,frm_data_type_info_emulate";
 SET SESSION debug_dbug="-d,frm_data_type_info";
 
diff --git a/mysql-test/main/create_utf8.result b/mysql-test/main/create_utf8.result
index e1ccf7a08d7..bb48a0c8ef5 100644
--- a/mysql-test/main/create_utf8.result
+++ b/mysql-test/main/create_utf8.result
@@ -57,9 +57,9 @@ drop trigger имя_триггера_в_кодировке_утф8_длиной_
 create trigger
 очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66
 before insert on имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48 for each row set @a:=1;
-ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длинна' is too long
+ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длин...' is too long
 drop trigger очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66;
-ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длинна' is too long
+ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длин...' is too long
 create procedure имя_процедуры_в_кодировке_утф8_длиной_больше_чем_50()
 begin
 end;
@@ -71,7 +71,7 @@ drop procedure имя_процедуры_в_кодировке_утф8_длин
 create procedure очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66()
 begin
 end;
-ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длинна' is too long
+ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длин...' is too long
 create function имя_функции_в_кодировке_утф8_длиной_больше_чем_49()
 returns int
 return 0;
@@ -83,7 +83,7 @@ drop function имя_функции_в_кодировке_утф8_длиной_
 create function очень_очень_очень_очень_очень_очень_очень_очень_длинная_строка_66()
 returns int
 return 0;
-ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длинна' is too long
+ERROR 42000: Identifier name 'очень_очень_очень_очень_очень_очень_очень_очень_длин...' is too long
 drop view имя_вью_кодировке_утф8_длиной_больше_чем_42;
 drop table имя_таблицы_в_кодировке_утф8_длиной_больше_чем_48;
 set names default;
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet6-debug.result b/plugin/type_inet/mysql-test/type_inet/type_inet6-debug.result
index 0e879aad58f..e21fb47fea8 100644
--- a/plugin/type_inet/mysql-test/type_inet/type_inet6-debug.result
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet6-debug.result
@@ -6,8 +6,8 @@ SET debug_dbug="+d,frm_data_type_info";
 CREATE TABLE t1 (c01 INET6, c02 INET6);
 Warnings:
 Note	1105	build_frm_image: Field data type info length: 14
-Note	1105	DBUG: [0] name='c01' type_info='inet6'
-Note	1105	DBUG: [1] name='c02' type_info='inet6'
+Note	1105	DBUG: [0] name='c01' type_info='in...'
+Note	1105	DBUG: [1] name='c02' type_info='in...'
 SET debug_dbug=@old_debug_dbug;
 SHOW CREATE TABLE t1;
 Table	Create Table

Especially the last one feels like a serious regression: you can no longer distinguish inet6 and inet4.

Comment by Sergei Golubchik [ 2020-05-20 ]

type_info output is fixed in MDEV-22545

Comment by Marko Mäkelä [ 2020-05-25 ]

MDEV-22545 also fixed the original test output (but broke main.mysqltest again). The reason is that neither sanja nor our Buildbot ran the test with --big-test.

I re-fixed main.mysqltest.

Generated at Thu Feb 08 09:12:33 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.