[MDEV-31050] No Duplicate entry error on ALTER TABLE ADD UNIQUE KEY for Aria table Created: 2023-04-13  Updated: 2023-11-28

Status: Open
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Replication, Storage Engine - Aria
Affects Version/s: 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 11.0
Fix Version/s: 10.4, 10.5, 10.6, 10.11, 11.0

Type: Bug Priority: Major
Reporter: Angelique Sklavounos (Inactive) Assignee: Michael Widenius
Resolution: Unresolved Votes: 1
Labels: None

Issue Links:
Relates
relates to MDEV-31052 Parallel slave hangs with binlog_alte... Open
relates to MDEV-18745 DDL Algorithm <> Copy could break row... Confirmed

 Description   

I originally came across this during RQG Replication testing for MDEV-16329, but I think this is more an issue with the Aria engine rather than Replication. In the test case below, rpl_end.inc will time out because the slave SQL thread has stopped with the 1062 error as it cannot execute the ALTER statement that was successful on the primary.

With MyISAM and InnoDB, the ALTER TABLE is not allowed on the primary with ER_DUP_ENTRY (1062). If the CREATE TABLE statement defines the key as UNIQUE, then ER_DUP_ENTRY (1062) will occur upon INSERT with the Aria engine.

--source include/master-slave.inc
--source include/have_aria.inc
 
--connection master
USE test;
# No replication error with MyISAM and InnoDB
# Need ROW_FORMAT DYNAMIC for replication error
CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria;
LOCK TABLE t9 WRITE;
INSERT INTO t9 () VALUES (),(),();
FLUSH TABLES;
ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY;
# or fails with the following in bb-11.0-oalter (1d16113)
# ALTER ONLINE TABLE t9 ADD UNIQUE (`col_int_nokey`);
--connection slave
--connection master
DROP table t9;
--source include/rpl_end.inc

Last_SQL_Errno	1062
Last_SQL_Error	Error 'Duplicate entry '0' for key 'col_int_nokey'' on query. Default database: 'test'. Query: 'ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY'
...
Wrong value for Last_SQL_Errno. Expected '0', got '1062'

MDEV-18745 looked similar based on the queries.



 Comments   
Comment by Nikita Malyavin [ 2023-04-14 ]

I can't see how is this supposed to be connected with online alter table. I'm getting the same on the fresh 11.0:

