mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.2 into 10.3
This commit is contained in:
@@ -1548,6 +1548,7 @@ end:
|
|||||||
{
|
{
|
||||||
my_fwrite(result_file, (const uchar *) tmp_str.str, tmp_str.length,
|
my_fwrite(result_file, (const uchar *) tmp_str.str, tmp_str.length,
|
||||||
MYF(MY_NABP));
|
MYF(MY_NABP));
|
||||||
|
fflush(result_file);
|
||||||
my_free(tmp_str.str);
|
my_free(tmp_str.str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
mysql-test/include/have_xtrabackup.inc
Normal file
4
mysql-test/include/have_xtrabackup.inc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# suite.pm will make sure that all tests including this file
|
||||||
|
# will be skipped as needed
|
||||||
|
#
|
@@ -1,4 +1,4 @@
|
|||||||
Windows bug: happens when a new line is exactly at the right offset.
|
Windows bug: new line disappears when it is exactly at the right offset.
|
||||||
The following options may be given as the first argument:
|
The following options may be given as the first argument:
|
||||||
--print-defaults Print the program argument list and exit.
|
--print-defaults Print the program argument list and exit.
|
||||||
--no-defaults Don't read default options from any option file.
|
--no-defaults Don't read default options from any option file.
|
||||||
|
@@ -42,7 +42,7 @@ perl;
|
|||||||
$re2=join('|', @plugins);
|
$re2=join('|', @plugins);
|
||||||
$skip=0;
|
$skip=0;
|
||||||
open(F, '<', "$ENV{MYSQL_TMP_DIR}/mysqld--help.txt") or die;
|
open(F, '<', "$ENV{MYSQL_TMP_DIR}/mysqld--help.txt") or die;
|
||||||
print "Windows bug: happens when a new line is exactly at the right offset.\n";
|
print "Windows bug: new line disappears when it is exactly at the right offset.\n";
|
||||||
while (<F>) {
|
while (<F>) {
|
||||||
next if 1../The following groups are read/;
|
next if 1../The following groups are read/;
|
||||||
# formatting, skip line consisting entirely of dashes and blanks
|
# formatting, skip line consisting entirely of dashes and blanks
|
||||||
|
@@ -0,0 +1,16 @@
|
|||||||
|
RESET MASTER;
|
||||||
|
include/stop_dump_threads.inc
|
||||||
|
# Step-1: Execute some dummy statements.
|
||||||
|
CREATE TABLE t1(i int);
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
# Step-2: Disable binary log temporarily and drop the table 't1'.
|
||||||
|
set @@SESSION.SQL_LOG_BIN = 0;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set @@SESSION.SQL_LOG_BIN = 1;
|
||||||
|
# Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
|
||||||
|
# Step-4: Wait till dump thread transfer is completed.
|
||||||
|
# Step-5: Check that the data is there.
|
||||||
|
# Step-6: Cleanup
|
||||||
|
# kill the dump thread serving the mysqlbinlog --stop-never process
|
||||||
|
include/stop_dump_threads.inc
|
||||||
|
DROP TABLE t1;
|
66
mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test
Normal file
66
mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Test verifies that continuous streaming of binary log content using the
|
||||||
|
# "mysqlbinlog --stop-never" option and sourcing it to mysql client works
|
||||||
|
# fine.
|
||||||
|
#
|
||||||
|
# ==== Implementation ====
|
||||||
|
#
|
||||||
|
# Steps:
|
||||||
|
# 1 - Create a table on a server on which binary log is enabled and insert
|
||||||
|
# a row.
|
||||||
|
# 2 - Disable the binary log on the server and drop the table.
|
||||||
|
# 3 - Capture the binary log output using "mysqlbinlog --stop_never" option
|
||||||
|
# and source it to mysql client.
|
||||||
|
# 4 - Query the PROCESSLIST table to ensure that the dump thread which is
|
||||||
|
# serving "stop_never" option has read entire binlog.
|
||||||
|
# 5 - Verify that the table is populated on the server.
|
||||||
|
# 6 - Cleanup.
|
||||||
|
#
|
||||||
|
# ==== References ====
|
||||||
|
#
|
||||||
|
# MDEV-11154: Write_on_release_cache(log_event.cc) function will not write
|
||||||
|
# "COMMIT", if use "mysqlbinlog ... | mysql ..."
|
||||||
|
|
||||||
|
--source include/not_windows.inc
|
||||||
|
|
||||||
|
# Test is not specific to any binlog format. Hence Running only for 'row'.
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
# binlog file name is needed in the test. To use master-bin.000001,
|
||||||
|
# RESET MASTER is needed.
|
||||||
|
RESET MASTER;
|
||||||
|
# kill the dump threads if there any dump threads (may be from previous test)
|
||||||
|
--source include/stop_dump_threads.inc
|
||||||
|
|
||||||
|
--echo # Step-1: Execute some dummy statements.
|
||||||
|
CREATE TABLE t1(i int);
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
|
||||||
|
--echo # Step-2: Disable binary log temporarily and drop the table 't1'.
|
||||||
|
set @@SESSION.SQL_LOG_BIN = 0;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set @@SESSION.SQL_LOG_BIN = 1;
|
||||||
|
|
||||||
|
--echo # Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
|
||||||
|
--write_file $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
|
||||||
|
(`$MYSQL_BINLOG --read-from-remote-server --stop-never --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 | $MYSQL --user=root --protocol=tcp --host=127.0.0.1 --port=$MASTER_MYPORT`) < /dev/null > /dev/null 2>&1 &
|
||||||
|
EOF
|
||||||
|
--exec /bin/bash $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
|
||||||
|
|
||||||
|
--echo # Step-4: Wait till dump thread transfer is completed.
|
||||||
|
let $wait_condition= SELECT id from information_schema.processlist where processlist.command like '%Binlog%' and state like '%Master has sent%';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--echo # Step-5: Check that the data is there.
|
||||||
|
let $count= 1;
|
||||||
|
let $table= test.t1;
|
||||||
|
source include/wait_until_rows_count.inc;
|
||||||
|
|
||||||
|
--echo # Step-6: Cleanup
|
||||||
|
--echo # kill the dump thread serving the mysqlbinlog --stop-never process
|
||||||
|
--source include/stop_dump_threads.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
--remove_file $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
|
||||||
|
|
25
mysql-test/suite/innodb/r/check_ibd_filesize,32k.rdiff
Normal file
25
mysql-test/suite/innodb/r/check_ibd_filesize,32k.rdiff
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
--- check_ibd_filesize.result
|
||||||
|
+++ check_ibd_filesize.result,32k
|
||||||
|
@@ -3,18 +3,12 @@
|
||||||
|
# SPACE IN 5.7 THAN IN 5.6
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 196608
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_25000;
|
||||||
|
-# bytes: 9437184
|
||||||
|
+# bytes: 786432
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 196608
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
-# bytes: 4194304
|
||||||
|
-DROP TABLE t1;
|
||||||
|
-CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB)
|
||||||
|
-ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
-# bytes: 65536
|
||||||
|
-INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
-# bytes: 65536
|
||||||
|
+# bytes: 786432
|
||||||
|
DROP TABLE t1;
|
25
mysql-test/suite/innodb/r/check_ibd_filesize,4k.rdiff
Normal file
25
mysql-test/suite/innodb/r/check_ibd_filesize,4k.rdiff
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
--- check_ibd_filesize.result
|
||||||
|
+++ check_ibd_filesize.result,4k
|
||||||
|
@@ -3,18 +3,18 @@
|
||||||
|
# SPACE IN 5.7 THAN IN 5.6
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 24576
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_25000;
|
||||||
|
# bytes: 9437184
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 24576
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
# bytes: 4194304
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB)
|
||||||
|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
-# bytes: 65536
|
||||||
|
+# bytes: 16384
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
-# bytes: 65536
|
||||||
|
+# bytes: 25600
|
||||||
|
DROP TABLE t1;
|
25
mysql-test/suite/innodb/r/check_ibd_filesize,64k.rdiff
Normal file
25
mysql-test/suite/innodb/r/check_ibd_filesize,64k.rdiff
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
--- check_ibd_filesize.result
|
||||||
|
+++ check_ibd_filesize.result,64k
|
||||||
|
@@ -3,18 +3,12 @@
|
||||||
|
# SPACE IN 5.7 THAN IN 5.6
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 393216
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_25000;
|
||||||
|
-# bytes: 9437184
|
||||||
|
+# bytes: 983040
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 393216
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
-# bytes: 4194304
|
||||||
|
-DROP TABLE t1;
|
||||||
|
-CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB)
|
||||||
|
-ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
-# bytes: 65536
|
||||||
|
-INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
-# bytes: 65536
|
||||||
|
+# bytes: 1572864
|
||||||
|
DROP TABLE t1;
|
25
mysql-test/suite/innodb/r/check_ibd_filesize,8k.rdiff
Normal file
25
mysql-test/suite/innodb/r/check_ibd_filesize,8k.rdiff
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
--- check_ibd_filesize.result
|
||||||
|
+++ check_ibd_filesize.result,8k
|
||||||
|
@@ -3,18 +3,18 @@
|
||||||
|
# SPACE IN 5.7 THAN IN 5.6
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 49152
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_25000;
|
||||||
|
# bytes: 9437184
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB) ENGINE=InnoDB;
|
||||||
|
-# bytes: 98304
|
||||||
|
+# bytes: 49152
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
# bytes: 4194304
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB)
|
||||||
|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
-# bytes: 65536
|
||||||
|
+# bytes: 32768
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
-# bytes: 65536
|
||||||
|
+# bytes: 32768
|
||||||
|
DROP TABLE t1;
|
20
mysql-test/suite/innodb/r/check_ibd_filesize.result
Normal file
20
mysql-test/suite/innodb/r/check_ibd_filesize.result
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# Bug #21950389 SMALL TABLESPACES WITH BLOBS TAKE UP TO 80 TIMES MORE
|
||||||
|
# SPACE IN 5.7 THAN IN 5.6
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
# bytes: 98304
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_25000;
|
||||||
|
# bytes: 9437184
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB) ENGINE=InnoDB;
|
||||||
|
# bytes: 98304
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
# bytes: 4194304
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB)
|
||||||
|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
# bytes: 65536
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
# bytes: 65536
|
||||||
|
DROP TABLE t1;
|
178
mysql-test/suite/innodb/r/innodb-system-table-view.result
Normal file
178
mysql-test/suite/innodb/r/innodb-system-table-view.result
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables
|
||||||
|
WHERE name = 'mysql/innodb_table_stats';
|
||||||
|
SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables
|
||||||
|
WHERE name = 'mysql/innodb_index_stats';
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY table_id;
|
||||||
|
TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
|
||||||
|
11 SYS_FOREIGN 0 7 0 Redundant 0 System
|
||||||
|
12 SYS_FOREIGN_COLS 0 7 0 Redundant 0 System
|
||||||
|
13 SYS_TABLESPACES 0 6 0 Redundant 0 System
|
||||||
|
14 SYS_DATAFILES 0 5 0 Redundant 0 System
|
||||||
|
15 SYS_VIRTUAL 0 6 0 Redundant 0 System
|
||||||
|
18 mysql/transaction_registry 33 8 3 Dynamic 0 Single
|
||||||
|
SELECT table_id,pos,mtype,prtype,len,name
|
||||||
|
FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
|
||||||
|
WHERE table_id NOT IN (@table_stats_id, @index_stats_id)
|
||||||
|
ORDER BY table_id, pos;
|
||||||
|
table_id pos mtype prtype len name
|
||||||
|
11 0 1 524292 0 ID
|
||||||
|
11 1 1 524292 0 FOR_NAME
|
||||||
|
11 2 1 524292 0 REF_NAME
|
||||||
|
11 3 6 0 4 N_COLS
|
||||||
|
12 0 1 524292 0 ID
|
||||||
|
12 1 6 0 4 POS
|
||||||
|
12 2 1 524292 0 FOR_COL_NAME
|
||||||
|
12 3 1 524292 0 REF_COL_NAME
|
||||||
|
13 0 6 0 4 SPACE
|
||||||
|
13 1 1 524292 0 NAME
|
||||||
|
13 2 6 0 4 FLAGS
|
||||||
|
14 0 6 0 4 SPACE
|
||||||
|
14 1 1 524292 0 PATH
|
||||||
|
15 0 6 0 8 TABLE_ID
|
||||||
|
15 1 6 0 4 POS
|
||||||
|
15 2 6 0 4 BASE_POS
|
||||||
|
18 0 6 1800 8 transaction_id
|
||||||
|
18 1 6 1800 8 commit_id
|
||||||
|
18 2 3 526087 7 begin_timestamp
|
||||||
|
18 3 3 526087 7 commit_timestamp
|
||||||
|
18 4 6 1022 1 isolation_level
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||||
|
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY index_id;
|
||||||
|
INDEX_ID NAME TABLE_ID TYPE N_FIELDS PAGE_NO SPACE MERGE_THRESHOLD
|
||||||
|
# ID_IND # 3 1 # # 50
|
||||||
|
# FOR_IND # 0 1 # # 50
|
||||||
|
# REF_IND # 0 1 # # 50
|
||||||
|
# ID_IND # 3 2 # # 50
|
||||||
|
# SYS_TABLESPACES_SPACE # 3 1 # # 50
|
||||||
|
# SYS_DATAFILES_SPACE # 3 1 # # 50
|
||||||
|
# BASE_IDX # 3 3 # # 50
|
||||||
|
# PRIMARY # 3 1 # # 50
|
||||||
|
# commit_id # 2 1 # # 50
|
||||||
|
# begin_timestamp # 0 1 # # 50
|
||||||
|
# commit_timestamp # 0 2 # # 50
|
||||||
|
SELECT index_id,pos,name FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS
|
||||||
|
WHERE name NOT IN ('database_name', 'table_name', 'index_name', 'stat_name')
|
||||||
|
ORDER BY index_id, pos;
|
||||||
|
index_id pos name
|
||||||
|
11 0 ID
|
||||||
|
12 0 FOR_NAME
|
||||||
|
13 0 REF_NAME
|
||||||
|
14 0 ID
|
||||||
|
14 1 POS
|
||||||
|
15 0 SPACE
|
||||||
|
16 0 SPACE
|
||||||
|
17 0 TABLE_ID
|
||||||
|
17 1 POS
|
||||||
|
17 2 BASE_POS
|
||||||
|
20 0 transaction_id
|
||||||
|
21 0 commit_id
|
||||||
|
22 0 begin_timestamp
|
||||||
|
23 0 commit_timestamp
|
||||||
|
23 1 transaction_id
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||||
|
ID FOR_NAME REF_NAME N_COLS TYPE
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||||
|
ID FOR_COL_NAME REF_COL_NAME POS
|
||||||
|
CREATE TABLE t_redundant (a INT KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=innodb;
|
||||||
|
CREATE TABLE t_compact (a INT KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=innodb;
|
||||||
|
CREATE TABLE t_compressed (a INT KEY, b TEXT) ROW_FORMAT=COMPRESSED ENGINE=innodb KEY_BLOCK_SIZE=2;
|
||||||
|
CREATE TABLE t_dynamic (a INT KEY, b TEXT) ROW_FORMAT=DYNAMIC ENGINE=innodb;
|
||||||
|
=== information_schema.innodb_sys_tables and innodb_sys_tablespaces ===
|
||||||
|
Table Name Tablespace Table Flags Columns Row Format Zip Size Space Type
|
||||||
|
test/t_compact test/t_compact 1 5 Compact 0 Single
|
||||||
|
test/t_compressed test/t_compressed 37 5 Compressed 2048 Single
|
||||||
|
test/t_dynamic test/t_dynamic 33 5 Dynamic 0 Single
|
||||||
|
test/t_redundant test/t_redundant 0 5 Redundant 0 Single
|
||||||
|
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
|
||||||
|
Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path
|
||||||
|
test/t_redundant Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t_redundant.ibd
|
||||||
|
test/t_compact Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t_compact.ibd
|
||||||
|
test/t_compressed Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t_compressed.ibd
|
||||||
|
test/t_dynamic Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t_dynamic.ibd
|
||||||
|
DROP TABLE t_redundant, t_compact, t_compressed, t_dynamic;
|
||||||
|
SELECT count(*) FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS;
|
||||||
|
count(*)
|
||||||
|
8
|
||||||
|
CREATE TABLE parent (id INT NOT NULL,
|
||||||
|
PRIMARY KEY (id)) ENGINE=INNODB;
|
||||||
|
CREATE TABLE child (id INT, parent_id INT,
|
||||||
|
INDEX par_ind (parent_id),
|
||||||
|
CONSTRAINT constraint_test
|
||||||
|
FOREIGN KEY (parent_id) REFERENCES parent(id)
|
||||||
|
ON DELETE CASCADE) ENGINE=INNODB;
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||||
|
ID FOR_NAME REF_NAME N_COLS TYPE
|
||||||
|
test/constraint_test test/child test/parent 1 1
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||||
|
ID FOR_COL_NAME REF_COL_NAME POS
|
||||||
|
test/constraint_test parent_id id 0
|
||||||
|
INSERT INTO parent VALUES(1);
|
||||||
|
SELECT name, num_rows, ref_count
|
||||||
|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||||
|
WHERE name LIKE "%parent";
|
||||||
|
name num_rows ref_count
|
||||||
|
test/parent 1 1
|
||||||
|
SELECT NAME, FLAG, N_COLS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name NOT LIKE 'sys/%';
|
||||||
|
NAME FLAG N_COLS
|
||||||
|
SYS_DATAFILES 0 5
|
||||||
|
SYS_FOREIGN 0 7
|
||||||
|
SYS_FOREIGN_COLS 0 7
|
||||||
|
SYS_TABLESPACES 0 6
|
||||||
|
SYS_VIRTUAL 0 6
|
||||||
|
mysql/innodb_index_stats 33 11
|
||||||
|
mysql/innodb_table_stats 33 9
|
||||||
|
mysql/transaction_registry 33 8
|
||||||
|
test/child 33 5
|
||||||
|
test/parent 33 4
|
||||||
|
SELECT name, n_fields
|
||||||
|
from INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||||
|
WHERE table_id In (SELECT table_id from
|
||||||
|
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name LIKE "%parent%");
|
||||||
|
name n_fields
|
||||||
|
PRIMARY 1
|
||||||
|
SELECT name, n_fields
|
||||||
|
from INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||||
|
WHERE table_id In (SELECT table_id from
|
||||||
|
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name LIKE "%child%");
|
||||||
|
name n_fields
|
||||||
|
GEN_CLUST_INDEX 0
|
||||||
|
par_ind 1
|
||||||
|
SELECT name, pos, mtype, len
|
||||||
|
from INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
|
||||||
|
WHERE table_id In (SELECT table_id from
|
||||||
|
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name LIKE "%child%");
|
||||||
|
name pos mtype len
|
||||||
|
id 0 6 4
|
||||||
|
parent_id 1 6 4
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
||||||
|
CREATE TABLE parent (id INT NOT NULL, newid INT NOT NULL,
|
||||||
|
PRIMARY KEY (id, newid)) ENGINE=INNODB;
|
||||||
|
CREATE TABLE child (id INT, parent_id INT,
|
||||||
|
INDEX par_ind (parent_id),
|
||||||
|
CONSTRAINT constraint_test
|
||||||
|
FOREIGN KEY (id, parent_id) REFERENCES parent(id, newid)
|
||||||
|
ON DELETE CASCADE) ENGINE=INNODB;
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||||
|
ID FOR_NAME REF_NAME N_COLS TYPE
|
||||||
|
test/constraint_test test/child test/parent 2 1
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||||
|
ID FOR_COL_NAME REF_COL_NAME POS
|
||||||
|
test/constraint_test id id 0
|
||||||
|
test/constraint_test parent_id newid 1
|
||||||
|
INSERT INTO parent VALUES(1, 9);
|
||||||
|
SELECT * FROM parent WHERE id IN (SELECT id FROM parent);
|
||||||
|
id newid
|
||||||
|
1 9
|
||||||
|
SELECT name, num_rows, ref_count
|
||||||
|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||||
|
WHERE name LIKE "%parent";
|
||||||
|
name num_rows ref_count
|
||||||
|
test/parent 1 2
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
27
mysql-test/suite/innodb/r/innodb-wl5980-debug.result
Normal file
27
mysql-test/suite/innodb/r/innodb-wl5980-debug.result
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
call mtr.add_suppression("Cannot find space id [0-9]+ in the tablespace memory cache");
|
||||||
|
call mtr.add_suppression("Cannot rename table 'test/t1' to 'test/t2' since the dictionary cache already contains 'test/t2'.");
|
||||||
|
#
|
||||||
|
# WL5980 Remote tablespace debug error injection tests.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int KEY, b text) ENGINE=Innodb DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir' ;
|
||||||
|
INSERT INTO t1 VALUES (1, 'tablespace');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 tablespace
|
||||||
|
#
|
||||||
|
# Test the second injection point in fil_rename_tablespace().
|
||||||
|
# Make sure the table is useable after this failure.
|
||||||
|
#
|
||||||
|
SET @save_dbug=@@debug_dbug;
|
||||||
|
SET debug_dbug="+d,fil_rename_tablespace_failure_2";
|
||||||
|
RENAME TABLE t1 TO t2;
|
||||||
|
SET debug_dbug=@save_dbug;
|
||||||
|
INSERT INTO t1 VALUES (2, 'tablespace');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 tablespace
|
||||||
|
2 tablespace
|
||||||
|
#
|
||||||
|
# Cleanup
|
||||||
|
#
|
||||||
|
DROP TABLE t1;
|
13
mysql-test/suite/innodb/r/trx_id_future.result
Normal file
13
mysql-test/suite/innodb/r/trx_id_future.result
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# Bug #20445525 ADD A CONSISTENCY CHECK AGAINST DB_TRX_ID BEING
|
||||||
|
# IN THE FUTURE
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a INT) row_format=redundant engine=innoDB;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
NOT FOUND /\[Warning\] InnoDB: A transaction id in a record of table `test`\.`t1` is newer than the system-wide maximum/ in mysqld.1.err
|
||||||
|
call mtr.add_suppression("\\[Warning\\] InnoDB: A transaction id in a record of table `test`\\.`t1` is newer than the system-wide maximum");
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
Warnings:
|
||||||
|
Warning 1642 InnoDB: Transaction id in a record of table `test`.`t1` is newer than system-wide maximum.
|
||||||
|
DROP TABLE t1;
|
53
mysql-test/suite/innodb/t/check_ibd_filesize.test
Normal file
53
mysql-test/suite/innodb/t/check_ibd_filesize.test
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
--source include/innodb_page_size.inc
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #21950389 SMALL TABLESPACES WITH BLOBS TAKE UP TO 80 TIMES MORE
|
||||||
|
--echo # SPACE IN 5.7 THAN IN 5.6
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table 1: small rows
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
let MYSQLD_DATADIR=`select @@datadir`;
|
||||||
|
perl;
|
||||||
|
print "# bytes: ", (-s "$ENV{MYSQLD_DATADIR}/test/t1.ibd"), "\n";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_25000;
|
||||||
|
perl;
|
||||||
|
print "# bytes: ", (-s "$ENV{MYSQLD_DATADIR}/test/t1.ibd"), "\n";
|
||||||
|
EOF
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table 2: BLOB
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB) ENGINE=InnoDB;
|
||||||
|
perl;
|
||||||
|
print "# bytes: ", (-s "$ENV{MYSQLD_DATADIR}/test/t1.ibd"), "\n";
|
||||||
|
EOF
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
perl;
|
||||||
|
print "# bytes: ", (-s "$ENV{MYSQLD_DATADIR}/test/t1.ibd"), "\n";
|
||||||
|
EOF
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
let $page_size=`SELECT @@innodb_page_size`;
|
||||||
|
if ($page_size < 32768)
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# Table 3: compressed BLOB
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b BLOB)
|
||||||
|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
perl;
|
||||||
|
print "# bytes: ", (-s "$ENV{MYSQLD_DATADIR}/test/t1.ibd"), "\n";
|
||||||
|
EOF
|
||||||
|
INSERT INTO t1 SELECT seq,REPEAT('a',30000) FROM seq_1_to_20;
|
||||||
|
perl;
|
||||||
|
print "# bytes: ", (-s "$ENV{MYSQLD_DATADIR}/test/t1.ibd"), "\n";
|
||||||
|
EOF
|
||||||
|
DROP TABLE t1;
|
||||||
|
}
|
10
mysql-test/suite/innodb/t/innodb-system-table-view.opt
Normal file
10
mysql-test/suite/innodb/t/innodb-system-table-view.opt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
--innodb
|
||||||
|
--innodb-sys-tablespaces
|
||||||
|
--innodb-sys-datafiles
|
||||||
|
--innodb-sys-tablestats
|
||||||
|
--innodb-sys-tables
|
||||||
|
--innodb-sys-columns
|
||||||
|
--innodb-sys-indexes
|
||||||
|
--innodb-sys-fields
|
||||||
|
--innodb-sys-foreign
|
||||||
|
--innodb-sys-foreign-cols
|
136
mysql-test/suite/innodb/t/innodb-system-table-view.test
Normal file
136
mysql-test/suite/innodb/t/innodb-system-table-view.test
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
# This is the test for Information Schema System Table View
|
||||||
|
# that displays the InnoDB system table content through
|
||||||
|
# information schema tables.
|
||||||
|
|
||||||
|
--source include/innodb_page_size_small.inc
|
||||||
|
|
||||||
|
LET $MYSQLD_DATADIR = `select @@datadir`;
|
||||||
|
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
|
||||||
|
|
||||||
|
# The IDs of mysql.innodb_table_stats and mysql.innodb_index_stats may
|
||||||
|
# vary depending on whether the tables have been rebuilt
|
||||||
|
# by previously run tests.
|
||||||
|
SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables
|
||||||
|
WHERE name = 'mysql/innodb_table_stats';
|
||||||
|
SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables
|
||||||
|
WHERE name = 'mysql/innodb_index_stats';
|
||||||
|
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY table_id;
|
||||||
|
|
||||||
|
SELECT table_id,pos,mtype,prtype,len,name
|
||||||
|
FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
|
||||||
|
WHERE table_id NOT IN (@table_stats_id, @index_stats_id)
|
||||||
|
ORDER BY table_id, pos;
|
||||||
|
|
||||||
|
--replace_column 1 # 3 # 6 # 7 #
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||||
|
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY index_id;
|
||||||
|
|
||||||
|
SELECT index_id,pos,name FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS
|
||||||
|
WHERE name NOT IN ('database_name', 'table_name', 'index_name', 'stat_name')
|
||||||
|
ORDER BY index_id, pos;
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||||
|
|
||||||
|
CREATE TABLE t_redundant (a INT KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=innodb;
|
||||||
|
CREATE TABLE t_compact (a INT KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=innodb;
|
||||||
|
CREATE TABLE t_compressed (a INT KEY, b TEXT) ROW_FORMAT=COMPRESSED ENGINE=innodb KEY_BLOCK_SIZE=2;
|
||||||
|
CREATE TABLE t_dynamic (a INT KEY, b TEXT) ROW_FORMAT=DYNAMIC ENGINE=innodb;
|
||||||
|
|
||||||
|
--source suite/innodb/include/show_i_s_tables.inc
|
||||||
|
--source suite/innodb/include/show_i_s_tablespaces.inc
|
||||||
|
|
||||||
|
DROP TABLE t_redundant, t_compact, t_compressed, t_dynamic;
|
||||||
|
|
||||||
|
SELECT count(*) FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS;
|
||||||
|
|
||||||
|
# Create a foreign key constraint, and verify the information
|
||||||
|
# in INFORMATION_SCHEMA.INNODB_SYS_FOREIGN and
|
||||||
|
# INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS
|
||||||
|
CREATE TABLE parent (id INT NOT NULL,
|
||||||
|
PRIMARY KEY (id)) ENGINE=INNODB;
|
||||||
|
|
||||||
|
CREATE TABLE child (id INT, parent_id INT,
|
||||||
|
INDEX par_ind (parent_id),
|
||||||
|
CONSTRAINT constraint_test
|
||||||
|
FOREIGN KEY (parent_id) REFERENCES parent(id)
|
||||||
|
ON DELETE CASCADE) ENGINE=INNODB;
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||||
|
|
||||||
|
# Insert a row in the table "parent", and see whether that reflected in
|
||||||
|
# INNODB_SYS_TABLESTATS
|
||||||
|
INSERT INTO parent VALUES(1);
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT name, num_rows, ref_count
|
||||||
|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||||
|
WHERE name LIKE "%parent";
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT NAME, FLAG, N_COLS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name NOT LIKE 'sys/%';
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT name, n_fields
|
||||||
|
from INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||||
|
WHERE table_id In (SELECT table_id from
|
||||||
|
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name LIKE "%parent%");
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT name, n_fields
|
||||||
|
from INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||||
|
WHERE table_id In (SELECT table_id from
|
||||||
|
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name LIKE "%child%");
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT name, pos, mtype, len
|
||||||
|
from INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
|
||||||
|
WHERE table_id In (SELECT table_id from
|
||||||
|
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||||
|
WHERE name LIKE "%child%");
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
|
||||||
|
DROP TABLE parent;
|
||||||
|
|
||||||
|
# Create table with 2 columns in the foreign key constraint
|
||||||
|
CREATE TABLE parent (id INT NOT NULL, newid INT NOT NULL,
|
||||||
|
PRIMARY KEY (id, newid)) ENGINE=INNODB;
|
||||||
|
|
||||||
|
CREATE TABLE child (id INT, parent_id INT,
|
||||||
|
INDEX par_ind (parent_id),
|
||||||
|
CONSTRAINT constraint_test
|
||||||
|
FOREIGN KEY (id, parent_id) REFERENCES parent(id, newid)
|
||||||
|
ON DELETE CASCADE) ENGINE=INNODB;
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||||
|
|
||||||
|
INSERT INTO parent VALUES(1, 9);
|
||||||
|
|
||||||
|
# Nested query will open the table handle twice
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM parent WHERE id IN (SELECT id FROM parent);
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
|
SELECT name, num_rows, ref_count
|
||||||
|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||||
|
WHERE name LIKE "%parent";
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
|
||||||
|
DROP TABLE parent;
|
51
mysql-test/suite/innodb/t/innodb-wl5980-debug.test
Normal file
51
mysql-test/suite/innodb/t/innodb-wl5980-debug.test
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#
|
||||||
|
# This testcase is to check the various debug injection points
|
||||||
|
# to make sure error conditions react corectly and acheive
|
||||||
|
# better code coverage.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Not supported in embedded
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
# These messages are expected in the log
|
||||||
|
call mtr.add_suppression("Cannot find space id [0-9]+ in the tablespace memory cache");
|
||||||
|
call mtr.add_suppression("Cannot rename table 'test/t1' to 'test/t2' since the dictionary cache already contains 'test/t2'.");
|
||||||
|
|
||||||
|
# Set up some variables
|
||||||
|
LET $MYSQL_DATA_DIR = `select @@datadir`;
|
||||||
|
LET $data_directory_clause = DATA DIRECTORY='$MYSQL_TMP_DIR/alt_dir';
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # WL5980 Remote tablespace debug error injection tests.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||||
|
eval CREATE TABLE t1 (a int KEY, b text) ENGINE=Innodb $data_directory_clause ;
|
||||||
|
INSERT INTO t1 VALUES (1, 'tablespace');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Test the second injection point in fil_rename_tablespace().
|
||||||
|
--echo # Make sure the table is useable after this failure.
|
||||||
|
--echo #
|
||||||
|
SET @save_dbug=@@debug_dbug;
|
||||||
|
SET debug_dbug="+d,fil_rename_tablespace_failure_2";
|
||||||
|
--disable_result_log
|
||||||
|
--error ER_ERROR_ON_RENAME
|
||||||
|
RENAME TABLE t1 TO t2;
|
||||||
|
--enable_result_log
|
||||||
|
SET debug_dbug=@save_dbug;
|
||||||
|
INSERT INTO t1 VALUES (2, 'tablespace');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Cleanup
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--rmdir $MYSQL_TMP_DIR/alt_dir/test
|
||||||
|
--rmdir $MYSQL_TMP_DIR/alt_dir
|
58
mysql-test/suite/innodb/t/trx_id_future.test
Normal file
58
mysql-test/suite/innodb/t/trx_id_future.test
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
--echo #
|
||||||
|
--echo # Bug #20445525 ADD A CONSISTENCY CHECK AGAINST DB_TRX_ID BEING
|
||||||
|
--echo # IN THE FUTURE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--source include/not_debug.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
let PAGE_SIZE=`select @@innodb_page_size`;
|
||||||
|
|
||||||
|
CREATE TABLE t1(a INT) row_format=redundant engine=innoDB;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
|
||||||
|
let MYSQLD_DATADIR=`select @@datadir`;
|
||||||
|
|
||||||
|
--source include/shutdown_mysqld.inc
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/crc32.pl";
|
||||||
|
my $file = "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
|
||||||
|
open(FILE, "+<", $file) || die "Unable to open $file";
|
||||||
|
binmode FILE;
|
||||||
|
|
||||||
|
#Seek the the infimum record and get the offset to next record
|
||||||
|
#Infimum record exist at offset 101 for redundant format
|
||||||
|
#And offset to the next record is present 2 bytes prior to
|
||||||
|
#infimum record
|
||||||
|
|
||||||
|
my $ps= $ENV{PAGE_SIZE};
|
||||||
|
my $page;
|
||||||
|
sysseek(FILE, 3*$ps, 0) || die "Unable to seek $file\n";
|
||||||
|
die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
|
||||||
|
#In this case the first record should be at offset 135
|
||||||
|
die unless unpack("n", substr($page, 99, 2)) == 135;
|
||||||
|
|
||||||
|
substr($page,135+6,6) = "\xff" x 6;
|
||||||
|
|
||||||
|
my $polynomial = 0x82f63b78; # CRC-32C
|
||||||
|
my $ck= pack("N",mycrc32(substr($page, 4, 22), 0, $polynomial) ^
|
||||||
|
mycrc32(substr($page, 38, $ps - 38 - 8), 0, $polynomial));
|
||||||
|
substr($page,0,4)=$ck;
|
||||||
|
substr($page,$ps-8,4)=$ck;
|
||||||
|
sysseek(FILE, 3*$ps, 0) || die "Unable to rewind $file\n";
|
||||||
|
syswrite(FILE, $page, $ps)==$ps || die "Unable to write $file\n";
|
||||||
|
close(FILE) || die "Unable to close $file";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--source include/start_mysqld.inc
|
||||||
|
|
||||||
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||||
|
let SEARCH_PATTERN= \[Warning\] InnoDB: A transaction id in a record of table `test`\.`t1` is newer than the system-wide maximum;
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
call mtr.add_suppression("\\[Warning\\] InnoDB: A transaction id in a record of table `test`\\.`t1` is newer than the system-wide maximum");
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
36
mysql-test/suite/rpl/r/mdev_17588.result
Normal file
36
mysql-test/suite/rpl/r/mdev_17588.result
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
connection master;
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
create table t2 (a int);
|
||||||
|
create table t3 (a int) engine=innodb;
|
||||||
|
include/save_master_gtid.inc
|
||||||
|
connection slave;
|
||||||
|
include/wait_for_slave_sql_error.inc [errno=1286]
|
||||||
|
Last_Error = 'Error 'Unknown storage engine 'innodb'' on query. Default database: 'test'. Query: 'create table t1 (a int) engine=innodb''
|
||||||
|
STOP SLAVE IO_THREAD;
|
||||||
|
include/wait_for_slave_to_stop.inc
|
||||||
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||||
|
include/start_slave.inc
|
||||||
|
include/sync_with_master_gtid.inc
|
||||||
|
show tables;
|
||||||
|
Tables_in_test
|
||||||
|
t2
|
||||||
|
show create table t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`a` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
show create table t1;
|
||||||
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
|
show create table t3;
|
||||||
|
ERROR 42S02: Table 'test.t3' doesn't exist
|
||||||
|
connection master;
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
drop table if exists t3;
|
||||||
|
include/save_master_gtid.inc
|
||||||
|
connection slave;
|
||||||
|
include/sync_with_master_gtid.inc
|
||||||
|
CALL mtr.add_suppression('Slave: Unknown storage engine .* Error_code: 1286');
|
||||||
|
include/rpl_end.inc
|
1
mysql-test/suite/rpl/t/mdev_17588-slave.opt
Normal file
1
mysql-test/suite/rpl/t/mdev_17588-slave.opt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
--loose-disable-innodb --replicate-ignore-table=test.t3
|
39
mysql-test/suite/rpl/t/mdev_17588.test
Normal file
39
mysql-test/suite/rpl/t/mdev_17588.test
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
--source include/master-slave.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
create table t2 (a int);
|
||||||
|
create table t3 (a int) engine=innodb;
|
||||||
|
--source include/save_master_gtid.inc
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
# Using ER_UNKNOWN_STORAGE_ENGINE wont work
|
||||||
|
let $slave_sql_errno= 1286;
|
||||||
|
--source include/wait_for_slave_sql_error.inc
|
||||||
|
--let $status_items= Last_Error
|
||||||
|
--source include/show_slave_status.inc
|
||||||
|
STOP SLAVE IO_THREAD;
|
||||||
|
source include/wait_for_slave_to_stop.inc;
|
||||||
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||||
|
--source include/start_slave.inc
|
||||||
|
--source include/sync_with_master_gtid.inc
|
||||||
|
show tables;
|
||||||
|
show create table t2;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
show create table t1;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
show create table t3;
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
drop table if exists t3;
|
||||||
|
--source include/save_master_gtid.inc
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--source include/sync_with_master_gtid.inc
|
||||||
|
|
||||||
|
|
||||||
|
CALL mtr.add_suppression('Slave: Unknown storage engine .* Error_code: 1286');
|
||||||
|
--source include/rpl_end.inc
|
@@ -298,7 +298,7 @@ class Write_on_release_cache
|
|||||||
public:
|
public:
|
||||||
enum flag
|
enum flag
|
||||||
{
|
{
|
||||||
FLUSH_F
|
FLUSH_F= 1
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef unsigned short flag_set;
|
typedef unsigned short flag_set;
|
||||||
|
@@ -567,14 +567,14 @@ inline bool is_system_table_name(const char *name, size_t length)
|
|||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
open_table_def()
|
open_table_def()
|
||||||
thd Thread handler
|
thd Thread handler
|
||||||
share Fill this with table definition
|
share Fill this with table definition
|
||||||
db_flags Bit mask of the following flags: OPEN_VIEW
|
flags Bit mask of the following flags: OPEN_VIEW
|
||||||
|
|
||||||
NOTES
|
NOTES
|
||||||
This function is called when the table definition is not cached in
|
This function is called when the table definition is not cached in
|
||||||
table definition cache
|
table definition cache
|
||||||
The data is returned in 'share', which is alloced by
|
The data is returned in 'share', which is allocated by
|
||||||
alloc_table_share().. The code assumes that share is initialized.
|
alloc_table_share().. The code assumes that share is initialized.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@@ -118,7 +118,6 @@ IF(CONNECT_WITH_LIBXML2)
|
|||||||
FIND_PACKAGE(LibXml2)
|
FIND_PACKAGE(LibXml2)
|
||||||
IF (LIBXML2_FOUND)
|
IF (LIBXML2_FOUND)
|
||||||
INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
|
INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
|
||||||
SET(ZLIB_LIBRARY "z") # see ZLIB_INCLUDE_DIR below
|
|
||||||
SET(XML_LIBRARY ${LIBXML2_LIBRARIES})
|
SET(XML_LIBRARY ${LIBXML2_LIBRARIES})
|
||||||
SET(CONNECT_SOURCES ${CONNECT_SOURCES} libdoc.cpp libdoc.h)
|
SET(CONNECT_SOURCES ${CONNECT_SOURCES} libdoc.cpp libdoc.h)
|
||||||
add_definitions(-DLIBXML2_SUPPORT)
|
add_definitions(-DLIBXML2_SUPPORT)
|
||||||
@@ -337,14 +336,6 @@ IF(NOT TARGET connect)
|
|||||||
RETURN()
|
RETURN()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
# Don't link with bundled zlib and systel libxml2 at the same time.
|
|
||||||
# System libxml2 uses system zlib, might conflict with the bundled one.
|
|
||||||
IF (XML_LIBRARY AND BUILD_BUNDLED_ZLIB)
|
|
||||||
GET_PROPERTY(INCS TARGET connect PROPERTY INCLUDE_DIRECTORIES)
|
|
||||||
LIST(REMOVE_ITEM INCS ${ZLIB_INCLUDE_DIR})
|
|
||||||
SET_PROPERTY(TARGET connect PROPERTY INCLUDE_DIRECTORIES ${INCS})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
IF (libmongoc-1.0_FOUND)
|
IF (libmongoc-1.0_FOUND)
|
||||||
SET_TARGET_PROPERTIES(connect PROPERTIES LINK_FLAGS
|
SET_TARGET_PROPERTIES(connect PROPERTIES LINK_FLAGS
|
||||||
|
@@ -1109,26 +1109,26 @@ buf_page_is_corrupted(
|
|||||||
the first page of each file of the system tablespace.
|
the first page of each file of the system tablespace.
|
||||||
Ignore it for the system tablespace. */
|
Ignore it for the system tablespace. */
|
||||||
if (!checksum_field1 && !checksum_field2) {
|
if (!checksum_field1 && !checksum_field2) {
|
||||||
ulint i = 0;
|
/* Checksum fields can have valid value as zero.
|
||||||
do {
|
If the page is not empty then do the checksum
|
||||||
if (read_buf[i]) {
|
calculation for the page. */
|
||||||
return true;
|
bool all_zeroes = true;
|
||||||
}
|
for (size_t i = 0; i < srv_page_size; i++) {
|
||||||
} while (++i < FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION);
|
|
||||||
|
|
||||||
#ifndef UNIV_INNOCHECKSUM
|
#ifndef UNIV_INNOCHECKSUM
|
||||||
if (!space || !space->id) {
|
if (i == FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION
|
||||||
/* Skip FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION
|
&& (!space || !space->id)) {
|
||||||
in the system tablespace. */
|
i += 8;
|
||||||
i += 8;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
do {
|
|
||||||
if (read_buf[i]) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
} while (++i < srv_page_size);
|
#endif
|
||||||
return false;
|
if (read_buf[i]) {
|
||||||
|
all_zeroes = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (all_zeroes) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (curr_algo) {
|
switch (curr_algo) {
|
||||||
|
@@ -2923,9 +2923,15 @@ fil_rename_tablespace(
|
|||||||
space->n_pending_ops--;
|
space->n_pending_ops--;
|
||||||
ut_ad(space->name == old_space_name);
|
ut_ad(space->name == old_space_name);
|
||||||
ut_ad(node->name == old_file_name);
|
ut_ad(node->name == old_file_name);
|
||||||
|
bool success;
|
||||||
bool success = os_file_rename(
|
DBUG_EXECUTE_IF("fil_rename_tablespace_failure_2",
|
||||||
innodb_data_file_key, old_file_name, new_file_name);
|
goto skip_second_rename; );
|
||||||
|
success = os_file_rename(innodb_data_file_key,
|
||||||
|
old_file_name,
|
||||||
|
new_file_name);
|
||||||
|
DBUG_EXECUTE_IF("fil_rename_tablespace_failure_2",
|
||||||
|
skip_second_rename:
|
||||||
|
success = false; );
|
||||||
|
|
||||||
ut_ad(node->name == old_file_name);
|
ut_ad(node->name == old_file_name);
|
||||||
|
|
||||||
|
@@ -2559,6 +2559,7 @@ write_buffers:
|
|||||||
BTR_SEARCH_LEAF, &pcur,
|
BTR_SEARCH_LEAF, &pcur,
|
||||||
&mtr);
|
&mtr);
|
||||||
buf = row_merge_buf_empty(buf);
|
buf = row_merge_buf_empty(buf);
|
||||||
|
merge_buf[i] = buf;
|
||||||
/* Restart the outer loop on the
|
/* Restart the outer loop on the
|
||||||
record. We did not insert it
|
record. We did not insert it
|
||||||
into any index yet. */
|
into any index yet. */
|
||||||
@@ -2684,6 +2685,7 @@ write_buffers:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
merge_buf[i] = row_merge_buf_empty(buf);
|
merge_buf[i] = row_merge_buf_empty(buf);
|
||||||
|
buf = merge_buf[i];
|
||||||
|
|
||||||
if (UNIV_LIKELY(row != NULL)) {
|
if (UNIV_LIKELY(row != NULL)) {
|
||||||
/* Try writing the record again, now
|
/* Try writing the record again, now
|
||||||
|
@@ -355,10 +355,12 @@ static PSI_file_info all_aria_files[]=
|
|||||||
{ &key_file_control, "control", PSI_FLAG_GLOBAL}
|
{ &key_file_control, "control", PSI_FLAG_GLOBAL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# ifdef HAVE_PSI_STAGE_INTERFACE
|
||||||
static PSI_stage_info *all_aria_stages[]=
|
static PSI_stage_info *all_aria_stages[]=
|
||||||
{
|
{
|
||||||
& stage_waiting_for_a_resource
|
& stage_waiting_for_a_resource
|
||||||
};
|
};
|
||||||
|
# endif /* HAVE_PSI_STAGE_INTERFACE */
|
||||||
|
|
||||||
static void init_aria_psi_keys(void)
|
static void init_aria_psi_keys(void)
|
||||||
{
|
{
|
||||||
@@ -379,9 +381,10 @@ static void init_aria_psi_keys(void)
|
|||||||
|
|
||||||
count= array_elements(all_aria_files);
|
count= array_elements(all_aria_files);
|
||||||
mysql_file_register(category, all_aria_files, count);
|
mysql_file_register(category, all_aria_files, count);
|
||||||
|
# ifdef HAVE_PSI_STAGE_INTERFACE
|
||||||
count= array_elements(all_aria_stages);
|
count= array_elements(all_aria_stages);
|
||||||
mysql_stage_register(category, all_aria_stages, count);
|
mysql_stage_register(category, all_aria_stages, count);
|
||||||
|
# endif /* HAVE_PSI_STAGE_INTERFACE */
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define init_aria_psi_keys() /* no-op */
|
#define init_aria_psi_keys() /* no-op */
|
||||||
|
@@ -66,13 +66,14 @@ id id2 value
|
|||||||
2 1 2
|
2 1 2
|
||||||
truncate table t2;
|
truncate table t2;
|
||||||
connection con1;
|
connection con1;
|
||||||
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked1 WAIT_FOR go1';
|
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked1 WAIT_FOR go';
|
||||||
insert into t1 values (1,1);
|
insert into t1 values (1,1);
|
||||||
connection con2;
|
|
||||||
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked2 WAIT_FOR go2';
|
|
||||||
insert into t2 values (1,1,1);
|
|
||||||
connection default;
|
connection default;
|
||||||
set debug_sync='now WAIT_FOR parked1';
|
set debug_sync='now WAIT_FOR parked1';
|
||||||
|
connection con2;
|
||||||
|
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked2 WAIT_FOR go';
|
||||||
|
insert into t2 values (1,1,1);
|
||||||
|
connection default;
|
||||||
set debug_sync='now WAIT_FOR parked2';
|
set debug_sync='now WAIT_FOR parked2';
|
||||||
connection con3;
|
connection con3;
|
||||||
set session rocksdb_lock_wait_timeout=1;
|
set session rocksdb_lock_wait_timeout=1;
|
||||||
@@ -81,8 +82,7 @@ ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|||||||
insert into t2 values (2,1,2);
|
insert into t2 values (2,1,2);
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
connection default;
|
connection default;
|
||||||
set debug_sync='now SIGNAL go1';
|
set debug_sync='now SIGNAL go';
|
||||||
set debug_sync='now SIGNAL go2';
|
|
||||||
connection con1;
|
connection con1;
|
||||||
connection con2;
|
connection con2;
|
||||||
connection default;
|
connection default;
|
||||||
|
@@ -38,7 +38,7 @@ rocksdb_read_free_rpl_stress : Read-Free replication is not supported
|
|||||||
blind_delete_rr : Read-Free replication is not supported
|
blind_delete_rr : Read-Free replication is not supported
|
||||||
blind_delete_rc : Read-Free replication is not supported
|
blind_delete_rc : Read-Free replication is not supported
|
||||||
|
|
||||||
shutdown: requires support for SHUTDOWN statement which calls exit().
|
force_shutdown: requires support for SHUTDOWN statement which calls exit().
|
||||||
|
|
||||||
##
|
##
|
||||||
## Tests that do not fit MariaDB's test environment. Upstream seems to test
|
## Tests that do not fit MariaDB's test environment. Upstream seems to test
|
||||||
@@ -70,6 +70,8 @@ gap_lock_raise_error: MDEV-11735: MyRocks: Gap Lock detector support
|
|||||||
show_engine : MariaRocks: MariaDB doesnt support SHOW ENGINE rocksdb TRANSACTION STATUS
|
show_engine : MariaRocks: MariaDB doesnt support SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
issue243_transactionStatus: MariaDB doesnt support SHOW ENGINE rocksdb TRANSACTION STATUS
|
issue243_transactionStatus: MariaDB doesnt support SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
rpl_row_not_found : MariaDB doesnt support slave_exec_mode='SEMI_STRICT'
|
rpl_row_not_found : MariaDB doesnt support slave_exec_mode='SEMI_STRICT'
|
||||||
|
rpl_row_not_found_rc : MariaDB doesnt support slave_exec_mode='SEMI_STRICT'
|
||||||
|
|
||||||
ddl_high_priority: Needs fractional @@lock_wait_timeout
|
ddl_high_priority: Needs fractional @@lock_wait_timeout
|
||||||
deadlock_tracking : Needs SHOW ENGINE ROCKSDB TRANSACTION STATUS
|
deadlock_tracking : Needs SHOW ENGINE ROCKSDB TRANSACTION STATUS
|
||||||
bytes_written: Needs I_S.TABLE_STATISTICS.IO_WRITE_BYTES
|
bytes_written: Needs I_S.TABLE_STATISTICS.IO_WRITE_BYTES
|
||||||
|
@@ -20,11 +20,13 @@ DROP TABLE IF EXISTS t1;
|
|||||||
--replace_result error: error
|
--replace_result error: error
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data';
|
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data';
|
||||||
|
--replace_result error: error
|
||||||
show warnings;
|
show warnings;
|
||||||
|
|
||||||
--replace_result error: error
|
--replace_result error: error
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index';
|
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index';
|
||||||
|
--replace_result error: error
|
||||||
show warnings;
|
show warnings;
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -41,6 +43,7 @@ CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY) ENGINE=rocksdb PARTITION BY RANGE
|
|||||||
DATA DIRECTORY = '/foo/bar/data/',
|
DATA DIRECTORY = '/foo/bar/data/',
|
||||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||||
);
|
);
|
||||||
|
--replace_result error: error
|
||||||
show warnings;
|
show warnings;
|
||||||
|
|
||||||
--replace_result error: error
|
--replace_result error: error
|
||||||
@@ -53,4 +56,5 @@ CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE
|
|||||||
INDEX DIRECTORY = '/foo/bar/data/',
|
INDEX DIRECTORY = '/foo/bar/data/',
|
||||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||||
);
|
);
|
||||||
|
--replace_result error: error
|
||||||
show warnings;
|
show warnings;
|
||||||
|
@@ -102,15 +102,17 @@ truncate table t2;
|
|||||||
|
|
||||||
# 4) simulating T1 GetForUpdate() -> T2 GetForUpdate(). T2 should fail with lock wait timeout.
|
# 4) simulating T1 GetForUpdate() -> T2 GetForUpdate(). T2 should fail with lock wait timeout.
|
||||||
connection con1;
|
connection con1;
|
||||||
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked1 WAIT_FOR go1';
|
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked1 WAIT_FOR go';
|
||||||
send insert into t1 values (1,1);
|
send insert into t1 values (1,1);
|
||||||
|
|
||||||
connection con2;
|
|
||||||
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked2 WAIT_FOR go2';
|
|
||||||
send insert into t2 values (1,1,1);
|
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
set debug_sync='now WAIT_FOR parked1';
|
set debug_sync='now WAIT_FOR parked1';
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
set debug_sync='rocksdb.update_write_row_after_unique_check SIGNAL parked2 WAIT_FOR go';
|
||||||
|
send insert into t2 values (1,1,1);
|
||||||
|
|
||||||
|
connection default;
|
||||||
set debug_sync='now WAIT_FOR parked2';
|
set debug_sync='now WAIT_FOR parked2';
|
||||||
|
|
||||||
connection con3;
|
connection con3;
|
||||||
@@ -121,8 +123,7 @@ insert into t1 values (1,2);
|
|||||||
insert into t2 values (2,1,2);
|
insert into t2 values (2,1,2);
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
set debug_sync='now SIGNAL go1';
|
set debug_sync='now SIGNAL go';
|
||||||
set debug_sync='now SIGNAL go2';
|
|
||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
reap;
|
reap;
|
||||||
|
@@ -11,6 +11,8 @@ rpl_gtid_rocksdb_sys_header : MariaDB doesn't support printing "RocksDB: Last My
|
|||||||
singledelete_idempotent_recovery: MariaDB doesn't support --slave-use-idempotent-for-recovery
|
singledelete_idempotent_recovery: MariaDB doesn't support --slave-use-idempotent-for-recovery
|
||||||
rpl_mts_dependency_unique_key_conflicts: MariaDB doesn't support --slave-use-idempotent-for-recovery
|
rpl_mts_dependency_unique_key_conflicts: MariaDB doesn't support --slave-use-idempotent-for-recovery
|
||||||
rpl_missing_columns_sk_update : Uses log_column_names=ON feature which is only present in FB/MySQL
|
rpl_missing_columns_sk_update : Uses log_column_names=ON feature which is only present in FB/MySQL
|
||||||
|
optimize_myrocks_replace_into: requires @@enable_blind_replace support.
|
||||||
|
rpl_gtid_crash_safe_optimized: requires slave_gtid_info=optimized
|
||||||
|
|
||||||
##
|
##
|
||||||
## Tests that do not fit MariaDB's test environment (Functional tests only,
|
## Tests that do not fit MariaDB's test environment (Functional tests only,
|
||||||
|
@@ -50,7 +50,7 @@ if [ $1 = 1 ] ; then
|
|||||||
|
|
||||||
# Change permissions so that the user that will run the MySQL daemon
|
# Change permissions so that the user that will run the MySQL daemon
|
||||||
# owns all database files.
|
# owns all database files.
|
||||||
chown -R %{mysqld_user}:%{mysqld_group} $datadir
|
chown -R -f %{mysqld_user}:%{mysqld_group} $datadir
|
||||||
|
|
||||||
if [ ! -e $datadir/mysql ]; then
|
if [ ! -e $datadir/mysql ]; then
|
||||||
# Create data directory
|
# Create data directory
|
||||||
|
@@ -124,6 +124,8 @@ string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
|
|||||||
|
|
||||||
ADD_CONVENIENCE_LIBRARY(zlib STATIC
|
ADD_CONVENIENCE_LIBRARY(zlib STATIC
|
||||||
${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
||||||
|
RESTRICT_SYMBOL_EXPORTS(zlib)
|
||||||
|
|
||||||
|
|
||||||
if(NOT CYGWIN)
|
if(NOT CYGWIN)
|
||||||
# This property causes shared libraries on Linux to have the full version
|
# This property causes shared libraries on Linux to have the full version
|
||||||
@@ -142,7 +144,4 @@ if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
|||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
# On unix-like platforms the library is almost always called libz
|
# On unix-like platforms the library is almost always called libz
|
||||||
set_target_properties(zlib PROPERTIES OUTPUT_NAME z)
|
set_target_properties(zlib PROPERTIES OUTPUT_NAME z)
|
||||||
if(NOT APPLE)
|
|
||||||
set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
Reference in New Issue
Block a user