mirror of
https://github.com/MariaDB/server.git
synced 2025-12-10 19:44:09 +03:00
Merge bb-10.2-ext into 10.3
This commit is contained in:
@@ -44,10 +44,9 @@ SET DEBUG_DBUG='+d,innodb_alter_commit_crash_after_commit';
|
||||
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# Restart mysqld after the crash and reconnect.
|
||||
# Manual *.frm recovery begin.
|
||||
# Manual recovery end
|
||||
FLUSH TABLES;
|
||||
# Drop the orphaned original table.
|
||||
SELECT * FROM information_schema.innodb_sys_tables
|
||||
WHERE table_id = ID;
|
||||
TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
|
||||
# Files in datadir after manual recovery.
|
||||
t1.frm
|
||||
t1.ibd
|
||||
@@ -83,11 +82,9 @@ SET DEBUG_DBUG='+d,innodb_alter_commit_crash_before_commit';
|
||||
ALTER TABLE t2 ADD PRIMARY KEY (f2, f1);
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# Startup the server after the crash
|
||||
# Read and remember the temporary table name
|
||||
# Manual *.frm recovery begin. The dictionary was not updated
|
||||
# and the files were not renamed. The rebuilt table
|
||||
# was left behind on purpose, to faciliate data recovery.
|
||||
# Manual recovery end
|
||||
SELECT * FROM information_schema.innodb_sys_tables
|
||||
WHERE name LIKE 'test/#sql-ib%';
|
||||
TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
|
||||
# Drop the orphaned rebuilt table.
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
@@ -123,10 +120,10 @@ SET DEBUG_DBUG='+d,innodb_alter_commit_crash_after_commit';
|
||||
ALTER TABLE t1 ADD INDEX (b), CHANGE c d int, ALGORITHM=INPLACE;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# Restart mysqld after the crash and reconnect.
|
||||
# Manual *.frm recovery begin.
|
||||
# Manual recovery end
|
||||
SELECT * FROM information_schema.innodb_sys_tables
|
||||
WHERE table_id = ID;
|
||||
TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
|
||||
FLUSH TABLES;
|
||||
# Drop the orphaned original table.
|
||||
# Files in datadir after manual recovery.
|
||||
t1.frm
|
||||
t1.ibd
|
||||
|
||||
@@ -3,7 +3,22 @@ KEY(c1), KEY(c2), KEY(c2,c1),
|
||||
KEY(c3), KEY(c3,c1), KEY(c3,c2), KEY(c3,c2,c1),
|
||||
KEY(c4), KEY(c4,c1), KEY(c4,c2), KEY(c4,c2,c1),
|
||||
KEY(c4,c3), KEY(c4,c3,c1), KEY(c4,c3,c2), KEY(c4,c3,c2,c1)) ENGINE=InnoDB;
|
||||
CREATE TABLE `#mysql50##sql-ib-foo`(a SERIAL) ENGINE=InnoDB;
|
||||
INSERT INTO t (c1) VALUES (1),(2),(1);
|
||||
SET DEBUG_DBUG='+d,row_drop_table_add_to_background';
|
||||
CREATE TABLE target (PRIMARY KEY(c1)) ENGINE=InnoDB SELECT * FROM t;
|
||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||
SELECT * from target;
|
||||
ERROR 42S02: Table 'test.target' doesn't exist
|
||||
DROP TABLE t;
|
||||
CREATE TABLE t (a INT) ENGINE=InnoDB;
|
||||
DROP TABLE t;
|
||||
DROP TABLE target;
|
||||
ERROR 42S02: Unknown table 'test.target'
|
||||
CREATE TABLE target (a INT) ENGINE=InnoDB;
|
||||
DROP TABLE target;
|
||||
SELECT * FROM `#mysql50##sql-ib-foo`;
|
||||
ERROR 42S02: Table 'test.#mysql50##sql-ib-foo' doesn't exist in engine
|
||||
DROP TABLE `#mysql50##sql-ib-foo`;
|
||||
Warnings:
|
||||
Warning 1932 Table 'test.#mysql50##sql-ib-foo' doesn't exist in engine
|
||||
|
||||
@@ -1351,3 +1351,15 @@ t CREATE TABLE `t` (
|
||||
KEY `i` (`i`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=401 DEFAULT CHARSET=latin1
|
||||
DROP TABLE t;
|
||||
#
|
||||
# MDEV-14008 Assertion failing: `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())
|
||||
#
|
||||
SET sql_mode=STRICT_ALL_TABLES;
|
||||
CREATE TABLE t1 (
|
||||
c1 DOUBLE NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10000000000000000000;
|
||||
INSERT INTO t1 VALUES ();
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1e19
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -75,28 +75,22 @@ ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
||||
--echo # Restart mysqld after the crash and reconnect.
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
let $temp_table_name = `SELECT SUBSTR(name, 6)
|
||||
FROM information_schema.innodb_sys_tables
|
||||
WHERE table_id = $orig_table_id`;
|
||||
|
||||
--echo # Manual *.frm recovery begin.
|
||||
|
||||
--move_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/$temp_table_name.frm
|
||||
|
||||
let TABLENAME_INC= $MYSQLTEST_VARDIR/tmp/tablename.inc;
|
||||
perl;
|
||||
my @frm_file = glob "$ENV{'datadir'}/test/#sql-*.frm";
|
||||
my $t1_frm = "$ENV{'datadir'}/test/t1.frm";
|
||||
rename($frm_file[0], $t1_frm);
|
||||
die unless open OUT, ">$ENV{TABLENAME_INC}";
|
||||
chdir "$ENV{'datadir'}/test";
|
||||
my @frm_file = map { substr($_, 0, -4) } glob "#sql-*.frm";
|
||||
print OUT 'let $tablename=', $frm_file[0], ';';
|
||||
close OUT or die;
|
||||
EOF
|
||||
source $TABLENAME_INC;
|
||||
remove_file $TABLENAME_INC;
|
||||
|
||||
--echo # Manual recovery end
|
||||
--replace_result $orig_table_id ID
|
||||
eval SELECT * FROM information_schema.innodb_sys_tables
|
||||
WHERE table_id = $orig_table_id;
|
||||
|
||||
FLUSH TABLES;
|
||||
|
||||
--echo # Drop the orphaned original table.
|
||||
--disable_query_log
|
||||
eval DROP TABLE `$temp_table_name`;
|
||||
--enable_query_log
|
||||
move_file $datadir/test/$tablename.frm $datadir/test/t1.frm;
|
||||
|
||||
--echo # Files in datadir after manual recovery.
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
@@ -134,16 +128,9 @@ ALTER TABLE t2 ADD PRIMARY KEY (f2, f1);
|
||||
--echo # Startup the server after the crash
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
--echo # Read and remember the temporary table name
|
||||
let $temp_table_name = `SELECT SUBSTRING(name,6)
|
||||
FROM information_schema.innodb_sys_tables
|
||||
WHERE name LIKE "test/#sql-ib$orig_table_id%"`;
|
||||
SELECT * FROM information_schema.innodb_sys_tables
|
||||
WHERE name LIKE 'test/#sql-ib%';
|
||||
|
||||
--echo # Manual *.frm recovery begin. The dictionary was not updated
|
||||
--echo # and the files were not renamed. The rebuilt table
|
||||
--echo # was left behind on purpose, to faciliate data recovery.
|
||||
|
||||
let TABLENAME_INC= $MYSQLTEST_VARDIR/tmp/tablename.inc;
|
||||
perl;
|
||||
die unless open OUT, ">$ENV{TABLENAME_INC}";
|
||||
chdir "$ENV{'datadir'}/test";
|
||||
@@ -154,8 +141,6 @@ EOF
|
||||
source $TABLENAME_INC;
|
||||
remove_file $TABLENAME_INC;
|
||||
|
||||
--echo # Manual recovery end
|
||||
|
||||
--echo # Drop the orphaned rebuilt table.
|
||||
--disable_query_log
|
||||
eval DROP TABLE `#mysql50#$tablename`;
|
||||
@@ -198,28 +183,24 @@ ALTER TABLE t1 ADD INDEX (b), CHANGE c d int, ALGORITHM=INPLACE;
|
||||
--echo # Restart mysqld after the crash and reconnect.
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
let $temp_table_name = `SELECT SUBSTR(name, 6)
|
||||
FROM information_schema.innodb_sys_tables
|
||||
WHERE table_id = $orig_table_id`;
|
||||
|
||||
--echo # Manual *.frm recovery begin.
|
||||
--move_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/$temp_table_name.frm
|
||||
--replace_result $orig_table_id ID
|
||||
eval SELECT * FROM information_schema.innodb_sys_tables
|
||||
WHERE table_id = $orig_table_id;
|
||||
|
||||
perl;
|
||||
my @frm_file = glob "$ENV{'datadir'}/test/#sql-*.frm";
|
||||
my $t1_frm = "$ENV{'datadir'}/test/t1.frm";
|
||||
rename($frm_file[0], $t1_frm);
|
||||
die unless open OUT, ">$ENV{TABLENAME_INC}";
|
||||
chdir "$ENV{'datadir'}/test";
|
||||
my @frm_file = map { substr($_, 0, -4) } glob "#sql-*.frm";
|
||||
print OUT 'let $tablename=', $frm_file[0], ';';
|
||||
close OUT or die;
|
||||
EOF
|
||||
|
||||
--echo # Manual recovery end
|
||||
source $TABLENAME_INC;
|
||||
remove_file $TABLENAME_INC;
|
||||
move_file $datadir/test/$tablename.frm $datadir/test/t1.frm;
|
||||
|
||||
FLUSH TABLES;
|
||||
|
||||
--echo # Drop the orphaned original table.
|
||||
--disable_query_log
|
||||
eval DROP TABLE `#mysql50#$temp_table_name`;
|
||||
--enable_query_log
|
||||
|
||||
--echo # Files in datadir after manual recovery.
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
|
||||
|
||||
@@ -9,6 +9,9 @@ KEY(c3), KEY(c3,c1), KEY(c3,c2), KEY(c3,c2,c1),
|
||||
KEY(c4), KEY(c4,c1), KEY(c4,c2), KEY(c4,c2,c1),
|
||||
KEY(c4,c3), KEY(c4,c3,c1), KEY(c4,c3,c2), KEY(c4,c3,c2,c1)) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE `#mysql50##sql-ib-foo`(a SERIAL) ENGINE=InnoDB;
|
||||
INSERT INTO t (c1) VALUES (1),(2),(1);
|
||||
|
||||
let $n= 10;
|
||||
|
||||
SET DEBUG_DBUG='+d,row_drop_table_add_to_background';
|
||||
@@ -24,7 +27,18 @@ while ($i) {
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
--error ER_DUP_ENTRY
|
||||
CREATE TABLE target (PRIMARY KEY(c1)) ENGINE=InnoDB SELECT * FROM t;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
SELECT * from target;
|
||||
DROP TABLE t;
|
||||
--source include/restart_mysqld.inc
|
||||
CREATE TABLE t (a INT) ENGINE=InnoDB;
|
||||
DROP TABLE t;
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
DROP TABLE target;
|
||||
CREATE TABLE target (a INT) ENGINE=InnoDB;
|
||||
DROP TABLE target;
|
||||
--error ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
SELECT * FROM `#mysql50##sql-ib-foo`;
|
||||
DROP TABLE `#mysql50##sql-ib-foo`;
|
||||
|
||||
@@ -683,3 +683,15 @@ INSERT INTO t VALUES (NULL);
|
||||
SELECT * FROM t;
|
||||
SHOW CREATE TABLE t;
|
||||
DROP TABLE t;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14008 Assertion failing: `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())
|
||||
--echo #
|
||||
|
||||
SET sql_mode=STRICT_ALL_TABLES;
|
||||
CREATE TABLE t1 (
|
||||
c1 DOUBLE NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10000000000000000000;
|
||||
INSERT INTO t1 VALUES ();
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
Reference in New Issue
Block a user