1 nik@foo ~/mariadb/bld/mysql-test (git)-[remotes/origin/bb-11.0-oalter~71] % git co 11.0
M	include/my_pthread.h
Previous HEAD position was 7c5e90ba17b rename tests
Switched to branch '11.0'
Your branch is up to date with 'origin/11.0'.
nik@foo ~/mariadb/bld/mysql-test (git)-[11.0] % git pull
remote: Enumerating objects: 1803, done.
remote: Counting objects: 100% (1686/1686), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 1803 (delta 1299), reused 1602 (delta 1256), pack-reused 117
Receiving objects: 100% (1803/1803), 7.12 MiB | 4.30 MiB/s, done.
Resolving deltas: 100% (1311/1311), completed with 545 local objects.
Already up to date.
nik@foo ~/mariadb/bld/mysql-test (git)-[11.0] % ./ninja && ./mtr --mem gcol.virt 
ninja: Entering directory `..'
[0/1] Re-running CMake...
-- Running cmake version 3.26.2
-- MariaDB 11.0.2
-- Packaging as: mariadb-11.0.2-Linux-x86_64
-- Updating submodules
Submodule path 'storage/columnstore/columnstore': checked out '58da5eea954dbbce8c954c323dd2c8247e54303e'
== Configuring MariaDB Connector/C
-- SYSTEM_LIBS: dl;m;dl;m;/usr/lib/libssl.so;/usr/lib/libcrypto.so;/usr/lib/libz.so
-- Dynamic column API support: ON
-- Configuring done (1.1s)
-- Generating done (0.2s)
-- Build files have been written to: /home/nik/mariadb/bld
[322/1091] [BISON][gen_mariadb_cc_hh] Building parser with bison 3.8.2
/home/nik/mariadb/bld/sql/yy_mariadb.cc:35600: warning: suspicious sequence in the output: b4_bin [-Wother]
[324/1091] [BISON][gen_oracle_cc_hh] Building parser with bison 3.8.2
/home/nik/mariadb/bld/sql/yy_oracle.cc:35003: warning: suspicious sequence in the output: b4_bin [-Wother]
[1091/1091] Linking CXX executable sql/mariadbd
./ninja  4390.52s user 315.64s system 1158% cpu 6:46.18 total
Logging: /home/nik/mariadb/mysql-test/mariadb-test-run.pl  --mem gcol.virt
VS config: 
vardir: /home/nik/mariadb/bld/mysql-test/var
Checking leftover processes...
Removing old var directory...
Creating var directory '/home/nik/mariadb/bld/mysql-test/var'...
 - symlinking 'var' to '/dev/shm/var_auto_2e61'
Checking supported features...
MariaDB Version 11.0.2-MariaDB-debug
 - SSL connections supported
 - binaries are debug compiled
Collecting tests...
Installing system database...
 
==============================================================================
 
TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------
 
worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019
include/master-slave.inc
[connection master]
connection master;
USE test;
CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria;
LOCK TABLE t9 WRITE;
INSERT INTO t9 () VALUES (),(),();
FLUSH TABLES;
ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY, lock=exclusive;
select * from t9;
col_int_nokey
connection slave;
connection master;
DROP table t9;
include/rpl_end.inc
gcol.virt 'innodb,mix'                   [ fail ]
        Test ended at 2023-04-14 18:48:46
 
CURRENT_TEST: gcol.virt
analyze: sync_with_master
mysqltest: In included file "./include/rpl_sync.inc": 
included from ./include/rpl_end.inc at line 80:
included from /home/nik/mariadb/mysql-test/suite/gcol/t/virt.test at line 26:
At line 157: sync_slave_with_master failed: 'select master_pos_wait('master-bin.000001', 1228, 300, '')' returned NULL indicating slave SQL thread failure
 
 
 == /home/nik/mariadb/bld/mysql-test/var/tmp/analyze-sync_with_master-mysqld.2.err ==
 
############################## default ##############################
 
**** SHOW WARNINGS on default ****
SHOW WARNINGS;
Level	Code	Message
 
**** SELECT replication-related variables on default ****
SELECT NOW(), @@SERVER_ID;
NOW()	@@SERVER_ID
2023-04-14 18:48:46	2
 
**** SHOW SLAVE STATUS on default ****
SHOW SLAVE STATUS;
Slave_IO_State	Waiting for master to send event
Master_Host	127.0.0.1
Master_User	root
Master_Port	16000
Connect_Retry	1
Master_Log_File	master-bin.000001
Read_Master_Log_Pos	1228
Relay_Log_File	slave-relay-bin.000002
Relay_Log_Pos	1176
Relay_Master_Log_File	master-bin.000001
Slave_IO_Running	Yes
Slave_SQL_Running	No
Replicate_Rewrite_DB	
Replicate_Do_DB	
Replicate_Ignore_DB	
Replicate_Do_Table	
Replicate_Ignore_Table	
Replicate_Wild_Do_Table	
Replicate_Wild_Ignore_Table	
Last_Errno	1062
Last_Error	Error 'Duplicate entry '0' for key 'col_int_nokey'' on query. Default database: 'test'. Query: 'ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY, lock=exclusive'
Skip_Counter	0
Exec_Master_Log_Pos	876
Relay_Log_Space	1837
Until_Condition	None
Until_Log_File	
Until_Log_Pos	0
Master_SSL_Allowed	No
Master_SSL_CA_File	
Master_SSL_CA_Path	
Master_SSL_Cert	
Master_SSL_Cipher	
Master_SSL_Key	
Seconds_Behind_Master	NULL
Master_SSL_Verify_Server_Cert	No
Last_IO_Errno	0
Last_IO_Error	
Last_SQL_Errno	1062
Last_SQL_Error	Error 'Duplicate entry '0' for key 'col_int_nokey'' on query. Default database: 'test'. Query: 'ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY, lock=exclusive'
Replicate_Ignore_Server_Ids	
Master_Server_Id	1
Master_SSL_Crl	
Master_SSL_Crlpath	
Using_Gtid	Slave_Pos
Gtid_IO_Pos	0-1-5
Replicate_Do_Domain_Ids	
Replicate_Ignore_Domain_Ids	
Parallel_Mode	optimistic
SQL_Delay	0
SQL_Remaining_Delay	NULL
Slave_SQL_Running_State	
Slave_DDL_Groups	3
Slave_Non_Transactional_Groups	1
Slave_Transactional_Groups	0
 
**** SHOW MASTER STATUS on default ****
SHOW MASTER STATUS;
File	slave-bin.000001
Position	875
Binlog_Do_DB	
Binlog_Ignore_DB	
 
**** SHOW SLAVE HOSTS on default ****
SHOW SLAVE HOSTS;
 
**** SHOW PROCESSLIST on default ****
SHOW PROCESSLIST;
Id	User	Host	db	Command	Time	State	Info	Progress
7	system user		NULL	Slave_IO	0	Waiting for master to send event	NULL	0.000
11	root	localhost	NULL	Query	0	starting	SHOW PROCESSLIST	0.000
 
**** SHOW BINARY LOGS on default ****
SHOW BINARY LOGS;
Log_name	File_size
slave-bin.000001	875
 
**** SHOW BINLOG EVENTS on default ****
binlog_name = 'slave-bin.000001'
SHOW BINLOG EVENTS IN 'slave-bin.000001';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
slave-bin.000001	4	Format_desc	2	256	Server ver: 11.0.2-MariaDB-debug-log, Binlog ver: 4
slave-bin.000001	256	Gtid_list	2	285	[]
slave-bin.000001	285	Binlog_checkpoint	2	328	slave-bin.000001
slave-bin.000001	328	Gtid	1	370	GTID 0-1-1
slave-bin.000001	370	Query	1	539	use `test`; CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria
slave-bin.000001	539	Gtid	1	581	BEGIN GTID 0-1-2
slave-bin.000001	581	Query	1	681	use `test`; INSERT INTO t9 () VALUES (),(),()
slave-bin.000001	681	Query	1	754	COMMIT
slave-bin.000001	754	Gtid	1	796	GTID 0-1-3
slave-bin.000001	796	Query	1	875	use `test`; FLUSH TABLES
 
**** SHOW RELAYLOG EVENTS on default ****
relaylog_name = 'slave-relay-bin.000002'
SHOW RELAYLOG EVENTS IN 'slave-relay-bin.000002';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
slave-relay-bin.000002	4	Format_desc	2	256	Server ver: 11.0.2-MariaDB-debug-log, Binlog ver: 4
slave-relay-bin.000002	256	Rotate	1	0	master-bin.000001;pos=4
slave-relay-bin.000002	304	Format_desc	1	256	Server ver: 11.0.2-MariaDB-debug-log, Binlog ver: 4
slave-relay-bin.000002	556	Gtid_list	1	285	[]
slave-relay-bin.000002	585	Binlog_checkpoint	1	329	master-bin.000001
slave-relay-bin.000002	629	Gtid	1	371	GTID 0-1-1
slave-relay-bin.000002	671	Query	1	540	use `test`; CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria
slave-relay-bin.000002	840	Gtid	1	582	BEGIN GTID 0-1-2
slave-relay-bin.000002	882	Query	1	682	use `test`; INSERT INTO t9 () VALUES (),(),()
slave-relay-bin.000002	982	Query	1	755	COMMIT
slave-relay-bin.000002	1055	Gtid	1	797	GTID 0-1-3
slave-relay-bin.000002	1097	Query	1	876	use `test`; FLUSH TABLES
slave-relay-bin.000002	1176	Gtid	1	918	GTID 0-1-4
slave-relay-bin.000002	1218	Query	1	1069	use `test`; ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY, lock=exclusive
slave-relay-bin.000002	1369	Gtid	1	1111	GTID 0-1-5
slave-relay-bin.000002	1411	Query	1	1228	use `test`; DROP TABLE `t9` /* generated by server */
connection default;
 
 == /home/nik/mariadb/bld/mysql-test/var/tmp/analyze-sync_with_master-mysqld.1.err ==
 
############################## default ##############################
 
**** SHOW WARNINGS on default ****
SHOW WARNINGS;
Level	Code	Message
 
**** SELECT replication-related variables on default ****
SELECT NOW(), @@SERVER_ID;
NOW()	@@SERVER_ID
2023-04-14 18:48:46	1
 
**** SHOW SLAVE STATUS on default ****
SHOW SLAVE STATUS;
 
**** SHOW MASTER STATUS on default ****
SHOW MASTER STATUS;
File	master-bin.000001
Position	1228
Binlog_Do_DB	
Binlog_Ignore_DB	
 
**** SHOW SLAVE HOSTS on default ****
SHOW SLAVE HOSTS;
Server_id	2
Host	127.0.0.1
Port	16001
Master_id	1
 
**** SHOW PROCESSLIST on default ****
SHOW PROCESSLIST;
Id	User	Host	db	Command	Time	State	Info	Progress
8	root	localhost:42166	NULL	Binlog Dump	0	Master has sent all binlog to slave; waiting for more updates	NULL	0.000
11	root	localhost	NULL	Query	0	starting	SHOW PROCESSLIST	0.000
 
**** SHOW BINARY LOGS on default ****
SHOW BINARY LOGS;
Log_name	File_size
master-bin.000001	1228
 
**** SHOW BINLOG EVENTS on default ****
binlog_name = 'master-bin.000001'
SHOW BINLOG EVENTS IN 'master-bin.000001';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	4	Format_desc	1	256	Server ver: 11.0.2-MariaDB-debug-log, Binlog ver: 4
master-bin.000001	256	Gtid_list	1	285	[]
master-bin.000001	285	Binlog_checkpoint	1	329	master-bin.000001
master-bin.000001	329	Gtid	1	371	GTID 0-1-1
master-bin.000001	371	Query	1	540	use `test`; CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria
master-bin.000001	540	Gtid	1	582	BEGIN GTID 0-1-2
master-bin.000001	582	Query	1	682	use `test`; INSERT INTO t9 () VALUES (),(),()
master-bin.000001	682	Query	1	755	COMMIT
master-bin.000001	755	Gtid	1	797	GTID 0-1-3
master-bin.000001	797	Query	1	876	use `test`; FLUSH TABLES
master-bin.000001	876	Gtid	1	918	GTID 0-1-4
master-bin.000001	918	Query	1	1069	use `test`; ALTER TABLE t9 ADD UNIQUE (`col_int_nokey`), ALGORITHM=COPY, lock=exclusive
master-bin.000001	1069	Gtid	1	1111	GTID 0-1-5
master-bin.000001	1111	Query	1	1228	use `test`; DROP TABLE `t9` /* generated by server */
 
**** SHOW RELAYLOG EVENTS on default ****
relaylog_name = 'No such row'
SHOW RELAYLOG EVENTS IN 'No such row';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
connection default;
 
 
 
 - saving '/home/nik/mariadb/bld/mysql-test/var/log/gcol.virt-innodb,mix/' to '/home/nik/mariadb/bld/mysql-test/var/log/gcol.virt-innodb,mix/'
 
Only  1  of 3 completed.
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.000 of 4 seconds executing testcases
 
Failure: Failed 1/1 tests, 0.00% were successful.
 
Failing test(s): gcol.virt
 
The log files in var/log may give you some hint of what went wrong.
 
If you want to report this error, please read first the documentation
at http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html
 
mysql-test-run: *** ERROR: there were failing test cases

Comment by Nikita Malyavin [ 2023-04-14 ]

Okay, uncommenting the ONLINE version doesn't change things on the latest bb-11.0-oalter (b2b5c9354b6e)

angelique.sklavounos Please confirm the problem you noticed is not there anymore

nik@foo ~/mariadb/bld/mysql-test (git)-[bb-11.0-oalter] % ./ninja && ./mtr --mem gcol.virt 
ninja: Entering directory `..'
[175/175] Linking CXX executable tests/async_queries
./ninja  24.37s user 13.13s system 983% cpu 3.812 total
Logging: /home/nik/mariadb/mysql-test/mariadb-test-run.pl  --mem gcol.virt
VS config: 
vardir: /home/nik/mariadb/bld/mysql-test/var
Checking leftover processes...
Removing old var directory...
Creating var directory '/home/nik/mariadb/bld/mysql-test/var'...
 - symlinking 'var' to '/dev/shm/var_auto_w9Bu'
