mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 10.1 into 10.2
This commit is contained in:
@ -46,7 +46,7 @@ ENDIF(UNIX)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqltest ${CLIENT_LIB} pcre pcreposix)
|
||||
TARGET_LINK_LIBRARIES(mysqltest ${CLIENT_LIB} pcreposix pcre)
|
||||
SET_TARGET_PROPERTIES(mysqltest PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
|
||||
|
||||
|
@ -34,7 +34,7 @@ ENDIF(UNIX)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.cc
|
||||
COMPONENT Test)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver pcre pcreposix)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver pcreposix pcre)
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Xcode")
|
||||
# It does not seem possible to tell Xcode the resulting target might need
|
||||
|
@ -5270,6 +5270,7 @@ sub server_need_restart {
|
||||
exists $server->{'restart_opts'})
|
||||
{
|
||||
my $use_dynamic_option_switch= 0;
|
||||
delete $server->{'restart_opts'};
|
||||
if (!$use_dynamic_option_switch)
|
||||
{
|
||||
mtr_verbose_restart($server, "running with different options '" .
|
||||
|
@ -98,8 +98,20 @@ ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
||||
connect(localhost,test,zorro,test,MASTER_PORT,MASTER_SOCKET);
|
||||
connect fail_con,localhost,test,zorro,;
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
||||
select user,host,password,plugin,authentication_string from mysql.user where user='test';
|
||||
user host password plugin authentication_string
|
||||
test localhost *5FDFF3268A50F41C5D18D2CA2F754D7BDB9B3E59
|
||||
test 127.0.0.1 *5FDFF3268A50F41C5D18D2CA2F754D7BDB9B3E59
|
||||
update mysql.user set password=old_password("gambling2") where user=_binary"test";
|
||||
flush privileges;
|
||||
show grants for test@localhost;
|
||||
Grants for test@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '2f27438961437573'
|
||||
update mysql.user set plugin='mysql_old_password' where user='test';
|
||||
flush privileges;
|
||||
show grants for test@localhost;
|
||||
Grants for test@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '2f27438961437573'
|
||||
connect con10,localhost,test,gambling2,;
|
||||
connect con5,localhost,test,gambling2,mysql;
|
||||
connection con5;
|
||||
|
@ -61,7 +61,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
|
||||
#<date> server id 1 end_log_pos 899 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 899
|
||||
#<date> server id 1 end_log_pos 967 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 967 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -89,7 +89,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
|
||||
#<date> server id 1 end_log_pos 1214 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1214
|
||||
#<date> server id 1 end_log_pos 1281 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1281 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=11 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -117,7 +117,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
|
||||
#<date> server id 1 end_log_pos 1530 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1530
|
||||
#<date> server id 1 end_log_pos 1596 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1596 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=12 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -145,7 +145,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
|
||||
#<date> server id 1 end_log_pos 1842 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1842
|
||||
#<date> server id 1 end_log_pos 1909 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1909 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -173,7 +173,7 @@ BEGIN
|
||||
#Q> INSERT INTO t2 SELECT * FROM t1
|
||||
#<date> server id 1 end_log_pos 2134 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 2134
|
||||
#<date> server id 1 end_log_pos 2225 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 2225 CRC32 XXX Write_compressed_rows: table id 32 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -234,7 +234,7 @@ BEGIN
|
||||
#Q> UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
|
||||
#<date> server id 1 end_log_pos 2462 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 2462
|
||||
#<date> server id 1 end_log_pos 2561 CRC32 XXX Update_compressed_rows: table id 31 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 2561 CRC32 XXX Update_compressed_rows: table id 32 flags: STMT_END_F
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -314,7 +314,7 @@ BEGIN
|
||||
#Q> DELETE FROM t1
|
||||
#<date> server id 1 end_log_pos 2769 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 2769
|
||||
#<date> server id 1 end_log_pos 2861 CRC32 XXX Delete_compressed_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 2861 CRC32 XXX Delete_compressed_rows: table id 31 flags: STMT_END_F
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -375,7 +375,7 @@ BEGIN
|
||||
#Q> DELETE FROM t2
|
||||
#<date> server id 1 end_log_pos 3069 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 3069
|
||||
#<date> server id 1 end_log_pos 3154 CRC32 XXX Delete_compressed_rows: table id 31 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 3154 CRC32 XXX Delete_compressed_rows: table id 32 flags: STMT_END_F
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
|
@ -59,7 +59,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
|
||||
#<date> server id 1 end_log_pos 946 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 946
|
||||
#<date> server id 1 end_log_pos 1015 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1015 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -87,7 +87,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
|
||||
#<date> server id 1 end_log_pos 1262 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1262
|
||||
#<date> server id 1 end_log_pos 1330 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1330 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=11 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -115,7 +115,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
|
||||
#<date> server id 1 end_log_pos 1579 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1579
|
||||
#<date> server id 1 end_log_pos 1646 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1646 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=12 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -143,7 +143,7 @@ BEGIN
|
||||
#Q> INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
|
||||
#<date> server id 1 end_log_pos 1892 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1892
|
||||
#<date> server id 1 end_log_pos 1962 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 1962 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -171,7 +171,7 @@ BEGIN
|
||||
#Q> INSERT INTO t2 SELECT * FROM t1
|
||||
#<date> server id 1 end_log_pos 2187 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 2187
|
||||
#<date> server id 1 end_log_pos 2354 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 2354 CRC32 XXX Write_rows: table id 32 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -232,7 +232,7 @@ BEGIN
|
||||
#Q> UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
|
||||
#<date> server id 1 end_log_pos 2591 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 2591
|
||||
#<date> server id 1 end_log_pos 2665 CRC32 XXX Update_rows: table id 31 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 2665 CRC32 XXX Update_rows: table id 32 flags: STMT_END_F
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -267,7 +267,7 @@ BEGIN
|
||||
#Q> DELETE FROM t1
|
||||
#<date> server id 1 end_log_pos 2873 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 2873
|
||||
#<date> server id 1 end_log_pos 2927 CRC32 XXX Delete_rows: table id 30 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 2927 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
@ -296,7 +296,7 @@ BEGIN
|
||||
#Q> DELETE FROM t2
|
||||
#<date> server id 1 end_log_pos 3135 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 3135
|
||||
#<date> server id 1 end_log_pos 3189 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
|
||||
#<date> server id 1 end_log_pos 3189 CRC32 XXX Delete_rows: table id 32 flags: STMT_END_F
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
|
||||
|
@ -26,7 +26,6 @@ MW-416 : MDEV-13549 Galera test failures
|
||||
MW-388 : MDEV-13549 Galera test failures
|
||||
galera.MW-44 : MDEV-15809 Test failure on galera.MW-44
|
||||
galera.galera_pc_ignore_sb : MDEV-15811 Test failure on galera_pc_ignore_sb
|
||||
galera_drop_database : MDEV-17421 mtr does not restart the server whose parameters were changed
|
||||
galera_kill_applier : race condition at the start of the test
|
||||
galera_ist_progress: MDEV-15236 galera_ist_progress fails when trying to read transfer status
|
||||
pxc-421: Lock timeout exceeded
|
||||
|
@ -1,3 +1,5 @@
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
CREATE DATABASE fts;
|
||||
USE fts;
|
||||
CREATE TABLE fts_t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
|
||||
@ -9,6 +11,10 @@ INSERT INTO fts_t2 (f2) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
|
||||
DROP TABLE ten;
|
||||
UPDATE fts_t1 SET f2 = 'abcd';
|
||||
UPDATE fts_t2 SET f2 = 'efjh';
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
USE fts;
|
||||
DROP TABLE fts_t1;
|
||||
DROP TABLE fts_t2;
|
||||
|
@ -9,6 +9,7 @@
|
||||
--let $node_2=node_2
|
||||
--source include/auto_increment_offset_save.inc
|
||||
|
||||
# Create test database with two sets of the FTS indexes:
|
||||
CREATE DATABASE fts;
|
||||
USE fts;
|
||||
CREATE TABLE fts_t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
|
||||
@ -23,34 +24,19 @@ DROP TABLE ten;
|
||||
UPDATE fts_t1 SET f2 = 'abcd';
|
||||
UPDATE fts_t2 SET f2 = 'efjh';
|
||||
|
||||
# Restart the second node:
|
||||
--connection node_2
|
||||
let $wsrep_cluster_address = `SELECT @@global.wsrep_node_incoming_address`;
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--connection node_1
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--let $galera_connection_name = node_2a
|
||||
--let $galera_server_number = 2
|
||||
--source include/galera_connect.inc
|
||||
--connection node_2a
|
||||
--connection node_2
|
||||
--source include/wait_until_ready.inc
|
||||
|
||||
# Drop the tables and database after nodes restarted:
|
||||
--connection node_1
|
||||
--let $restart_parameters = --wsrep-cluster-address=gcomm://$wsrep_cluster_address
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--connection node_2a
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--let $galera_connection_name = node_1a
|
||||
--let $galera_server_number = 1
|
||||
--source include/galera_connect.inc
|
||||
--connection node_1a
|
||||
--source include/wait_until_ready.inc
|
||||
|
||||
USE fts;
|
||||
DROP TABLE fts_t1;
|
||||
DROP TABLE fts_t2;
|
||||
@ -58,8 +44,4 @@ SHOW TABLES;
|
||||
DROP DATABASE fts;
|
||||
|
||||
# Restore original auto_increment_offset values.
|
||||
--let $node_1=node_1a
|
||||
--let $node_2=node_2a
|
||||
--source include/auto_increment_offset_restore.inc
|
||||
|
||||
--source include/galera_end.inc
|
||||
|
114
mysql-test/suite/innodb/r/alter_candidate_key.result
Normal file
114
mysql-test/suite/innodb/r/alter_candidate_key.result
Normal file
@ -0,0 +1,114 @@
|
||||
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
UNIQUE KEY uidx2(f1,f2),
|
||||
UNIQUE KEY uidx1(f2)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `uidx2` (`f1`,`f2`),
|
||||
UNIQUE KEY `uidx1` (`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter
|
||||
SIGNAL conc_dml WAIT_FOR go_ahead';
|
||||
ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE;
|
||||
connect con1,localhost,root,,;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR conc_dml';
|
||||
DELETE FROM t1;
|
||||
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
|
||||
connection default;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f11` int(11) DEFAULT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `uidx1` (`f2`),
|
||||
UNIQUE KEY `uidx2` (`f11`,`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT, f2 INT,
|
||||
PRIMARY KEY(f1, f2),
|
||||
UNIQUE INDEX uidx2 (f1, f2),
|
||||
UNIQUE INDEX uidx1 (f2))ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP PRIMARY KEY;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `uidx2` (`f1`,`f2`),
|
||||
UNIQUE KEY `uidx1` (`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter
|
||||
SIGNAL conc_dml WAIT_FOR go_ahead';
|
||||
ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE;
|
||||
connection con1;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR conc_dml';
|
||||
INSERT INTO t1 VALUES(1, 1), (1, 1);
|
||||
ERROR 23000: Duplicate entry '1-1' for key 'uidx2'
|
||||
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
|
||||
connection default;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f11` int(11) DEFAULT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `uidx1` (`f2`),
|
||||
UNIQUE KEY `uidx2` (`f11`,`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
SET SQL_MODE= strict_trans_tables;
|
||||
CREATE TABLE t1(a INT UNIQUE) ENGINE=InnoDB;
|
||||
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL dml WAIT_FOR dml_done';
|
||||
ALTER TABLE t1 MODIFY COLUMN a INT NOT NULL;
|
||||
connection con1;
|
||||
SET DEBUG_SYNC='now WAIT_FOR dml';
|
||||
BEGIN;
|
||||
INSERT INTO t1 SET a=NULL;
|
||||
ROLLBACK;
|
||||
set DEBUG_SYNC='now SIGNAL dml_done';
|
||||
connection default;
|
||||
ERROR 22004: Invalid use of NULL value
|
||||
DROP TABLE t1;
|
||||
disconnect con1;
|
||||
SET DEBUG_SYNC="RESET";
|
||||
SET SQL_MODE=DEFAULT;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2),
|
||||
UNIQUE KEY(f2))ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP PRIMARY KEY;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `f2` (`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
UNIQUE KEY(f2), UNIQUE KEY(f2))ENGINE=InnoDB;
|
||||
Warnings:
|
||||
Note 1831 Duplicate index `f2_2`. This is deprecated and will be disallowed in a future release
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `f2` (`f2`),
|
||||
UNIQUE KEY `f2_2` (`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t1 DROP INDEX f2, ALGORITHM=INPLACE;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
UNIQUE KEY `f2_2` (`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
@ -1567,6 +1567,7 @@ create table t1(f1 int not null, f2 int not null,
|
||||
primary key (f1), unique key(f1, f2))engine=innodb;
|
||||
insert into t1 values(1,3), (2,2);
|
||||
alter table t1 drop primary key, lock=none;
|
||||
alter table t1 drop index f1, lock=none;
|
||||
ERROR 0A000: LOCK=NONE is not supported. Reason: Dropping a primary key is not allowed without also adding a new primary key. Try LOCK=SHARED
|
||||
drop table t1;
|
||||
#
|
||||
|
@ -99,17 +99,6 @@ t1 CREATE TABLE `t1` (
|
||||
UNIQUE KEY `c2` (`c2`),
|
||||
UNIQUE KEY `c2_2` (`c2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
ALTER TABLE t1 DROP INDEX c2, ALGORITHM = INPLACE;
|
||||
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Dropping a primary key is not allowed without also adding a new primary key. Try ALGORITHM=COPY
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL,
|
||||
`c2` int(11) NOT NULL,
|
||||
`c3` char(255) NOT NULL,
|
||||
UNIQUE KEY `c2` (`c2`),
|
||||
UNIQUE KEY `c2_2` (`c2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
ALTER TABLE t1 DROP INDEX c2, ADD PRIMARY KEY(c1);
|
||||
# session default
|
||||
connection default;
|
||||
|
72
mysql-test/suite/innodb/t/alter_candidate_key.test
Normal file
72
mysql-test/suite/innodb/t/alter_candidate_key.test
Normal file
@ -0,0 +1,72 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
UNIQUE KEY uidx2(f1,f2),
|
||||
UNIQUE KEY uidx1(f2)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
SHOW CREATE TABLE t1;
|
||||
SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter
|
||||
SIGNAL conc_dml WAIT_FOR go_ahead';
|
||||
--send ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE
|
||||
connect (con1,localhost,root,,);
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR conc_dml';
|
||||
DELETE FROM t1;
|
||||
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
|
||||
connection default;
|
||||
reap;
|
||||
SHOW CREATE TABLE t1;
|
||||
CHECK TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 INT, f2 INT,
|
||||
PRIMARY KEY(f1, f2),
|
||||
UNIQUE INDEX uidx2 (f1, f2),
|
||||
UNIQUE INDEX uidx1 (f2))ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP PRIMARY KEY;
|
||||
SHOW CREATE TABLE t1;
|
||||
SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter
|
||||
SIGNAL conc_dml WAIT_FOR go_ahead';
|
||||
--send ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE
|
||||
connection con1;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR conc_dml';
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 VALUES(1, 1), (1, 1);
|
||||
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
|
||||
connection default;
|
||||
reap;
|
||||
SHOW CREATE TABLE t1;
|
||||
CHECK TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET SQL_MODE= strict_trans_tables;
|
||||
CREATE TABLE t1(a INT UNIQUE) ENGINE=InnoDB;
|
||||
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL dml WAIT_FOR dml_done';
|
||||
--send ALTER TABLE t1 MODIFY COLUMN a INT NOT NULL
|
||||
connection con1;
|
||||
SET DEBUG_SYNC='now WAIT_FOR dml';
|
||||
BEGIN;
|
||||
INSERT INTO t1 SET a=NULL;
|
||||
ROLLBACK;
|
||||
set DEBUG_SYNC='now SIGNAL dml_done';
|
||||
connection default;
|
||||
--error ER_INVALID_USE_OF_NULL
|
||||
reap;
|
||||
DROP TABLE t1;
|
||||
disconnect con1;
|
||||
SET DEBUG_SYNC="RESET";
|
||||
SET SQL_MODE=DEFAULT;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2),
|
||||
UNIQUE KEY(f2))ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP PRIMARY KEY;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
UNIQUE KEY(f2), UNIQUE KEY(f2))ENGINE=InnoDB;
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 DROP INDEX f2, ALGORITHM=INPLACE;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
@ -905,8 +905,9 @@ drop table t1;
|
||||
create table t1(f1 int not null, f2 int not null,
|
||||
primary key (f1), unique key(f1, f2))engine=innodb;
|
||||
insert into t1 values(1,3), (2,2);
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
alter table t1 drop primary key, lock=none;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
alter table t1 drop index f1, lock=none;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
|
@ -101,10 +101,6 @@ LOCK = SHARED, ALGORITHM = INPLACE;
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX(c2),
|
||||
LOCK = EXCLUSIVE, ALGORITHM = INPLACE;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
# We do not support plain DROP_PK_INDEX without ADD_PK_INDEX.
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
ALTER TABLE t1 DROP INDEX c2, ALGORITHM = INPLACE;
|
||||
SHOW CREATE TABLE t1;
|
||||
# Now the previous DEBUG_SYNC should kick in.
|
||||
--send
|
||||
|
31
mysql-test/suite/rpl/r/rpl_row_big_table_id,32bit.rdiff
Normal file
31
mysql-test/suite/rpl/r/rpl_row_big_table_id,32bit.rdiff
Normal file
@ -0,0 +1,31 @@
|
||||
--- r/rpl_row_big_table_id.result 2019-01-23 19:58:07.204914873 +0200
|
||||
+++ r/rpl_row_big_table_id_32bit.result 2019-01-23 19:43:54.590640934 +0200
|
||||
@@ -22,22 +22,22 @@
|
||||
master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment ''
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 1
|
||||
-master-bin.000002 # Table_map 1 # table_id: 4294967295 (test.t)
|
||||
-master-bin.000002 # Write_rows_v1 1 # table_id: 4294967295 flags: STMT_END_F
|
||||
+master-bin.000002 # Table_map 1 # table_id: 1 (test.t)
|
||||
+master-bin.000002 # Write_rows_v1 1 # table_id: 1 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
master-bin.000002 # Gtid 1 # GTID #-#-#
|
||||
master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment ''
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 2
|
||||
-master-bin.000002 # Table_map 1 # table_id: 4294967296 (test.t)
|
||||
-master-bin.000002 # Write_rows_v1 1 # table_id: 4294967296 flags: STMT_END_F
|
||||
+master-bin.000002 # Table_map 1 # table_id: 2 (test.t)
|
||||
+master-bin.000002 # Write_rows_v1 1 # table_id: 2 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
master-bin.000002 # Gtid 1 # GTID #-#-#
|
||||
master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment ''
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 3
|
||||
-master-bin.000002 # Table_map 1 # table_id: 4294967297 (test.t)
|
||||
-master-bin.000002 # Write_rows_v1 1 # table_id: 4294967297 flags: STMT_END_F
|
||||
+master-bin.000002 # Table_map 1 # table_id: 3 (test.t)
|
||||
+master-bin.000002 # Write_rows_v1 1 # table_id: 3 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
connection slave;
|
||||
connection master;
|
46
mysql-test/suite/rpl/r/rpl_row_big_table_id.result
Normal file
46
mysql-test/suite/rpl/r/rpl_row_big_table_id.result
Normal file
@ -0,0 +1,46 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
connection master;
|
||||
include/rpl_restart_server.inc [server_number=1]
|
||||
SET @@debug_dbug="d,simulate_big_table_id";
|
||||
CREATE TABLE t (a int);
|
||||
INSERT INTO t SET a= 0;
|
||||
ALTER TABLE t comment '';
|
||||
INSERT INTO t SET a= 1;
|
||||
ALTER TABLE t comment '';
|
||||
INSERT INTO t SET a= 2;
|
||||
ALTER TABLE t comment '';
|
||||
INSERT INTO t SET a= 3;
|
||||
show binlog events in <file> from <pos>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 0
|
||||
master-bin.000002 # Table_map 1 # table_id: 4294967294 (test.t)
|
||||
master-bin.000002 # Write_rows_v1 1 # table_id: 4294967294 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
master-bin.000002 # Gtid 1 # GTID #-#-#
|
||||
master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment ''
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 1
|
||||
master-bin.000002 # Table_map 1 # table_id: 4294967295 (test.t)
|
||||
master-bin.000002 # Write_rows_v1 1 # table_id: 4294967295 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
master-bin.000002 # Gtid 1 # GTID #-#-#
|
||||
master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment ''
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 2
|
||||
master-bin.000002 # Table_map 1 # table_id: 4294967296 (test.t)
|
||||
master-bin.000002 # Write_rows_v1 1 # table_id: 4294967296 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
master-bin.000002 # Gtid 1 # GTID #-#-#
|
||||
master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment ''
|
||||
master-bin.000002 # Gtid 1 # BEGIN GTID #-#-#
|
||||
master-bin.000002 # Annotate_rows 1 # INSERT INTO t SET a= 3
|
||||
master-bin.000002 # Table_map 1 # table_id: 4294967297 (test.t)
|
||||
master-bin.000002 # Write_rows_v1 1 # table_id: 4294967297 flags: STMT_END_F
|
||||
master-bin.000002 # Query 1 # COMMIT
|
||||
connection slave;
|
||||
connection master;
|
||||
DROP TABLE t;
|
||||
connection slave;
|
||||
include/rpl_end.inc
|
57
mysql-test/suite/rpl/t/rpl_row_big_table_id.test
Normal file
57
mysql-test/suite/rpl/t/rpl_row_big_table_id.test
Normal file
@ -0,0 +1,57 @@
|
||||
##################################################################
|
||||
# rpl_row_big_table_id
|
||||
#
|
||||
# MDEV-17803 Row-based event is not applied when
|
||||
# table map id is greater 32 bit int
|
||||
#
|
||||
# Verify row-based events applying when table map id value is about and greater
|
||||
# than 1 << 32.
|
||||
##################################################################
|
||||
--source include/word_size.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_binlog_format_row.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
--connection master
|
||||
# To reset last table id
|
||||
--let $rpl_server_number= 1
|
||||
--source include/rpl_restart_server.inc
|
||||
|
||||
SET @@debug_dbug="d,simulate_big_table_id";
|
||||
CREATE TABLE t (a int);
|
||||
|
||||
--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)
|
||||
--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||
INSERT INTO t SET a= 0;
|
||||
ALTER TABLE t comment '';
|
||||
INSERT INTO t SET a= 1;
|
||||
ALTER TABLE t comment '';
|
||||
INSERT INTO t SET a= 2;
|
||||
ALTER TABLE t comment '';
|
||||
INSERT INTO t SET a= 3;
|
||||
|
||||
# display simulated big table_id
|
||||
--let $_in_from=in '$binlog_file' from $binlog_pos
|
||||
--replace_result "$_in_from" "in <file> from <pos>"
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /file_id=[0-9]+/file_id=#/ /GTID [0-9]+-[0-9]+-[0-9]+/GTID #-#-#/
|
||||
--eval show binlog events in '$binlog_file' from $binlog_pos
|
||||
|
||||
|
||||
--sync_slave_with_master
|
||||
|
||||
if (`SELECT sum(a) != 6 FROM t`)
|
||||
{
|
||||
--echo *** unexpected result; check slave applier ***
|
||||
--die
|
||||
}
|
||||
|
||||
|
||||
# Cleanup
|
||||
|
||||
--connection master
|
||||
DROP TABLE t;
|
||||
|
||||
--sync_slave_with_master
|
||||
|
||||
--source include/rpl_end.inc
|
@ -66,8 +66,13 @@ connect (fail_con,localhost,test,zorro,test2);
|
||||
connect (fail_con,localhost,test,zorro,);
|
||||
|
||||
# check if old password version also works
|
||||
select user,host,password,plugin,authentication_string from mysql.user where user='test';
|
||||
update mysql.user set password=old_password("gambling2") where user=_binary"test";
|
||||
flush privileges;
|
||||
show grants for test@localhost;
|
||||
update mysql.user set plugin='mysql_old_password' where user='test';
|
||||
flush privileges;
|
||||
show grants for test@localhost;
|
||||
|
||||
connect (con10,localhost,test,gambling2,);
|
||||
connect (con5,localhost,test,gambling2,mysql);
|
||||
|
@ -1593,7 +1593,6 @@ static bool fix_user_plugin_ptr(ACL_USER *user)
|
||||
else
|
||||
return true;
|
||||
|
||||
if (user->auth_string.length)
|
||||
set_user_salt(user, user->auth_string.str, user->auth_string.length);
|
||||
return false;
|
||||
}
|
||||
@ -2068,6 +2067,11 @@ static bool acl_load(THD *thd, const Grant_tables& tables)
|
||||
safe_str(user.user.str),
|
||||
safe_str(user.host.hostname));
|
||||
}
|
||||
else if (password_len)
|
||||
{
|
||||
user.auth_string.str= password;
|
||||
user.auth_string.length= password_len;
|
||||
}
|
||||
|
||||
fix_user_plugin_ptr(&user);
|
||||
}
|
||||
|
@ -6634,6 +6634,12 @@ static bool fill_alter_inplace_info(THD *thd,
|
||||
KEY *new_key;
|
||||
KEY *new_key_end=
|
||||
ha_alter_info->key_info_buffer + ha_alter_info->key_count;
|
||||
/*
|
||||
Primary key index for the new table
|
||||
*/
|
||||
const KEY* const new_pk= (ha_alter_info->key_count > 0 &&
|
||||
is_candidate_key(ha_alter_info->key_info_buffer)) ?
|
||||
ha_alter_info->key_info_buffer : NULL;
|
||||
|
||||
DBUG_PRINT("info", ("index count old: %d new: %d",
|
||||
table->s->keys, ha_alter_info->key_count));
|
||||
@ -6709,6 +6715,16 @@ static bool fill_alter_inplace_info(THD *thd,
|
||||
goto index_changed;
|
||||
}
|
||||
|
||||
/*
|
||||
Rebuild the index if following condition get satisfied:
|
||||
|
||||
(i) Old table doesn't have primary key, new table has it and vice-versa
|
||||
(ii) Primary key changed to another existing index
|
||||
*/
|
||||
if ((new_key == new_pk) !=
|
||||
((uint) (table_key - table->key_info) == table->s->primary_key))
|
||||
goto index_changed;
|
||||
|
||||
/* Check that key comment is not changed. */
|
||||
if (table_key->comment.length != new_key->comment.length ||
|
||||
(table_key->comment.length &&
|
||||
|
@ -337,6 +337,9 @@ TABLE_SHARE *alloc_table_share(const char *db, const char *table_name,
|
||||
mysql_mutex_init(key_TABLE_SHARE_LOCK_ha_data,
|
||||
&share->LOCK_ha_data, MY_MUTEX_INIT_FAST);
|
||||
|
||||
DBUG_EXECUTE_IF("simulate_big_table_id",
|
||||
if (last_table_id < UINT_MAX32)
|
||||
last_table_id= UINT_MAX32 - 1;);
|
||||
/*
|
||||
There is one reserved number that cannot be used. Remember to
|
||||
change this when 6-byte global table id's are introduced.
|
||||
@ -345,7 +348,8 @@ TABLE_SHARE *alloc_table_share(const char *db, const char *table_name,
|
||||
{
|
||||
share->table_map_id=(ulong) my_atomic_add64_explicit(&last_table_id, 1,
|
||||
MY_MEMORY_ORDER_RELAXED);
|
||||
} while (unlikely(share->table_map_id == ~0UL));
|
||||
} while (unlikely(share->table_map_id == ~0UL ||
|
||||
share->table_map_id == 0));
|
||||
}
|
||||
DBUG_RETURN(share);
|
||||
}
|
||||
|
@ -1892,7 +1892,7 @@ struct TABLE_LIST
|
||||
/* Index names in a "... JOIN ... USE/IGNORE INDEX ..." clause. */
|
||||
List<Index_hint> *index_hints;
|
||||
TABLE *table; /* opened table */
|
||||
uint table_id; /* table id (from binlog) for opened table */
|
||||
ulonglong table_id; /* table id (from binlog) for opened table */
|
||||
/*
|
||||
select_result for derived table to pass it from table creation to table
|
||||
filling procedure
|
||||
|
Reference in New Issue
Block a user