Checking supported features...
MariaDB Version 11.0.1-MariaDB-debug
 - SSL connections supported
 - binaries are debug compiled
Collecting tests...
Installing system database...
 
==============================================================================
 
TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------
 
worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019
include/master-slave.inc
[connection master]
connection master;
USE test;
CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria;
LOCK TABLE t9 WRITE;
INSERT INTO t9 () VALUES (),(),();
FLUSH TABLES;
ALTER ONLINE TABLE t9 ADD UNIQUE (`col_int_nokey`);
select * from t9;
col_int_nokey
connection slave;
connection master;
DROP table t9;
include/rpl_end.inc
gcol.virt 'innodb,mix'                   [ fail ]
        Test ended at 2023-04-14 19:01:47
 
CURRENT_TEST: gcol.virt
analyze: sync_with_master
mysqltest: In included file "./include/rpl_sync.inc": 
included from ./include/rpl_end.inc at line 80:
included from /home/nik/mariadb/mysql-test/suite/gcol/t/virt.test at line 26:
At line 157: sync_slave_with_master failed: 'select master_pos_wait('master-bin.000001', 1203, 300, '')' returned NULL indicating slave SQL thread failure
 
 
 == /home/nik/mariadb/bld/mysql-test/var/tmp/analyze-sync_with_master-mysqld.1.err ==
 
############################## default ##############################
 
**** SHOW WARNINGS on default ****
SHOW WARNINGS;
Level	Code	Message
 
**** SELECT replication-related variables on default ****
SELECT NOW(), @@SERVER_ID;
NOW()	@@SERVER_ID
2023-04-14 19:01:47	1
 
**** SHOW SLAVE STATUS on default ****
SHOW SLAVE STATUS;
 
**** SHOW MASTER STATUS on default ****
SHOW MASTER STATUS;
File	master-bin.000001
Position	1203
Binlog_Do_DB	
Binlog_Ignore_DB	
 
**** SHOW SLAVE HOSTS on default ****
SHOW SLAVE HOSTS;
Server_id	2
Host	127.0.0.1
Port	16001
Master_id	1
 
**** SHOW PROCESSLIST on default ****
SHOW PROCESSLIST;
Id	User	Host	db	Command	Time	State	Info	Progress
8	root	localhost:54014	NULL	Binlog Dump	0	Master has sent all binlog to slave; waiting for more updates	NULL	0.000
11	root	localhost	NULL	Query	0	starting	SHOW PROCESSLIST	0.000
 
**** SHOW BINARY LOGS on default ****
SHOW BINARY LOGS;
Log_name	File_size
master-bin.000001	1203
 
**** SHOW BINLOG EVENTS on default ****
binlog_name = 'master-bin.000001'
SHOW BINLOG EVENTS IN 'master-bin.000001';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	4	Format_desc	1	256	Server ver: 11.0.1-MariaDB-debug-log, Binlog ver: 4
master-bin.000001	256	Gtid_list	1	285	[]
master-bin.000001	285	Binlog_checkpoint	1	329	master-bin.000001
master-bin.000001	329	Gtid	1	371	GTID 0-1-1
master-bin.000001	371	Query	1	540	use `test`; CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria
master-bin.000001	540	Gtid	1	582	BEGIN GTID 0-1-2
master-bin.000001	582	Query	1	682	use `test`; INSERT INTO t9 () VALUES (),(),()
master-bin.000001	682	Query	1	755	COMMIT
master-bin.000001	755	Gtid	1	797	GTID 0-1-3
master-bin.000001	797	Query	1	876	use `test`; FLUSH TABLES
master-bin.000001	876	Gtid	1	918	GTID 0-1-4
master-bin.000001	918	Query	1	1044	use `test`; ALTER ONLINE TABLE t9 ADD UNIQUE (`col_int_nokey`)
master-bin.000001	1044	Gtid	1	1086	GTID 0-1-5
master-bin.000001	1086	Query	1	1203	use `test`; DROP TABLE `t9` /* generated by server */
 
**** SHOW RELAYLOG EVENTS on default ****
relaylog_name = 'No such row'
SHOW RELAYLOG EVENTS IN 'No such row';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
connection default;
 
 == /home/nik/mariadb/bld/mysql-test/var/tmp/analyze-sync_with_master-mysqld.2.err ==
 
############################## default ##############################
 
**** SHOW WARNINGS on default ****
SHOW WARNINGS;
Level	Code	Message
 
**** SELECT replication-related variables on default ****
SELECT NOW(), @@SERVER_ID;
NOW()	@@SERVER_ID
2023-04-14 19:01:47	2
 
**** SHOW SLAVE STATUS on default ****
SHOW SLAVE STATUS;
Slave_IO_State	Waiting for master to send event
Master_Host	127.0.0.1
Master_User	root
Master_Port	16000
Connect_Retry	1
Master_Log_File	master-bin.000001
Read_Master_Log_Pos	1203
Relay_Log_File	slave-relay-bin.000002
Relay_Log_Pos	1176
Relay_Master_Log_File	master-bin.000001
Slave_IO_Running	Yes
Slave_SQL_Running	No
Replicate_Rewrite_DB	
Replicate_Do_DB	
Replicate_Ignore_DB	
Replicate_Do_Table	
Replicate_Ignore_Table	
Replicate_Wild_Do_Table	
Replicate_Wild_Ignore_Table	
Last_Errno	1062
Last_Error	Error 'Duplicate entry '0' for key 'col_int_nokey'' on query. Default database: 'test'. Query: 'ALTER ONLINE TABLE t9 ADD UNIQUE (`col_int_nokey`)'
Skip_Counter	0
Exec_Master_Log_Pos	876
Relay_Log_Space	1812
Until_Condition	None
Until_Log_File	
Until_Log_Pos	0
Master_SSL_Allowed	No
Master_SSL_CA_File	
Master_SSL_CA_Path	
Master_SSL_Cert	
Master_SSL_Cipher	
Master_SSL_Key	
Seconds_Behind_Master	NULL
Master_SSL_Verify_Server_Cert	No
Last_IO_Errno	0
Last_IO_Error	
Last_SQL_Errno	1062
Last_SQL_Error	Error 'Duplicate entry '0' for key 'col_int_nokey'' on query. Default database: 'test'. Query: 'ALTER ONLINE TABLE t9 ADD UNIQUE (`col_int_nokey`)'
Replicate_Ignore_Server_Ids	
Master_Server_Id	1
Master_SSL_Crl	
Master_SSL_Crlpath	
Using_Gtid	Slave_Pos
Gtid_IO_Pos	0-1-5
Replicate_Do_Domain_Ids	
Replicate_Ignore_Domain_Ids	
Parallel_Mode	optimistic
SQL_Delay	0
SQL_Remaining_Delay	NULL
Slave_SQL_Running_State	
Slave_DDL_Groups	3
Slave_Non_Transactional_Groups	1
Slave_Transactional_Groups	0
 
**** SHOW MASTER STATUS on default ****
SHOW MASTER STATUS;
File	slave-bin.000001
Position	875
Binlog_Do_DB	
Binlog_Ignore_DB	
 
**** SHOW SLAVE HOSTS on default ****
SHOW SLAVE HOSTS;
 
**** SHOW PROCESSLIST on default ****
SHOW PROCESSLIST;
Id	User	Host	db	Command	Time	State	Info	Progress
7	system user		NULL	Slave_IO	0	Waiting for master to send event	NULL	0.000
11	root	localhost	NULL	Query	0	starting	SHOW PROCESSLIST	0.000
 
**** SHOW BINARY LOGS on default ****
SHOW BINARY LOGS;
Log_name	File_size
slave-bin.000001	875
 
**** SHOW BINLOG EVENTS on default ****
binlog_name = 'slave-bin.000001'
SHOW BINLOG EVENTS IN 'slave-bin.000001';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
slave-bin.000001	4	Format_desc	2	256	Server ver: 11.0.1-MariaDB-debug-log, Binlog ver: 4
slave-bin.000001	256	Gtid_list	2	285	[]
slave-bin.000001	285	Binlog_checkpoint	2	328	slave-bin.000001
slave-bin.000001	328	Gtid	1	370	GTID 0-1-1
slave-bin.000001	370	Query	1	539	use `test`; CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria
slave-bin.000001	539	Gtid	1	581	BEGIN GTID 0-1-2
slave-bin.000001	581	Query	1	681	use `test`; INSERT INTO t9 () VALUES (),(),()
slave-bin.000001	681	Query	1	754	COMMIT
slave-bin.000001	754	Gtid	1	796	GTID 0-1-3
slave-bin.000001	796	Query	1	875	use `test`; FLUSH TABLES
 
**** SHOW RELAYLOG EVENTS on default ****
relaylog_name = 'slave-relay-bin.000002'
SHOW RELAYLOG EVENTS IN 'slave-relay-bin.000002';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
slave-relay-bin.000002	4	Format_desc	2	256	Server ver: 11.0.1-MariaDB-debug-log, Binlog ver: 4
slave-relay-bin.000002	256	Rotate	1	0	master-bin.000001;pos=4
slave-relay-bin.000002	304	Format_desc	1	256	Server ver: 11.0.1-MariaDB-debug-log, Binlog ver: 4
slave-relay-bin.000002	556	Gtid_list	1	285	[]
slave-relay-bin.000002	585	Binlog_checkpoint	1	329	master-bin.000001
slave-relay-bin.000002	629	Gtid	1	371	GTID 0-1-1
slave-relay-bin.000002	671	Query	1	540	use `test`; CREATE TABLE t9 (`col_int_nokey` SMALLINT UNSIGNED DEFAULT 0 ) ROW_FORMAT DYNAMIC ENGINE=Aria
slave-relay-bin.000002	840	Gtid	1	582	BEGIN GTID 0-1-2
slave-relay-bin.000002	882	Query	1	682	use `test`; INSERT INTO t9 () VALUES (),(),()
slave-relay-bin.000002	982	Query	1	755	COMMIT
slave-relay-bin.000002	1055	Gtid	1	797	GTID 0-1-3
slave-relay-bin.000002	1097	Query	1	876	use `test`; FLUSH TABLES
slave-relay-bin.000002	1176	Gtid	1	918	GTID 0-1-4
slave-relay-bin.000002	1218	Query	1	1044	use `test`; ALTER ONLINE TABLE t9 ADD UNIQUE (`col_int_nokey`)
slave-relay-bin.000002	1344	Gtid	1	1086	GTID 0-1-5
slave-relay-bin.000002	1386	Query	1	1203	use `test`; DROP TABLE `t9` /* generated by server */
connection default;
 
 
 
 - saving '/home/nik/mariadb/bld/mysql-test/var/log/gcol.virt-innodb,mix/' to '/home/nik/mariadb/bld/mysql-test/var/log/gcol.virt-innodb,mix/'
 
Only  1  of 3 completed.
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.000 of 5 seconds executing testcases
 
Failure: Failed 1/1 tests, 0.00% were successful.
 
Failing test(s): gcol.virt
 
The log files in var/log may give you some hint of what went wrong.
 
If you want to report this error, please read first the documentation
at http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html
 
mysql-test-run: *** ERROR: there were failing test cases

Comment by Angelique Sklavounos (Inactive) [ 2023-04-14 ]

nikitamalyavin The issue I am seeing was originally found with an ONLINE query, but I then changed the query to use ALGORITHM=COPY instead and found the issue from 10.4. I suspected they were related, but I will check the ONLINE query with the latest commit.

Comment by Nikita Malyavin [ 2023-04-14 ]

monty It seems this bug goes to you. No need for ONLINE, it's reproducible on vanilla 11.0

Generated at Thu Feb 08 10:20:54 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.