summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-11-11 11:02:27 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2020-11-11 11:15:11 +0200
commit5407117a59a87a1e0042581bc9c258cd2e743c85 (patch)
treeac30d7e0ba8501683cff593ae523035a3a8b3b4a
parent9bc874a594edbc0e124131d0ff30b44f5fade52d (diff)
downloadmariadb-git-bb-10.6-MDEV-23497.tar.gz
MDEV-22343 Remove SYS_TABLESPACES and SYS_DATAFILESbb-10.6-MDEV-23497
The InnoDB internal tables SYS_TABLESPACES and SYS_DATAFILES as well as the INFORMATION_SCHEMA views INNODB_SYS_TABLESPACES and INNODB_SYS_DATAFILES were introduced in MySQL 5.6 for no good reason in mysql/mysql-server/commit/e9255a22ef16d612a8076bc0b34002bc5a784627 when the InnoDB support for the DATA DIRECTORY attribute was introduced. The file system should be the authoritative source of information on files. Storing information about file system paths in the file system (symlinks, or even the .isl files that were unfortunately chosen as the solution) is sufficient. If information is additionally stored in some hidden tables inside the InnoDB system tablespace, everything unnecessarily becomes more complicated, because more copies of data mean more opportunity for the copies to be out of sync, and because modifying the data in the system tablespace in the desired way might not be possible at all without modifying the InnoDB source code. So, the copy in the system tablespace basically is a redundant, non-authoritative source of information. We will stop creating or accessing the system tables SYS_TABLESPACES and SYS_DATAFILES. We will also remove the view INFORMATION_SCHEMA.INNODB_SYS_DATAFILES along with SYS_DATAFILES. The view INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES will be repurposed to directly reflect fil_system.space_list. The column PAGE_SIZE, which would always contain the value of the GLOBAL read-only variable innodb_page_size, is removed. The column ZIP_PAGE_SIZE, which would actually contain the physical page size of a page, is renamed to PAGE_SIZE. Finally, a new column FILENAME is added, as a replacement of SYS_DATAFILES.PATH. This will also address MDEV-21801 (files that were created before upgrading to MySQL 5.6 or MariaDB 10.0 or later were never registered in SYS_TABLESPACES or SYS_DATAFILES) and MDEV-21801 (information about the system tablespace is not stored in SYS_TABLESPACES or SYS_DATAFILES).
-rw-r--r--mysql-test/suite/innodb/include/show_i_s_tablespaces.inc18
-rw-r--r--mysql-test/suite/innodb/r/information_schema_grants.result9
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-online-fk.result10
-rw-r--r--mysql-test/suite/innodb/r/innodb-system-table-view.result51
-rw-r--r--mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result8
-rw-r--r--mysql-test/suite/innodb/r/rename_table.result8
-rw-r--r--mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff74
-rw-r--r--mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff74
-rw-r--r--mysql-test/suite/innodb/r/table_flags,debug.rdiff72
-rw-r--r--mysql-test/suite/innodb/r/table_flags.result46
-rw-r--r--mysql-test/suite/innodb/r/temporary_table_optimization.result9
-rw-r--r--mysql-test/suite/innodb/t/information_schema_grants.opt1
-rw-r--r--mysql-test/suite/innodb/t/information_schema_grants.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb-system-table-view.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test5
-rw-r--r--mysql-test/suite/innodb/t/rename_table.opt2
-rw-r--r--mysql-test/suite/innodb/t/rename_table.test8
-rw-r--r--mysql-test/suite/innodb/t/temporary_table_optimization.opt2
-rw-r--r--mysql-test/suite/innodb/t/temporary_table_optimization.test5
-rw-r--r--mysql-test/suite/innodb_i_s/innodb_sys_datafiles.opt1
-rw-r--r--mysql-test/suite/innodb_i_s/innodb_sys_datafiles.result6
-rw-r--r--mysql-test/suite/innodb_i_s/innodb_sys_datafiles.test3
-rw-r--r--mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result2
-rw-r--r--mysql-test/suite/innodb_zip/r/restart.result48
-rw-r--r--mysql-test/suite/innodb_zip/t/page_size.opt1
-rw-r--r--mysql-test/suite/innodb_zip/t/restart.opt1
-rw-r--r--storage/innobase/dict/dict0crea.cc191
-rw-r--r--storage/innobase/dict/dict0dict.cc84
-rw-r--r--storage/innobase/dict/dict0load.cc401
-rw-r--r--storage/innobase/fil/fil0fil.cc121
-rw-r--r--storage/innobase/handler/ha_innodb.cc2
-rw-r--r--storage/innobase/handler/i_s.cc463
-rw-r--r--storage/innobase/handler/i_s.h3
-rw-r--r--storage/innobase/include/dict0boot.h31
-rw-r--r--storage/innobase/include/dict0crea.h24
-rw-r--r--storage/innobase/include/dict0dict.h14
-rw-r--r--storage/innobase/include/dict0load.h57
-rw-r--r--storage/innobase/include/fil0fil.h2
-rw-r--r--storage/innobase/include/srv0start.h2
-rw-r--r--storage/innobase/row/row0import.cc4
-rw-r--r--storage/innobase/row/row0mysql.cc64
-rw-r--r--storage/innobase/srv/srv0start.cc17
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result4
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled-master.opt3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test4
45 files changed, 275 insertions, 1690 deletions
diff --git a/mysql-test/suite/innodb/include/show_i_s_tablespaces.inc b/mysql-test/suite/innodb/include/show_i_s_tablespaces.inc
index 6d0c5c63712..9b108da4115 100644
--- a/mysql-test/suite/innodb/include/show_i_s_tablespaces.inc
+++ b/mysql-test/suite/innodb/include/show_i_s_tablespaces.inc
@@ -5,14 +5,12 @@
--disable_query_log
--replace_regex /#P#/#p#/ /#SP#/#sp#/
--replace_result ./ MYSQLD_DATADIR/ $MYSQLD_DATADIR/ MYSQLD_DATADIR/ $MYSQLD_DATADIR MYSQLD_DATADIR/ $MYSQL_TMP_DIR MYSQL_TMP_DIR $INNODB_PAGE_SIZE DEFAULT
-SELECT s.name 'Space_Name',
- s.page_size 'Page_Size',
- s.zip_page_size 'Zip_Size',
- d.path 'Path'
- FROM information_schema.innodb_sys_tablespaces s,
- information_schema.innodb_sys_datafiles d
- WHERE s.space = d.space
- AND s.name NOT LIKE 'mysql/%'
- AND s.name NOT LIKE '%/#sql-ib%'
- ORDER BY s.space;
+SELECT name 'Space_Name',
+ @@GLOBAL.innodb_page_size 'Page_Size',
+ page_size 'Zip_Size',
+ filename 'Path'
+ FROM information_schema.innodb_sys_tablespaces
+ WHERE name != 'innodb_system'
+ AND name NOT LIKE 'mysql/%' AND name NOT LIKE '%/#sql-ib%'
+ ORDER BY space;
--enable_query_log
diff --git a/mysql-test/suite/innodb/r/information_schema_grants.result b/mysql-test/suite/innodb/r/information_schema_grants.result
index 622faa2920a..da66e7d8761 100644
--- a/mysql-test/suite/innodb/r/information_schema_grants.result
+++ b/mysql-test/suite/innodb/r/information_schema_grants.result
@@ -44,8 +44,6 @@ create sql security invoker view i_mutexes as select * from information_schema.i
create sql security definer view d_mutexes as select * from information_schema.innodb_mutexes;
create sql security invoker view i_sys_columns as select * from information_schema.innodb_sys_columns;
create sql security definer view d_sys_columns as select * from information_schema.innodb_sys_columns;
-create sql security invoker view i_sys_datafiles as select * from information_schema.innodb_sys_datafiles;
-create sql security definer view d_sys_datafiles as select * from information_schema.innodb_sys_datafiles;
create sql security invoker view i_sys_fields as select * from information_schema.innodb_sys_fields;
create sql security definer view d_sys_fields as select * from information_schema.innodb_sys_fields;
create sql security invoker view i_sys_foreign as select * from information_schema.innodb_sys_foreign;
@@ -205,13 +203,6 @@ ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s)
select count(*) > -1 from d_sys_columns;
count(*) > -1
1
-select count(*) > -1 from information_schema.innodb_sys_datafiles;
-ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
-select count(*) > -1 from i_sys_datafiles;
-ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
-select count(*) > -1 from d_sys_datafiles;
-count(*) > -1
-1
select count(*) > -1 from information_schema.innodb_sys_fields;
ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
select count(*) > -1 from i_sys_fields;
diff --git a/mysql-test/suite/innodb/r/innodb-index-online-fk.result b/mysql-test/suite/innodb/r/innodb-index-online-fk.result
index 854afd95aaf..a3041985519 100644
--- a/mysql-test/suite/innodb/r/innodb-index-online-fk.result
+++ b/mysql-test/suite/innodb/r/innodb-index-online-fk.result
@@ -120,10 +120,8 @@ test/child a1
test/child a2
SELECT NAME FROM information_schema.INNODB_SYS_TABLES;
NAME
-SYS_DATAFILES
SYS_FOREIGN
SYS_FOREIGN_COLS
-SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
@@ -312,10 +310,8 @@ test/child a1
test/child a2
SELECT NAME FROM information_schema.INNODB_SYS_TABLES;
NAME
-SYS_DATAFILES
SYS_FOREIGN
SYS_FOREIGN_COLS
-SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
@@ -340,10 +336,8 @@ test/child a2
test/child a3
SELECT NAME FROM information_schema.INNODB_SYS_TABLES;
NAME
-SYS_DATAFILES
SYS_FOREIGN
SYS_FOREIGN_COLS
-SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
@@ -379,10 +373,8 @@ test/child a1
test/child a2
SELECT NAME FROM information_schema.INNODB_SYS_TABLES;
NAME
-SYS_DATAFILES
SYS_FOREIGN
SYS_FOREIGN_COLS
-SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
@@ -416,10 +408,8 @@ test/child a2
test/child a3
SELECT NAME FROM information_schema.INNODB_SYS_TABLES;
NAME
-SYS_DATAFILES
SYS_FOREIGN
SYS_FOREIGN_COLS
-SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
diff --git a/mysql-test/suite/innodb/r/innodb-system-table-view.result b/mysql-test/suite/innodb/r/innodb-system-table-view.result
index 11fc1ae8cf9..a1037976866 100644
--- a/mysql-test/suite/innodb/r/innodb-system-table-view.result
+++ b/mysql-test/suite/innodb/r/innodb-system-table-view.result
@@ -9,10 +9,8 @@ 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
+13 SYS_VIRTUAL 0 6 0 Redundant 0 System
+16 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)
@@ -26,19 +24,14 @@ table_id pos mtype prtype len name
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
+13 0 6 0 8 TABLE_ID
+13 1 6 0 4 POS
+13 2 6 0 4 BASE_POS
+16 0 6 1800 8 transaction_id
+16 1 6 1800 8 commit_id
+16 2 3 526087 7 begin_timestamp
+16 3 3 526087 7 commit_timestamp
+16 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
@@ -46,8 +39,6 @@ INDEX_ID NAME TABLE_ID TYPE N_FIELDS PAGE_NO SPACE MERGE_THRESHOLD
# 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
@@ -62,16 +53,14 @@ index_id pos 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
+15 0 TABLE_ID
+15 1 POS
+15 2 BASE_POS
+18 0 transaction_id
+19 0 commit_id
+20 0 begin_timestamp
+21 0 commit_timestamp
+21 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;
@@ -95,7 +84,7 @@ test/t_dynamic DEFAULT DEFAULT 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
+6
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
@@ -119,10 +108,8 @@ 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
diff --git a/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result b/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
index 775bbc017a1..777dd678fe8 100644
--- a/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
+++ b/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
@@ -336,7 +336,6 @@ select * from information_schema.innodb_buffer_page_lru;
POOL_ID LRU_POSITION SPACE PAGE_NUMBER PAGE_TYPE FLUSH_TYPE FIX_COUNT IS_HASHED NEWEST_MODIFICATION OLDEST_MODIFICATION ACCESS_TIME TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE COMPRESSED_SIZE COMPRESSED IO_FIX IS_OLD FREE_PAGE_CLOCK
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_buffer_page_lru but the InnoDB storage engine is not installed
-select * from information_schema.innodb_buffer_stats;
select * from information_schema.innodb_sys_tables;
TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
Warnings:
@@ -366,14 +365,9 @@ ID FOR_COL_NAME REF_COL_NAME POS
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_foreign_cols but the InnoDB storage engine is not installed
select * from information_schema.innodb_sys_tablespaces;
-SPACE NAME FLAG ROW_FORMAT PAGE_SIZE ZIP_PAGE_SIZE FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
+SPACE NAME FLAG ROW_FORMAT PAGE_SIZE FILENAME FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_tablespaces but the InnoDB storage engine is not installed
-select * from information_schema.innodb_sys_datafiles;
-SPACE PATH
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_datafiles but the InnoDB storage engine is not installed
-select * from information_schema.innodb_changed_pages;
select * from information_schema.innodb_tablespaces_encryption;
SPACE NAME ENCRYPTION_SCHEME KEYSERVER_REQUESTS MIN_KEY_VERSION CURRENT_KEY_VERSION KEY_ROTATION_PAGE_NUMBER KEY_ROTATION_MAX_PAGE_NUMBER CURRENT_KEY_ID ROTATING_OR_FLUSHING
Warnings:
diff --git a/mysql-test/suite/innodb/r/rename_table.result b/mysql-test/suite/innodb/r/rename_table.result
index 23bb8c52d4a..e5f4e5d77e6 100644
--- a/mysql-test/suite/innodb/r/rename_table.result
+++ b/mysql-test/suite/innodb/r/rename_table.result
@@ -2,8 +2,8 @@ CREATE DATABASE test_jfg;
CREATE DATABASE test_jfg2;
CREATE TABLE test_jfg.test (a int unsigned PRIMARY KEY) ENGINE=InnoDB;
RENAME TABLE test_jfg.test TO test_jfg2.test;
-SELECT REPLACE(path,'\\','/') path
-FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%';
+SELECT REPLACE(filename,'\\','/') path
+FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
path
./test_jfg2/test.ibd
DROP DATABASE test_jfg;
@@ -13,8 +13,8 @@ CREATE DATABASE abc_def;
CREATE DATABASE abc_def2;
CREATE TABLE abc_def.test (a int unsigned PRIMARY KEY) ENGINE=InnoDB;
RENAME TABLE abc_def.test TO abc_def2.test1;
-SELECT REPLACE(path,'\\','/') path
-FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%';
+SELECT REPLACE(filename,'\\','/') path
+FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
path
./abc_def2/test1.ibd
DROP DATABASE abc_def;
diff --git a/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff b/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff
index 7e851cf5634..babcd88bd91 100644
--- a/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,32k,debug.rdiff
@@ -1,6 +1,6 @@
--- suite/innodb/r/table_flags.result
+++ suite/innodb/r/table_flags,32k,debug.reject
-@@ -5,96 +5,98 @@
+@@ -6,6 +6,8 @@
SET innodb_strict_mode=OFF;
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=1;
@@ -9,23 +9,13 @@
SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
+@@ -11,71 +11,71 @@
+ PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
SYS_TABLES clustered index root page (8):
- N_RECS=10; LEVEL=0; INDEX_ID=0x0000000000000001
--header=0x01000003016e (NAME=0x696e66696d756d00)
--header=0x00002815008d (NAME='SYS_DATAFILES',
-+header=0x0100000301bf (NAME=0x696e66696d756d00)
-+header=0x0000301500de (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000e,
-+ ID=0x000000000000000f,
- N_COLS=0x00000002,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
+ N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
+-header=0x01000003008d (NAME=0x696e66696d756d00)
-header=0x0000101500d5 (NAME='SYS_FOREIGN',
++header=0x0100000300de (NAME=0x696e66696d756d00)
+header=0x000018150126 (NAME='SYS_FOREIGN',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
@@ -49,8 +39,8 @@
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
--header=0x0400201501b8 (NAME='SYS_TABLESPACES',
-+header=0x040028150209 (NAME='SYS_TABLESPACES',
+-header=0x0000201501ae (NAME='SYS_VIRTUAL',
++header=0x0000281501bb (NAME='SYS_VIRTUAL',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000d,
@@ -61,69 +51,57 @@
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
--header=0x000030150244 (NAME='SYS_VIRTUAL',
-+header=0x000038150251 (NAME='SYS_VIRTUAL',
+-header=0x0400301501f2 (NAME='test/tc',
++header=0x0400301501ff (NAME='test/tc',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000f,
+ ID=0x0000000000000010,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x000040150288 (NAME='test/tc',
-+header=0x000040150295 (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000011,
-+ ID=0x0000000000000012,
N_COLS=0x80000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000002)
--header=0x000048150310 (NAME='test/td',
-+header=0x00004815031d (NAME='test/td',
+-header=0x00003815027a (NAME='test/td',
++header=0x000038150287 (NAME='test/td',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000012,
-+ ID=0x0000000000000013,
+- ID=0x0000000000000010,
++ ID=0x0000000000000011,
N_COLS=0x80000001,
TYPE=0x00000021,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000003)
--header=0x000058150200 (NAME='test/tp',
-+header=0x00005815008d (NAME='test/tp',
+-header=0x00004815016a (NAME='test/tp',
++header=0x00004815008d (NAME='test/tp',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000014,
-+ ID=0x0000000000000015,
+- ID=0x0000000000000012,
++ ID=0x0000000000000013,
N_COLS=0x80000001,
TYPE=0x000009a1,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000005)
--header=0x0000381502cc (NAME='test/tr',
-+header=0x0000101502d9 (NAME='test/tr',
+-header=0x000028150236 (NAME='test/tr',
++header=0x000010150243 (NAME='test/tr',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000010,
-+ ID=0x0000000000000011,
+- ID=0x000000000000000e,
++ ID=0x000000000000000f,
N_COLS=0x00000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
-@@ -104,9 +106,9 @@
- header=0x000050150074 (NAME='test/tz',
+@@ -85,9 +85,9 @@
+ header=0x000040150074 (NAME='test/tz',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000013,
-+ ID=0x0000000000000014,
+- ID=0x0000000000000011,
++ ID=0x0000000000000012,
N_COLS=0x80000001,
- TYPE=0x00000023,
+ TYPE=0x00000021,
diff --git a/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff b/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff
index da52f17fa68..c8763b4c093 100644
--- a/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,64k,debug.rdiff
@@ -1,6 +1,6 @@
--- suite/innodb/r/table_flags.result
+++ suite/innodb/r/table_flags,64k,debug.reject
-@@ -5,96 +5,98 @@
+@@ -6,6 +6,8 @@
SET innodb_strict_mode=OFF;
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=1;
@@ -9,23 +9,13 @@
SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
+@@ -11,71 +11,71 @@
+ PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
SYS_TABLES clustered index root page (8):
- N_RECS=10; LEVEL=0; INDEX_ID=0x0000000000000001
--header=0x01000003016e (NAME=0x696e66696d756d00)
--header=0x00002815008d (NAME='SYS_DATAFILES',
-+header=0x0100000301bf (NAME=0x696e66696d756d00)
-+header=0x0000301500de (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000e,
-+ ID=0x000000000000000f,
- N_COLS=0x00000002,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
+ N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
+-header=0x01000003008d (NAME=0x696e66696d756d00)
-header=0x0000101500d5 (NAME='SYS_FOREIGN',
++header=0x0100000300de (NAME=0x696e66696d756d00)
+header=0x000018150126 (NAME='SYS_FOREIGN',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
@@ -49,8 +39,8 @@
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
--header=0x0400201501b8 (NAME='SYS_TABLESPACES',
-+header=0x040028150209 (NAME='SYS_TABLESPACES',
+-header=0x0000201501ae (NAME='SYS_VIRTUAL',
++header=0x0000281501bb (NAME='SYS_VIRTUAL',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000d,
@@ -61,69 +51,57 @@
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
--header=0x000030150244 (NAME='SYS_VIRTUAL',
-+header=0x000038150251 (NAME='SYS_VIRTUAL',
+-header=0x0400301501f2 (NAME='test/tc',
++header=0x0400301501ff (NAME='test/tc',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000f,
+ ID=0x0000000000000010,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x000040150288 (NAME='test/tc',
-+header=0x000040150295 (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000011,
-+ ID=0x0000000000000012,
N_COLS=0x80000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000002)
--header=0x000048150310 (NAME='test/td',
-+header=0x00004815031d (NAME='test/td',
+-header=0x00003815027a (NAME='test/td',
++header=0x000038150287 (NAME='test/td',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000012,
-+ ID=0x0000000000000013,
+- ID=0x0000000000000010,
++ ID=0x0000000000000011,
N_COLS=0x80000001,
TYPE=0x00000021,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000003)
--header=0x000058150200 (NAME='test/tp',
-+header=0x00005815008d (NAME='test/tp',
+-header=0x00004815016a (NAME='test/tp',
++header=0x00004815008d (NAME='test/tp',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000014,
-+ ID=0x0000000000000015,
+- ID=0x0000000000000012,
++ ID=0x0000000000000013,
N_COLS=0x80000001,
TYPE=0x000009a1,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000005)
--header=0x0000381502cc (NAME='test/tr',
-+header=0x0000101502d9 (NAME='test/tr',
+-header=0x000028150236 (NAME='test/tr',
++header=0x000010150243 (NAME='test/tr',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000010,
-+ ID=0x0000000000000011,
+- ID=0x000000000000000e,
++ ID=0x000000000000000f,
N_COLS=0x00000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
-@@ -104,9 +106,9 @@
- header=0x000050150074 (NAME='test/tz',
+@@ -85,9 +85,9 @@
+ header=0x000040150074 (NAME='test/tz',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000013,
-+ ID=0x0000000000000014,
+- ID=0x0000000000000011,
++ ID=0x0000000000000012,
N_COLS=0x80000001,
- TYPE=0x00000023,
+ TYPE=0x00000021,
diff --git a/mysql-test/suite/innodb/r/table_flags,debug.rdiff b/mysql-test/suite/innodb/r/table_flags,debug.rdiff
index 16f748468dd..50592d95ac4 100644
--- a/mysql-test/suite/innodb/r/table_flags,debug.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,debug.rdiff
@@ -1,24 +1,12 @@
--- suite/innodb/r/table_flags.result
+++ suite/innodb/r/table_flags,debug.reject
-@@ -10,91 +10,91 @@
+@@ -11,71 +11,71 @@
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
SYS_TABLES clustered index root page (8):
- N_RECS=10; LEVEL=0; INDEX_ID=0x0000000000000001
--header=0x01000003016e (NAME=0x696e66696d756d00)
--header=0x00002815008d (NAME='SYS_DATAFILES',
-+header=0x0100000301bf (NAME=0x696e66696d756d00)
-+header=0x0000301500de (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x000000000000000e,
-+ ID=0x000000000000000f,
- N_COLS=0x00000002,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
+ N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
+-header=0x01000003008d (NAME=0x696e66696d756d00)
-header=0x0000101500d5 (NAME='SYS_FOREIGN',
++header=0x0100000300de (NAME=0x696e66696d756d00)
+header=0x000018150126 (NAME='SYS_FOREIGN',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
@@ -42,8 +30,8 @@
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
--header=0x0400201501b8 (NAME='SYS_TABLESPACES',
-+header=0x040028150209 (NAME='SYS_TABLESPACES',
+-header=0x0000201501ae (NAME='SYS_VIRTUAL',
++header=0x0000281501bb (NAME='SYS_VIRTUAL',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000d,
@@ -54,69 +42,57 @@
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
--header=0x000030150244 (NAME='SYS_VIRTUAL',
-+header=0x000038150251 (NAME='SYS_VIRTUAL',
+-header=0x0400301501f2 (NAME='test/tc',
++header=0x0400301501ff (NAME='test/tc',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000f,
+ ID=0x0000000000000010,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
--header=0x000040150288 (NAME='test/tc',
-+header=0x000040150295 (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000011,
-+ ID=0x0000000000000012,
N_COLS=0x80000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000002)
--header=0x000048150310 (NAME='test/td',
-+header=0x00004815031d (NAME='test/td',
+-header=0x00003815027a (NAME='test/td',
++header=0x000038150287 (NAME='test/td',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000012,
-+ ID=0x0000000000000013,
+- ID=0x0000000000000010,
++ ID=0x0000000000000011,
N_COLS=0x80000001,
TYPE=0x00000021,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000003)
--header=0x000058150200 (NAME='test/tp',
-+header=0x00005815008d (NAME='test/tp',
+-header=0x00004815016a (NAME='test/tp',
++header=0x00004815008d (NAME='test/tp',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000014,
-+ ID=0x0000000000000015,
+- ID=0x0000000000000012,
++ ID=0x0000000000000013,
N_COLS=0x80000001,
TYPE=0x000009a1,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000005)
--header=0x0000381502cc (NAME='test/tr',
-+header=0x0000101502d9 (NAME='test/tr',
+-header=0x000028150236 (NAME='test/tr',
++header=0x000010150243 (NAME='test/tr',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000010,
-+ ID=0x0000000000000011,
+- ID=0x000000000000000e,
++ ID=0x000000000000000f,
N_COLS=0x00000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
-@@ -104,7 +104,7 @@
- header=0x000050150074 (NAME='test/tz',
+@@ -85,7 +85,7 @@
+ header=0x000040150074 (NAME='test/tz',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
-- ID=0x0000000000000013,
-+ ID=0x0000000000000014,
+- ID=0x0000000000000011,
++ ID=0x0000000000000012,
N_COLS=0x80000001,
TYPE=0x00000023,
MIX_ID=0x0000000000000000,
diff --git a/mysql-test/suite/innodb/r/table_flags.result b/mysql-test/suite/innodb/r/table_flags.result
index 347ba5ef52c..210d370aab4 100644
--- a/mysql-test/suite/innodb/r/table_flags.result
+++ b/mysql-test/suite/innodb/r/table_flags.result
@@ -10,18 +10,8 @@ SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
SYS_TABLES clustered index root page (8):
-N_RECS=10; LEVEL=0; INDEX_ID=0x0000000000000001
-header=0x01000003016e (NAME=0x696e66696d756d00)
-header=0x00002815008d (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
- ID=0x000000000000000e,
- N_COLS=0x00000002,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
+N_RECS=8; LEVEL=0; INDEX_ID=0x0000000000000001
+header=0x01000003008d (NAME=0x696e66696d756d00)
header=0x0000101500d5 (NAME='SYS_FOREIGN',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
@@ -42,7 +32,7 @@ header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
-header=0x0400201501b8 (NAME='SYS_TABLESPACES',
+header=0x0000201501ae (NAME='SYS_VIRTUAL',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000d,
@@ -52,67 +42,57 @@ header=0x0400201501b8 (NAME='SYS_TABLESPACES',
MIX_LEN=0x00000040,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
-header=0x000030150244 (NAME='SYS_VIRTUAL',
+header=0x0400301501f2 (NAME='test/tc',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000f,
- N_COLS=0x00000003,
- TYPE=0x00000001,
- MIX_ID=0x0000000000000000,
- MIX_LEN=0x00000040,
- CLUSTER_NAME=NULL(0 bytes),
- SPACE=0x00000000)
-header=0x000040150288 (NAME='test/tc',
- DB_TRX_ID=0x000000000000,
- DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000011,
N_COLS=0x80000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000002)
-header=0x000048150310 (NAME='test/td',
+header=0x00003815027a (NAME='test/td',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000012,
+ ID=0x0000000000000010,
N_COLS=0x80000001,
TYPE=0x00000021,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000003)
-header=0x000058150200 (NAME='test/tp',
+header=0x00004815016a (NAME='test/tp',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000014,
+ ID=0x0000000000000012,
N_COLS=0x80000001,
TYPE=0x000009a1,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000005)
-header=0x0000381502cc (NAME='test/tr',
+header=0x000028150236 (NAME='test/tr',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000010,
+ ID=0x000000000000000e,
N_COLS=0x00000001,
TYPE=0x00000001,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000001)
-header=0x000050150074 (NAME='test/tz',
+header=0x000040150074 (NAME='test/tz',
DB_TRX_ID=0x000000000000,
DB_ROLL_PTR=0x80000000000000,
- ID=0x0000000000000013,
+ ID=0x0000000000000011,
N_COLS=0x80000001,
TYPE=0x00000023,
MIX_ID=0x0000000000000000,
MIX_LEN=0x00000050,
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000004)
-header=0x070008030000 (NAME=0x73757072656d756d00)
+header=0x050008030000 (NAME=0x73757072656d756d00)
# restart: with restart_parameters
SHOW CREATE TABLE tr;
ERROR 42S02: Table 'test.tr' doesn't exist in engine
diff --git a/mysql-test/suite/innodb/r/temporary_table_optimization.result b/mysql-test/suite/innodb/r/temporary_table_optimization.result
index 3459dbb7837..c678fd56880 100644
--- a/mysql-test/suite/innodb/r/temporary_table_optimization.result
+++ b/mysql-test/suite/innodb/r/temporary_table_optimization.result
@@ -244,23 +244,14 @@ index sk (b(3021))
drop table t;
CREATE TABLE t1 ( i INT ) ENGINE = Innodb;
CREATE TEMPORARY TABLE t2 ( i INT ) ENGINE = Innodb;
-SELECT COUNT(*) FROM information_schema.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%t_';
-COUNT(*)
-0
SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%test%t_';
COUNT(*)
1
CREATE TEMPORARY table t3 ( i INT ) ENGINE = Innodb;
-SELECT COUNT(*) FROM information_schema.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%t_';
-COUNT(*)
-0
SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%test%t_';
COUNT(*)
1
DROP TABLE t1,t2,t3;
-SELECT COUNT(*) FROM information_schema.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%t_';
-COUNT(*)
-0
SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%test%t_';
COUNT(*)
0
diff --git a/mysql-test/suite/innodb/t/information_schema_grants.opt b/mysql-test/suite/innodb/t/information_schema_grants.opt
index 38c5e3cf1cd..fb2052874cd 100644
--- a/mysql-test/suite/innodb/t/information_schema_grants.opt
+++ b/mysql-test/suite/innodb/t/information_schema_grants.opt
@@ -25,7 +25,6 @@
--enable-plugin-innodb-sys-foreign
--enable-plugin-innodb-sys-foreign-cols
--enable-plugin-innodb-sys-tablespaces
---enable-plugin-innodb-sys-datafiles
--enable-plugin-innodb-sys-virtual
--enable-plugin-innodb-mutexes
--enable-plugin-innodb-sys-semaphore-waits
diff --git a/mysql-test/suite/innodb/t/information_schema_grants.test b/mysql-test/suite/innodb/t/information_schema_grants.test
index 72982b3ec1c..a9b82529694 100644
--- a/mysql-test/suite/innodb/t/information_schema_grants.test
+++ b/mysql-test/suite/innodb/t/information_schema_grants.test
@@ -70,9 +70,6 @@ create sql security definer view d_mutexes as select * from information_schema.i
create sql security invoker view i_sys_columns as select * from information_schema.innodb_sys_columns;
create sql security definer view d_sys_columns as select * from information_schema.innodb_sys_columns;
-create sql security invoker view i_sys_datafiles as select * from information_schema.innodb_sys_datafiles;
-create sql security definer view d_sys_datafiles as select * from information_schema.innodb_sys_datafiles;
-
create sql security invoker view i_sys_fields as select * from information_schema.innodb_sys_fields;
create sql security definer view d_sys_fields as select * from information_schema.innodb_sys_fields;
@@ -225,12 +222,6 @@ select count(*) > -1 from i_sys_columns;
select count(*) > -1 from d_sys_columns;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
-select count(*) > -1 from information_schema.innodb_sys_datafiles;
---error ER_SPECIFIC_ACCESS_DENIED_ERROR
-select count(*) > -1 from i_sys_datafiles;
-select count(*) > -1 from d_sys_datafiles;
-
---error ER_SPECIFIC_ACCESS_DENIED_ERROR
select count(*) > -1 from information_schema.innodb_sys_fields;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
select count(*) > -1 from i_sys_fields;
diff --git a/mysql-test/suite/innodb/t/innodb-system-table-view.opt b/mysql-test/suite/innodb/t/innodb-system-table-view.opt
index 4d6858cbe0b..6bf2c4c9c72 100644
--- a/mysql-test/suite/innodb/t/innodb-system-table-view.opt
+++ b/mysql-test/suite/innodb/t/innodb-system-table-view.opt
@@ -1,6 +1,5 @@
--innodb
--innodb-sys-tablespaces
---innodb-sys-datafiles
--innodb-sys-tablestats
--innodb-sys-tables
--innodb-sys-columns
diff --git a/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test b/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test
index a5d5d3fe34e..d21b9c092e2 100644
--- a/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test
+++ b/mysql-test/suite/innodb/t/innodb_skip_innodb_is_tables.test
@@ -18,8 +18,6 @@ select * from information_schema.innodb_ft_index_table;
select * from information_schema.innodb_ft_config;
select * from information_schema.innodb_buffer_page;
select * from information_schema.innodb_buffer_page_lru;
---error 0,1109
-select * from information_schema.innodb_buffer_stats;
select * from information_schema.innodb_sys_tables;
select * from information_schema.innodb_sys_tablestats;
select * from information_schema.innodb_sys_indexes;
@@ -28,9 +26,6 @@ select * from information_schema.innodb_sys_fields;
select * from information_schema.innodb_sys_foreign;
select * from information_schema.innodb_sys_foreign_cols;
select * from information_schema.innodb_sys_tablespaces;
-select * from information_schema.innodb_sys_datafiles;
---error 0,1109
-select * from information_schema.innodb_changed_pages;
select * from information_schema.innodb_tablespaces_encryption;
select * from information_schema.innodb_mutexes;
select * from information_schema.innodb_sys_semaphore_waits;
diff --git a/mysql-test/suite/innodb/t/rename_table.opt b/mysql-test/suite/innodb/t/rename_table.opt
index a4c52ea7d79..1852495a506 100644
--- a/mysql-test/suite/innodb/t/rename_table.opt
+++ b/mysql-test/suite/innodb/t/rename_table.opt
@@ -1,2 +1,2 @@
--innodb
---innodb-sys-datafiles
+--innodb-sys-tablespaces
diff --git a/mysql-test/suite/innodb/t/rename_table.test b/mysql-test/suite/innodb/t/rename_table.test
index 0191a94def2..f7e3998cf63 100644
--- a/mysql-test/suite/innodb/t/rename_table.test
+++ b/mysql-test/suite/innodb/t/rename_table.test
@@ -6,8 +6,8 @@ CREATE DATABASE test_jfg2;
CREATE TABLE test_jfg.test (a int unsigned PRIMARY KEY) ENGINE=InnoDB;
RENAME TABLE test_jfg.test TO test_jfg2.test;
-SELECT REPLACE(path,'\\','/') path
-FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%';
+SELECT REPLACE(filename,'\\','/') path
+FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
DROP DATABASE test_jfg;
@@ -21,8 +21,8 @@ CREATE DATABASE abc_def2;
CREATE TABLE abc_def.test (a int unsigned PRIMARY KEY) ENGINE=InnoDB;
RENAME TABLE abc_def.test TO abc_def2.test1;
-SELECT REPLACE(path,'\\','/') path
-FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%';
+SELECT REPLACE(filename,'\\','/') path
+FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
DROP DATABASE abc_def;
diff --git a/mysql-test/suite/innodb/t/temporary_table_optimization.opt b/mysql-test/suite/innodb/t/temporary_table_optimization.opt
index 2f73da1ead6..39b93371503 100644
--- a/mysql-test/suite/innodb/t/temporary_table_optimization.opt
+++ b/mysql-test/suite/innodb/t/temporary_table_optimization.opt
@@ -1 +1 @@
---loose-innodb-sys-datafiles --loose-innodb-sys-tables
+--loose-innodb-sys-tables
diff --git a/mysql-test/suite/innodb/t/temporary_table_optimization.test b/mysql-test/suite/innodb/t/temporary_table_optimization.test
index 967965f9998..a30f05cb6b9 100644
--- a/mysql-test/suite/innodb/t/temporary_table_optimization.test
+++ b/mysql-test/suite/innodb/t/temporary_table_optimization.test
@@ -13,7 +13,7 @@
# 4. Import/Discard of temp-table (to check blocked action) #
# 5. Renaming of temp-table #
# 6. Creating temp-table with large prefix. #
-# 7. Check Temp table info not stored in I_S datafile and tables #
+# 7. Check Temp table info not stored in InnoDB system tables #
#########################################################################
@@ -233,11 +233,8 @@ drop table t;
#
CREATE TABLE t1 ( i INT ) ENGINE = Innodb;
CREATE TEMPORARY TABLE t2 ( i INT ) ENGINE = Innodb;
-SELECT COUNT(*) FROM information_schema.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%t_';
SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%test%t_';
CREATE TEMPORARY table t3 ( i INT ) ENGINE = Innodb;
-SELECT COUNT(*) FROM information_schema.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%t_';
SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%test%t_';
DROP TABLE t1,t2,t3;
-SELECT COUNT(*) FROM information_schema.INNODB_SYS_DATAFILES WHERE PATH LIKE '%test%t_';
SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%test%t_';
diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.opt b/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.opt
deleted file mode 100644
index d6803d5ecdf..00000000000
--- a/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb_sys_datafiles
diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.result b/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.result
deleted file mode 100644
index eb2dd8b71ad..00000000000
--- a/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.result
+++ /dev/null
@@ -1,6 +0,0 @@
-SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
-Table Create Table
-INNODB_SYS_DATAFILES CREATE TEMPORARY TABLE `INNODB_SYS_DATAFILES` (
- `SPACE` int(11) unsigned NOT NULL DEFAULT 0,
- `PATH` varchar(4000) NOT NULL DEFAULT ''
-) ENGINE=MEMORY DEFAULT CHARSET=utf8
diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.test b/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.test
deleted file mode 100644
index dd843fec761..00000000000
--- a/mysql-test/suite/innodb_i_s/innodb_sys_datafiles.test
+++ /dev/null
@@ -1,3 +0,0 @@
---source include/have_innodb.inc
-
-SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result b/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result
index 40e337f49f3..cc8728bc9ad 100644
--- a/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result
+++ b/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result
@@ -6,7 +6,7 @@ INNODB_SYS_TABLESPACES CREATE TEMPORARY TABLE `INNODB_SYS_TABLESPACES` (
`FLAG` int(11) unsigned NOT NULL DEFAULT 0,
`ROW_FORMAT` varchar(22) DEFAULT NULL,
`PAGE_SIZE` int(11) unsigned NOT NULL DEFAULT 0,
- `ZIP_PAGE_SIZE` int(11) unsigned NOT NULL DEFAULT 0,
+ `FILENAME` varchar(512) NOT NULL DEFAULT '',
`FS_BLOCK_SIZE` int(11) unsigned NOT NULL DEFAULT 0,
`FILE_SIZE` bigint(21) unsigned NOT NULL DEFAULT 0,
`ALLOCATED_SIZE` bigint(21) unsigned NOT NULL DEFAULT 0
diff --git a/mysql-test/suite/innodb_zip/r/restart.result b/mysql-test/suite/innodb_zip/r/restart.result
index 59d739db5b5..b0cc44c73b5 100644
--- a/mysql-test/suite/innodb_zip/r/restart.result
+++ b/mysql-test/suite/innodb_zip/r/restart.result
@@ -216,9 +216,9 @@ test/t2_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t2_restart.ibd
test/t3_restart DEFAULT 2048 MYSQLD_DATADIR/test/t3_restart.ibd
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
test/t5_restart DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd
-test/t6_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
-test/t6_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
-test/t6_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
+test/t6_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
+test/t6_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
+test/t6_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
test/t7_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd
test/t7_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd
test/t7_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd
@@ -401,9 +401,9 @@ test/t2_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t2_restart.ibd
test/t3_restart DEFAULT 2048 MYSQLD_DATADIR/test/t3_restart.ibd
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
test/t5_restart DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd
-test/t6_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
-test/t6_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
-test/t6_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
+test/t6_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
+test/t6_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
+test/t6_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
test/t7_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd
test/t7_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd
test/t7_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd
@@ -420,12 +420,12 @@ ALTER TABLE t7_restart TRUNCATE PARTITION p1;
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name Page_Size Zip_Size Path
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
-test/t6_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
-test/t6_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
+test/t6_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
+test/t6_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
test/t7_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd
test/t7_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd
test/t5_restart DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd
-test/t6_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
+test/t6_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
test/t7_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd
test/t7_restart#p#p1#sp#s3 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd
INSERT INTO t5_restart VALUES (1000000000, 'MySQL', 'InnoDB', '2011-11-11', 'Read this after reboot');
@@ -525,12 +525,12 @@ innodb_file_per_table ON
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name Page_Size Zip_Size Path
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
-test/t6_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
-test/t6_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
+test/t6_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd
+test/t6_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd
test/t7_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd
test/t7_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd
test/t5_restart DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd
-test/t6_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
+test/t6_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd
test/t7_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd
test/t7_restart#p#p1#sp#s3 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd
SELECT count(*) FROM t5_restart;
@@ -626,12 +626,12 @@ RENAME TABLE t7_restart TO t77_restart;
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name Page_Size Zip_Size Path
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
-test/t66_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd
-test/t66_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd
+test/t66_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd
+test/t66_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd
test/t77_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s0.ibd
test/t77_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s1.ibd
test/t55_restart DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t55_restart.ibd
-test/t66_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd
+test/t66_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd
test/t77_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s2.ibd
test/t77_restart#p#p1#sp#s3 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s3.ibd
INSERT INTO t55_restart (SELECT 0, c2, c3, c4, c5 FROM t55_restart);
@@ -724,12 +724,12 @@ innodb_file_per_table ON
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name Page_Size Zip_Size Path
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
-test/t66_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd
-test/t66_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd
+test/t66_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd
+test/t66_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd
test/t77_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s0.ibd
test/t77_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s1.ibd
test/t55_restart DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t55_restart.ibd
-test/t66_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd
+test/t66_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd
test/t77_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s2.ibd
test/t77_restart#p#p1#sp#s3 DEFAULT DEFAULT MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s3.ibd
INSERT INTO t55_restart (SELECT 0, c2, c3, c4, c5 FROM t55_restart);
@@ -858,12 +858,12 @@ t77_restart#p#p1#sp#s3.ibd
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name Page_Size Zip_Size Path
test/t4_restart DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t4_restart.ibd
-test/t66_restart#p#p0 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p0.ibd
-test/t66_restart#p#p1 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p1.ibd
+test/t66_restart#p#p0 DEFAULT 2048 MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p0.ibd
+test/t66_restart#p#p1 DEFAULT 2048 MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p1.ibd
test/t77_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p0#sp#s0.ibd
test/t77_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p0#sp#s1.ibd
test/t55_restart DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t55_restart.ibd
-test/t66_restart#p#p2 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p2.ibd
+test/t66_restart#p#p2 DEFAULT 2048 MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p2.ibd
test/t77_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p1#sp#s2.ibd
test/t77_restart#p#p1#sp#s3 DEFAULT DEFAULT MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p1#sp#s3.ibd
INSERT INTO t4_restart (SELECT 0, c2, c3, c4, c5 FROM t4_restart);
@@ -996,12 +996,12 @@ t77_restart.par
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name Page_Size Zip_Size Path
test/t4_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t4_restart.ibd
-test/t66_restart#p#p0 DEFAULT DEFAULT MYSQLD_DATADIR/test/t66_restart#p#p0.ibd
-test/t66_restart#p#p1 DEFAULT DEFAULT MYSQLD_DATADIR/test/t66_restart#p#p1.ibd
+test/t66_restart#p#p0 DEFAULT 2048 MYSQLD_DATADIR/test/t66_restart#p#p0.ibd
+test/t66_restart#p#p1 DEFAULT 2048 MYSQLD_DATADIR/test/t66_restart#p#p1.ibd
test/t77_restart#p#p0#sp#s0 DEFAULT DEFAULT MYSQLD_DATADIR/test/t77_restart#p#p0#sp#s0.ibd
test/t77_restart#p#p0#sp#s1 DEFAULT DEFAULT MYSQLD_DATADIR/test/t77_restart#p#p0#sp#s1.ibd
test/t55_restart DEFAULT DEFAULT MYSQLD_DATADIR/test/t55_restart.ibd
-test/t66_restart#p#p2 DEFAULT DEFAULT MYSQLD_DATADIR/test/t66_restart#p#p2.ibd
+test/t66_restart#p#p2 DEFAULT 2048 MYSQLD_DATADIR/test/t66_restart#p#p2.ibd
test/t77_restart#p#p1#sp#s2 DEFAULT DEFAULT MYSQLD_DATADIR/test/t77_restart#p#p1#sp#s2.ibd
test/t77_restart#p#p1#sp#s3 DEFAULT DEFAULT MYSQLD_DATADIR/test/t77_restart#p#p1#sp#s3.ibd
INSERT INTO t4_restart (SELECT 0, c2, c3, c4, c5 FROM t4_restart);
diff --git a/mysql-test/suite/innodb_zip/t/page_size.opt b/mysql-test/suite/innodb_zip/t/page_size.opt
index 82f574a8039..9e30213d5ef 100644
--- a/mysql-test/suite/innodb_zip/t/page_size.opt
+++ b/mysql-test/suite/innodb_zip/t/page_size.opt
@@ -1,3 +1,2 @@
--loose-innodb-sys-indexes
--loose-innodb-sys-tablespaces
---loose-innodb-sys-datafiles
diff --git a/mysql-test/suite/innodb_zip/t/restart.opt b/mysql-test/suite/innodb_zip/t/restart.opt
index 52314cbf241..d7564300c09 100644
--- a/mysql-test/suite/innodb_zip/t/restart.opt
+++ b/mysql-test/suite/innodb_zip/t/restart.opt
@@ -1,3 +1,2 @@
--loose-innodb-sys-tables
--loose-innodb-sys-tablespaces
---loose-innodb-sys-datafiles
diff --git a/storage/innobase/dict/dict0crea.cc b/storage/innobase/dict/dict0crea.cc
index 55e3191c228..ea7bad3e9f0 100644
--- a/storage/innobase/dict/dict0crea.cc
+++ b/storage/innobase/dict/dict0crea.cc
@@ -1341,10 +1341,9 @@ function_exit:
/****************************************************************//**
Check whether a system table exists. Additionally, if it exists,
-move it to the non-LRU end of the table LRU list. This is oly used
+move it to the non-LRU end of the table LRU list. This is only used
for system tables that can be upgraded or added to an older database,
-which include SYS_FOREIGN, SYS_FOREIGN_COLS, SYS_TABLESPACES and
-SYS_DATAFILES.
+which include SYS_FOREIGN and SYS_FOREIGN_COLS.
@return DB_SUCCESS if the sys table exists, DB_CORRUPTION if it exists
but is not current, DB_TABLE_NOT_FOUND if it does not exist*/
static
@@ -2049,189 +2048,3 @@ dict_create_add_foreigns_to_dictionary(
return error;
}
-
-/****************************************************************//**
-Creates the tablespaces and datafiles system tables inside InnoDB
-at server bootstrap or server start if they are not found or are
-not of the right form.
-@return DB_SUCCESS or error code */
-dberr_t
-dict_create_or_check_sys_tablespace(void)
-/*=====================================*/
-{
- trx_t* trx;
- my_bool srv_file_per_table_backup;
- dberr_t err;
- dberr_t sys_tablespaces_err;
- dberr_t sys_datafiles_err;
-
- ut_ad(!srv_any_background_activity());
-
- /* Note: The master thread has not been started at this point. */
-
- sys_tablespaces_err = dict_check_if_system_table_exists(
- "SYS_TABLESPACES", DICT_NUM_FIELDS__SYS_TABLESPACES + 1, 1);
- sys_datafiles_err = dict_check_if_system_table_exists(
- "SYS_DATAFILES", DICT_NUM_FIELDS__SYS_DATAFILES + 1, 1);
-
- if (sys_tablespaces_err == DB_SUCCESS
- && sys_datafiles_err == DB_SUCCESS) {
- srv_sys_tablespaces_open = true;
- return(DB_SUCCESS);
- }
-
- if (srv_read_only_mode
- || srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO) {
- return(DB_READ_ONLY);
- }
-
- trx = trx_create();
-
- trx_set_dict_operation(trx, TRX_DICT_OP_TABLE);
-
- trx->op_info = "creating tablepace and datafile sys tables";
-
- row_mysql_lock_data_dictionary(trx);
-
- /* Check which incomplete table definition to drop. */
-
- if (sys_tablespaces_err == DB_CORRUPTION) {
- row_drop_table_after_create_fail("SYS_TABLESPACES", trx);
- }
-
- if (sys_datafiles_err == DB_CORRUPTION) {
- row_drop_table_after_create_fail("SYS_DATAFILES", trx);
- }
-
- ib::info() << "Creating tablespace and datafile system tables.";
-
- /* We always want SYSTEM tables to be created inside the system
- tablespace. */
- srv_file_per_table_backup = srv_file_per_table;
- srv_file_per_table = 0;
-
- err = que_eval_sql(
- NULL,
- "PROCEDURE CREATE_SYS_TABLESPACE_PROC () IS\n"
- "BEGIN\n"
- "CREATE TABLE SYS_TABLESPACES(\n"
- " SPACE INT, NAME CHAR, FLAGS INT);\n"
- "CREATE UNIQUE CLUSTERED INDEX SYS_TABLESPACES_SPACE"
- " ON SYS_TABLESPACES (SPACE);\n"
- "CREATE TABLE SYS_DATAFILES(\n"
- " SPACE INT, PATH CHAR);\n"
- "CREATE UNIQUE CLUSTERED INDEX SYS_DATAFILES_SPACE"
- " ON SYS_DATAFILES (SPACE);\n"
- "END;\n",
- FALSE, trx);
-
- if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
- ib::error() << "Creation of SYS_TABLESPACES and SYS_DATAFILES"
- " has failed with error " << err
- << ". Dropping incompletely created tables.";
-
- ut_a(err == DB_OUT_OF_FILE_SPACE
- || err == DB_DUPLICATE_KEY
- || err == DB_TOO_MANY_CONCURRENT_TRXS);
-
- row_drop_table_after_create_fail("SYS_TABLESPACES", trx);
- row_drop_table_after_create_fail("SYS_DATAFILES", trx);
-
- if (err == DB_OUT_OF_FILE_SPACE) {
- err = DB_MUST_GET_MORE_FILE_SPACE;
- }
- }
-
- trx_commit_for_mysql(trx);
-
- row_mysql_unlock_data_dictionary(trx);
-
- trx->free();
-
- srv_file_per_table = srv_file_per_table_backup;
-
- if (err == DB_SUCCESS) {
- srv_sys_tablespaces_open = true;
- }
-
- /* Note: The master thread has not been started at this point. */
- /* Confirm and move to the non-LRU part of the table LRU list. */
-
- sys_tablespaces_err = dict_check_if_system_table_exists(
- "SYS_TABLESPACES", DICT_NUM_FIELDS__SYS_TABLESPACES + 1, 1);
- ut_a(sys_tablespaces_err == DB_SUCCESS || err != DB_SUCCESS);
-
- sys_datafiles_err = dict_check_if_system_table_exists(
- "SYS_DATAFILES", DICT_NUM_FIELDS__SYS_DATAFILES + 1, 1);
- ut_a(sys_datafiles_err == DB_SUCCESS || err != DB_SUCCESS);
-
- return(err);
-}
-
-/** Put a tablespace definition into the data dictionary,
-replacing what was there previously.
-@param[in] space Tablespace id
-@param[in] name Tablespace name
-@param[in] flags Tablespace flags
-@param[in] path Tablespace path
-@param[in] trx Transaction
-@return error code or DB_SUCCESS */
-dberr_t
-dict_replace_tablespace_in_dictionary(
- ulint space_id,
- const char* name,
- ulint flags,
- const char* path,
- trx_t* trx)
-{
- if (!srv_sys_tablespaces_open) {
- /* Startup procedure is not yet ready for updates. */
- return(DB_SUCCESS);
- }
-
- dberr_t error;
-
- pars_info_t* info = pars_info_create();
-
- pars_info_add_int4_literal(info, "space", space_id);
-
- pars_info_add_str_literal(info, "name", name);
-
- pars_info_add_int4_literal(info, "flags", flags);
-
- pars_info_add_str_literal(info, "path", path);
-
- error = que_eval_sql(info,
- "PROCEDURE P () IS\n"
- "p CHAR;\n"
-
- "DECLARE CURSOR c IS\n"
- " SELECT PATH FROM SYS_DATAFILES\n"
- " WHERE SPACE=:space FOR UPDATE;\n"
-
- "BEGIN\n"
- "OPEN c;\n"
- "FETCH c INTO p;\n"
-
- "IF (SQL % NOTFOUND) THEN"
- " DELETE FROM SYS_TABLESPACES "
- "WHERE SPACE=:space;\n"
- " INSERT INTO SYS_TABLESPACES VALUES"
- "(:space, :name, :flags);\n"
- " INSERT INTO SYS_DATAFILES VALUES"
- "(:space, :path);\n"
- "ELSIF p <> :path THEN\n"
- " UPDATE SYS_DATAFILES SET PATH=:path"
- " WHERE CURRENT OF c;\n"
- "END IF;\n"
- "END;\n",
- FALSE, trx);
-
- if (error != DB_SUCCESS) {
- return(error);
- }
-
- trx->op_info = "";
-
- return(error);
-}
diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc
index ca4081e90e9..168636cc965 100644
--- a/storage/innobase/dict/dict0dict.cc
+++ b/storage/innobase/dict/dict0dict.cc
@@ -5268,87 +5268,3 @@ dict_tf_to_row_format_string(
ut_error;
return(0);
}
-
-/** Look for any dictionary objects that are found in the given tablespace.
-@param[in] space_id Tablespace ID to search for.
-@return true if tablespace is empty. */
-bool
-dict_space_is_empty(
- ulint space_id)
-{
- btr_pcur_t pcur;
- const rec_t* rec;
- mtr_t mtr;
- bool found = false;
-
- dict_sys_lock();
- mtr_start(&mtr);
-
- for (rec = dict_startscan_system(&pcur, &mtr, SYS_TABLES);
- rec != NULL;
- rec = dict_getnext_system(&pcur, &mtr)) {
- const byte* field;
- ulint len;
- ulint space_id_for_table;
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLES__SPACE, &len);
- ut_ad(len == 4);
- space_id_for_table = mach_read_from_4(field);
-
- if (space_id_for_table == space_id) {
- found = true;
- }
- }
-
- mtr_commit(&mtr);
- dict_sys_unlock();
-
- return(!found);
-}
-
-/** Find the space_id for the given name in sys_tablespaces.
-@param[in] name Tablespace name to search for.
-@return the tablespace ID. */
-ulint
-dict_space_get_id(
- const char* name)
-{
- btr_pcur_t pcur;
- const rec_t* rec;
- mtr_t mtr;
- ulint name_len = strlen(name);
- ulint id = ULINT_UNDEFINED;
-
- dict_sys_lock();
- mtr_start(&mtr);
-
- for (rec = dict_startscan_system(&pcur, &mtr, SYS_TABLESPACES);
- rec != NULL;
- rec = dict_getnext_system(&pcur, &mtr)) {
- const byte* field;
- ulint len;
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__NAME, &len);
- ut_ad(len > 0);
- ut_ad(len < OS_FILE_MAX_PATH);
-
- if (len == name_len && !memcmp(name, field, len)) {
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__SPACE, &len);
- ut_ad(len == 4);
- id = mach_read_from_4(field);
-
- /* This is normally called by dict_getnext_system()
- at the end of the index. */
- btr_pcur_close(&pcur);
- break;
- }
- }
-
- mtr_commit(&mtr);
- dict_sys_unlock();
-
- return(id);
-}
diff --git a/storage/innobase/dict/dict0load.cc b/storage/innobase/dict/dict0load.cc
index 753bcf74967..8555c7849d6 100644
--- a/storage/innobase/dict/dict0load.cc
+++ b/storage/innobase/dict/dict0load.cc
@@ -54,8 +54,6 @@ static const char* SYSTEM_TABLE_NAME[] = {
"SYS_FIELDS",
"SYS_FOREIGN",
"SYS_FOREIGN_COLS",
- "SYS_TABLESPACES",
- "SYS_DATAFILES",
"SYS_VIRTUAL"
};
@@ -662,307 +660,6 @@ err_len:
return(NULL);
}
-/********************************************************************//**
-This function parses a SYS_TABLESPACES record, extracts necessary
-information from the record and returns to caller.
-@return error message, or NULL on success */
-const char*
-dict_process_sys_tablespaces(
-/*=========================*/
- mem_heap_t* heap, /*!< in/out: heap memory */
- const rec_t* rec, /*!< in: current SYS_TABLESPACES rec */
- uint32_t* space, /*!< out: tablespace identifier */
- const char** name, /*!< out: tablespace name */
- ulint* flags) /*!< out: tablespace flags */
-{
- ulint len;
- const byte* field;
-
- if (rec_get_deleted_flag(rec, 0)) {
- return("delete-marked record in SYS_TABLESPACES");
- }
-
- if (rec_get_n_fields_old(rec) != DICT_NUM_FIELDS__SYS_TABLESPACES) {
- return("wrong number of columns in SYS_TABLESPACES record");
- }
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__SPACE, &len);
- if (len != DICT_FLD_LEN_SPACE) {
-err_len:
- return("incorrect column length in SYS_TABLESPACES");
- }
- *space = mach_read_from_4(field);
-
- rec_get_nth_field_offs_old(
- rec, DICT_FLD__SYS_TABLESPACES__DB_TRX_ID, &len);
- if (len != DATA_TRX_ID_LEN && len != UNIV_SQL_NULL) {
- goto err_len;
- }
-
- rec_get_nth_field_offs_old(
- rec, DICT_FLD__SYS_TABLESPACES__DB_ROLL_PTR, &len);
- if (len != DATA_ROLL_PTR_LEN && len != UNIV_SQL_NULL) {
- goto err_len;
- }
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__NAME, &len);
- if (len == 0 || len == UNIV_SQL_NULL) {
- goto err_len;
- }
- *name = mem_heap_strdupl(heap, (char*) field, len);
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__FLAGS, &len);
- if (len != DICT_FLD_LEN_FLAGS) {
- goto err_len;
- }
- *flags = mach_read_from_4(field);
-
- return(NULL);
-}
-
-/********************************************************************//**
-This function parses a SYS_DATAFILES record, extracts necessary
-information from the record and returns it to the caller.
-@return error message, or NULL on success */
-const char*
-dict_process_sys_datafiles(
-/*=======================*/
- mem_heap_t* heap, /*!< in/out: heap memory */
- const rec_t* rec, /*!< in: current SYS_DATAFILES rec */
- uint32_t* space, /*!< out: space id */
- const char** path) /*!< out: datafile paths */
-{
- ulint len;
- const byte* field;
-
- if (rec_get_deleted_flag(rec, 0)) {
- return("delete-marked record in SYS_DATAFILES");
- }
-
- if (rec_get_n_fields_old(rec) != DICT_NUM_FIELDS__SYS_DATAFILES) {
- return("wrong number of columns in SYS_DATAFILES record");
- }
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_DATAFILES__SPACE, &len);
- if (len != DICT_FLD_LEN_SPACE) {
-err_len:
- return("incorrect column length in SYS_DATAFILES");
- }
- *space = mach_read_from_4(field);
-
- rec_get_nth_field_offs_old(
- rec, DICT_FLD__SYS_DATAFILES__DB_TRX_ID, &len);
- if (len != DATA_TRX_ID_LEN && len != UNIV_SQL_NULL) {
- goto err_len;
- }
-
- rec_get_nth_field_offs_old(
- rec, DICT_FLD__SYS_DATAFILES__DB_ROLL_PTR, &len);
- if (len != DATA_ROLL_PTR_LEN && len != UNIV_SQL_NULL) {
- goto err_len;
- }
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_DATAFILES__PATH, &len);
- if (len == 0 || len == UNIV_SQL_NULL) {
- goto err_len;
- }
- *path = mem_heap_strdupl(heap, (char*) field, len);
-
- return(NULL);
-}
-
-/** Get the first filepath from SYS_DATAFILES for a given space_id.
-@param[in] space_id Tablespace ID
-@return First filepath (caller must invoke ut_free() on it)
-@retval NULL if no SYS_DATAFILES entry was found. */
-static char*
-dict_get_first_path(
- ulint space_id)
-{
- mtr_t mtr;
- dict_table_t* sys_datafiles;
- dict_index_t* sys_index;
- dtuple_t* tuple;
- dfield_t* dfield;
- byte* buf;
- btr_pcur_t pcur;
- const rec_t* rec;
- const byte* field;
- ulint len;
- char* filepath = NULL;
- mem_heap_t* heap = mem_heap_create(1024);
-
- ut_ad(mutex_own(&dict_sys.mutex));
-
- mtr_start(&mtr);
-
- sys_datafiles = dict_table_get_low("SYS_DATAFILES");
- sys_index = UT_LIST_GET_FIRST(sys_datafiles->indexes);
-
- ut_ad(!dict_table_is_comp(sys_datafiles));
- ut_ad(name_of_col_is(sys_datafiles, sys_index,
- DICT_FLD__SYS_DATAFILES__SPACE, "SPACE"));
- ut_ad(name_of_col_is(sys_datafiles, sys_index,
- DICT_FLD__SYS_DATAFILES__PATH, "PATH"));
-
- tuple = dtuple_create(heap, 1);
- dfield = dtuple_get_nth_field(tuple, DICT_FLD__SYS_DATAFILES__SPACE);
-
- buf = static_cast<byte*>(mem_heap_alloc(heap, 4));
- mach_write_to_4(buf, space_id);
-
- dfield_set_data(dfield, buf, 4);
- dict_index_copy_types(tuple, sys_index, 1);
-
- btr_pcur_open_on_user_rec(sys_index, tuple, PAGE_CUR_GE,
- BTR_SEARCH_LEAF, &pcur, &mtr);
-
- rec = btr_pcur_get_rec(&pcur);
-
- /* Get the filepath from this SYS_DATAFILES record. */
- if (btr_pcur_is_on_user_rec(&pcur)) {
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_DATAFILES__SPACE, &len);
- ut_a(len == 4);
-
- if (space_id == mach_read_from_4(field)) {
- /* A record for this space ID was found. */
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_DATAFILES__PATH, &len);
-
- ut_ad(len > 0);
- ut_ad(len < OS_FILE_MAX_PATH);
-
- if (len > 0 && len < UNIV_SQL_NULL) {
- filepath = mem_strdupl(
- reinterpret_cast<const char*>(field),
- len);
- ut_ad(filepath != NULL);
-
- /* The dictionary may have been written on
- another OS. */
- os_normalize_path(filepath);
- }
- }
- }
-
- btr_pcur_close(&pcur);
- mtr_commit(&mtr);
- mem_heap_free(heap);
-
- return(filepath);
-}
-
-/** Update the record for space_id in SYS_TABLESPACES to this filepath.
-@param[in] space_id Tablespace ID
-@param[in] filepath Tablespace filepath
-@return DB_SUCCESS if OK, dberr_t if the insert failed */
-dberr_t
-dict_update_filepath(
- ulint space_id,
- const char* filepath)
-{
- if (!srv_sys_tablespaces_open) {
- /* Startup procedure is not yet ready for updates. */
- return(DB_SUCCESS);
- }
-
- dberr_t err = DB_SUCCESS;
- trx_t* trx;
-
- ut_d(dict_sys.assert_locked());
-
- trx = trx_create();
- trx->op_info = "update filepath";
- trx->dict_operation_lock_mode = RW_X_LATCH;
- trx_start_for_ddl(trx, TRX_DICT_OP_INDEX);
-
- pars_info_t* info = pars_info_create();
-
- pars_info_add_int4_literal(info, "space", space_id);
- pars_info_add_str_literal(info, "path", filepath);
-
- err = que_eval_sql(info,
- "PROCEDURE UPDATE_FILEPATH () IS\n"
- "BEGIN\n"
- "UPDATE SYS_DATAFILES"
- " SET PATH = :path\n"
- " WHERE SPACE = :space;\n"
- "END;\n", FALSE, trx);
-
- trx_commit_for_mysql(trx);
- trx->dict_operation_lock_mode = 0;
- trx->free();
-
- if (UNIV_LIKELY(err == DB_SUCCESS)) {
- /* We just updated SYS_DATAFILES due to the contents in
- a link file. Make a note that we did this. */
- ib::info() << "The InnoDB data dictionary table SYS_DATAFILES"
- " for tablespace ID " << space_id
- << " was updated to use file " << filepath << ".";
- } else {
- ib::warn() << "Error occurred while updating InnoDB data"
- " dictionary table SYS_DATAFILES for tablespace ID "
- << space_id << " to file " << filepath << ": "
- << err << ".";
- }
-
- return(err);
-}
-
-/** Replace records in SYS_TABLESPACES and SYS_DATAFILES associated with
-the given space_id using an independent transaction.
-@param[in] space_id Tablespace ID
-@param[in] name Tablespace name
-@param[in] filepath First filepath
-@param[in] fsp_flags Tablespace flags
-@return DB_SUCCESS if OK, dberr_t if the insert failed */
-dberr_t
-dict_replace_tablespace_and_filepath(
- ulint space_id,
- const char* name,
- const char* filepath,
- ulint fsp_flags)
-{
- if (!srv_sys_tablespaces_open) {
- /* Startup procedure is not yet ready for updates.
- Return success since this will likely get updated
- later. */
- return(DB_SUCCESS);
- }
-
- dberr_t err = DB_SUCCESS;
- trx_t* trx;
-
- DBUG_EXECUTE_IF("innodb_fail_to_update_tablespace_dict",
- return(DB_INTERRUPTED););
-
- ut_d(dict_sys.assert_locked());
- ut_ad(filepath);
-
- trx = trx_create();
- trx->op_info = "insert tablespace and filepath";
- trx->dict_operation_lock_mode = RW_X_LATCH;
- trx_start_for_ddl(trx, TRX_DICT_OP_INDEX);
-
- /* A record for this space ID was not found in
- SYS_DATAFILES. Assume the record is also missing in
- SYS_TABLESPACES. Insert records into them both. */
- err = dict_replace_tablespace_in_dictionary(
- space_id, name, fsp_flags, filepath, trx);
-
- trx_commit_for_mysql(trx);
- trx->dict_operation_lock_mode = 0;
- trx->free();
-
- return(err);
-}
-
/** Check the validity of a SYS_TABLES record
Make sure the fields are the right length and that they
do not contain invalid contents.
@@ -1046,53 +743,6 @@ err_len:
return(NULL);
}
-/** Read and return the contents of a SYS_TABLESPACES record.
-@param[in] rec A record of SYS_TABLESPACES
-@param[out] id Pointer to the space_id for this table
-@param[in,out] name Buffer for Tablespace Name of length NAME_LEN
-@param[out] flags Pointer to tablespace flags
-@return true if the record was read correctly, false if not. */
-bool
-dict_sys_tablespaces_rec_read(
- const rec_t* rec,
- ulint* id,
- char* name,
- ulint* flags)
-{
- const byte* field;
- ulint len;
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__SPACE, &len);
- if (len != DICT_FLD_LEN_SPACE) {
- ib::error() << "Wrong field length in SYS_TABLESPACES.SPACE: "
- << len;
- return(false);
- }
- *id = mach_read_from_4(field);
-
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__NAME, &len);
- if (len == 0 || len == UNIV_SQL_NULL) {
- ib::error() << "Wrong field length in SYS_TABLESPACES.NAME: "
- << len;
- return(false);
- }
- strncpy(name, reinterpret_cast<const char*>(field), NAME_LEN);
-
- /* read the 4 byte flags from the TYPE field */
- field = rec_get_nth_field_old(
- rec, DICT_FLD__SYS_TABLESPACES__FLAGS, &len);
- if (len != 4) {
- ib::error() << "Wrong field length in SYS_TABLESPACES.FLAGS: "
- << len;
- return(false);
- }
- *flags = mach_read_from_4(field);
-
- return(true);
-}
-
/** Check if SYS_TABLES.TYPE is valid
@param[in] type SYS_TABLES.TYPE
@param[in] not_redundant whether ROW_FORMAT=REDUNDANT is not used
@@ -1343,15 +993,6 @@ static ulint dict_check_sys_tables()
mtr_start(&mtr);
- /* Before traversing SYS_TABLES, let's make sure we have
- SYS_TABLESPACES and SYS_DATAFILES loaded. */
- dict_table_t* sys_tablespaces;
- dict_table_t* sys_datafiles;
- sys_tablespaces = dict_table_get_low("SYS_TABLESPACES");
- ut_a(sys_tablespaces != NULL);
- sys_datafiles = dict_table_get_low("SYS_DATAFILES");
- ut_a(sys_datafiles != NULL);
-
for (rec = dict_startscan_system(&pcur, &mtr, SYS_TABLES);
rec != NULL;
mtr.commit(), mtr.start(),
@@ -1411,34 +1052,17 @@ next:
/* Now that we have the proper name for this tablespace,
look to see if it is already in the tablespace cache. */
- if (const fil_space_t* space
- = fil_space_for_table_exists_in_mem(
+ if (fil_space_for_table_exists_in_mem(
space_id, table_name.m_name, flags)) {
- /* Recovery can open a datafile that does not
- match SYS_DATAFILES. If they don't match, update
- SYS_DATAFILES. */
- char *dict_path = dict_get_first_path(space_id);
- const char *fil_path = space->chain.start->name;
- if (dict_path
- && strcmp(dict_path, fil_path)) {
- dict_update_filepath(space_id, fil_path);
- }
- ut_free(dict_path);
- ut_free(table_name.m_name);
continue;
}
- /* Set the expected filepath from the data dictionary.
- If the file is found elsewhere (from an ISL or the default
- location) or this path is the same file but looks different,
- fil_ibd_open() will update the dictionary with what is
- opened. */
- char* filepath = dict_get_first_path(space_id);
+ char* filepath = fil_make_filepath(
+ NULL, table_name.m_name, IBD, false);
/* Check that the .ibd file exists. */
if (!fil_ibd_open(
false,
- !srv_read_only_mode && srv_log_file_size != 0,
FIL_TYPE_TABLESPACE,
space_id, dict_tf_to_fsp_flags(flags),
table_name, filepath)) {
@@ -1463,8 +1087,7 @@ Then look at each table defined in SYS_TABLES that has a space_id > 0
to find all the file-per-table tablespaces.
In a crash recovery we already have some tablespace objects created from
-processing the REDO log. Any other tablespace in SYS_TABLESPACES not
-previously used in recovery will be opened here. We will compare the
+processing the REDO log. We will compare the
space_id information in the data dictionary to what we find in the
tablespace file. In addition, more validation will be done if recovery
was needed and force_recovery is not set.
@@ -1487,9 +1110,7 @@ void dict_check_tablespaces_and_store_max_id()
fil_set_max_space_id_if_bigger(max_space_id);
- /* Open all tablespaces referenced in SYS_TABLES.
- This will update SYS_TABLESPACES and SYS_DATAFILES if it
- finds any file-per-table tablespaces not already there. */
+ /* Open all tablespaces referenced in SYS_TABLES. */
max_space_id = dict_check_sys_tables();
fil_set_max_space_id_if_bigger(max_space_id);
@@ -2674,8 +2295,7 @@ dict_save_data_dir_path(
}
}
-/** Make sure the data_dir_path is saved in dict_table_t if DATA DIRECTORY
-was used. Try to read it from the fil_system first, then from SYS_DATAFILES.
+/** Make sure the data_dir_path is saved in dict_table_t if needed.
@param[in] table Table object
@param[in] dict_mutex_own true if dict_sys.mutex is owned already */
void
@@ -2698,8 +2318,8 @@ dict_get_and_save_data_dir_path(
if (table->data_dir_path == NULL) {
/* Since we did not set the table data_dir_path,
- unset the flag. This does not change SYS_DATAFILES
- or SYS_TABLES or FSP_SPACE_FLAGS on the header page
+ unset the flag. This does not change
+ SYS_TABLES or FSP_SPACE_FLAGS on the header page
of the tablespace, but it makes dict_table_t
consistent. */
table->flags &= ~DICT_TF_MASK_DATA_DIR
@@ -2800,8 +2420,7 @@ dict_load_tablespace(
from the table->name. */
char* filepath = NULL;
if (DICT_TF_HAS_DATA_DIR(table->flags)) {
- /* This will set table->data_dir_path from either
- fil_system or SYS_DATAFILES */
+ /* This will set table->data_dir_path from fil_system */
dict_get_and_save_data_dir_path(table, true);
if (table->data_dir_path) {
@@ -2814,7 +2433,7 @@ dict_load_tablespace(
/* Try to open the tablespace. We set the 2nd param (fix_dict) to
false because we do not have an x-lock on dict_sys.latch */
table->space = fil_ibd_open(
- true, false, FIL_TYPE_TABLESPACE, table->space_id,
+ true, FIL_TYPE_TABLESPACE, table->space_id,
dict_tf_to_fsp_flags(table->flags),
table->name, filepath);
diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc
index c515cd82c48..ece334deeb4 100644
--- a/storage/innobase/fil/fil0fil.cc
+++ b/storage/innobase/fil/fil0fil.cc
@@ -2477,7 +2477,6 @@ If the fix_dict boolean is set, then it is safe to use an internal SQL
statement to update the dictionary tables if they are incorrect.
@param[in] validate true if we should validate the tablespace
-@param[in] fix_dict true if the dictionary is available to be fixed
@param[in] purpose FIL_TYPE_TABLESPACE or FIL_TYPE_TEMPORARY
@param[in] id tablespace ID
@param[in] flags expected FSP_SPACE_FLAGS
@@ -2490,7 +2489,6 @@ If file-per-table, it is the table name in the databasename/tablename format
fil_space_t*
fil_ibd_open(
bool validate,
- bool fix_dict,
fil_type_t purpose,
ulint id,
ulint flags,
@@ -2522,21 +2520,11 @@ fil_ibd_open(
}
mutex_exit(&fil_system.mutex);
- bool dict_filepath_same_as_default = false;
- bool link_file_found = false;
- bool link_file_is_bad = false;
Datafile df_default; /* default location */
- Datafile df_dict; /* dictionary location */
RemoteDatafile df_remote; /* remote location */
ulint tablespaces_found = 0;
ulint valid_tablespaces_found = 0;
- if (fix_dict) {
- ut_d(dict_sys.assert_locked());
- ut_ad(!srv_read_only_mode);
- ut_ad(srv_log_file_size != 0);
- }
-
/* Table flags can be ULINT_UNDEFINED if
dict_tf_to_fsp_flags_failure is set. */
if (flags == ULINT_UNDEFINED) {
@@ -2547,7 +2535,6 @@ corrupted:
ut_ad(fil_space_t::is_valid_flags(flags & ~FSP_FLAGS_MEM_MASK, id));
df_default.init(tablename.m_name, flags);
- df_dict.init(tablename.m_name, flags);
df_remote.init(tablename.m_name, flags);
/* Discover the correct file by looking in three possible locations
@@ -2564,7 +2551,6 @@ corrupted:
/* Always validate a file opened from an ISL pointer */
validate = true;
++tablespaces_found;
- link_file_found = true;
} else if (df_remote.filepath() != NULL) {
/* An ISL file was found but contained a bad filepath in it.
Better validate anything we do find. */
@@ -2573,17 +2559,10 @@ corrupted:
/* Attempt to open the tablespace at the dictionary filepath. */
if (path_in) {
- if (df_default.same_filepath_as(path_in)) {
- dict_filepath_same_as_default = true;
- } else {
+ if (!df_default.same_filepath_as(path_in)) {
/* Dict path is not the default path. Always validate
remote files. If default is opened, it was moved. */
validate = true;
- df_dict.set_filepath(path_in);
- if (df_dict.open_read_only(true) == DB_SUCCESS) {
- ut_ad(df_dict.is_open());
- ++tablespaces_found;
- }
}
}
@@ -2604,14 +2583,6 @@ corrupted:
df_remote.delete_link_file();
df_remote.close();
}
- if (tablespaces_found > 1 && df_default.same_as(df_dict)) {
- --tablespaces_found;
- df_dict.close();
- }
- if (tablespaces_found > 1 && df_remote.same_as(df_dict)) {
- --tablespaces_found;
- df_dict.close();
- }
/* We have now checked all possible tablespace locations and
have a count of how many unique files we found. If things are
@@ -2630,9 +2601,6 @@ corrupted:
valid_tablespaces_found +=
(df_default.validate_to_dd(id, flags) == DB_SUCCESS);
- valid_tablespaces_found +=
- (df_dict.validate_to_dd(id, flags) == DB_SUCCESS);
-
/* Make sense of these three possible locations.
First, bail out if no tablespace files were found. */
if (valid_tablespaces_found == 0) {
@@ -2663,12 +2631,6 @@ corrupted:
<< ", Space ID=" << df_remote.space_id()
<< ", Flags=" << df_remote.flags();
}
- if (df_dict.is_open()) {
- ib::error() << "Dictionary location: "
- << df_dict.filepath()
- << ", Space ID=" << df_dict.space_id()
- << ", Flags=" << df_dict.flags();
- }
/* Force-recovery will allow some tablespaces to be
skipped by REDO if there was more than one file found.
@@ -2683,13 +2645,11 @@ corrupted:
/* If the file is not open it cannot be valid. */
ut_ad(df_default.is_open() || !df_default.is_valid());
- ut_ad(df_dict.is_open() || !df_dict.is_valid());
ut_ad(df_remote.is_open() || !df_remote.is_valid());
/* Having established that, this is an easy way to
look for corrupted data files. */
if (df_default.is_open() != df_default.is_valid()
- || df_dict.is_open() != df_dict.is_valid()
|| df_remote.is_open() != df_remote.is_valid()) {
goto corrupted;
}
@@ -2706,17 +2666,9 @@ error:
tablespaces_found--;
}
- if (df_dict.is_open() && !df_dict.is_valid()) {
- df_dict.close();
- /* Leave dict.filepath so that SYS_DATAFILES
- can be corrected below. */
- tablespaces_found--;
- }
-
if (df_remote.is_open() && !df_remote.is_valid()) {
df_remote.close();
tablespaces_found--;
- link_file_is_bad = true;
}
}
@@ -2724,78 +2676,9 @@ error:
ut_a(tablespaces_found == 1);
ut_a(valid_tablespaces_found == 1);
- /* Only fix the dictionary at startup when there is only one thread.
- Calls to dict_load_table() can be done while holding other latches. */
- if (!fix_dict) {
- goto skip_validate;
- }
-
- /* We may need to update what is stored in SYS_DATAFILES or
- SYS_TABLESPACES or adjust the link file. Since a failure to
- update SYS_TABLESPACES or SYS_DATAFILES does not prevent opening
- and using the tablespace either this time or the next, we do not
- check the return code or fail to open the tablespace. But if it
- fails, dict_update_filepath() will issue a warning to the log. */
- if (df_dict.filepath()) {
- ut_ad(path_in != NULL);
- ut_ad(df_dict.same_filepath_as(path_in));
-
- if (df_remote.is_open()) {
- if (!df_remote.same_filepath_as(path_in)) {
- dict_update_filepath(id, df_remote.filepath());
- }
-
- } else if (df_default.is_open()) {
- ut_ad(!dict_filepath_same_as_default);
- dict_update_filepath(id, df_default.filepath());
- if (link_file_is_bad) {
- RemoteDatafile::delete_link_file(
- tablename.m_name);
- }
-
- } else if (!link_file_found || link_file_is_bad) {
- ut_ad(df_dict.is_open());
- /* Fix the link file if we got our filepath
- from the dictionary but a link file did not
- exist or it did not point to a valid file. */
- RemoteDatafile::delete_link_file(tablename.m_name);
- RemoteDatafile::create_link_file(
- tablename.m_name, df_dict.filepath());
- }
-
- } else if (df_remote.is_open()) {
- if (dict_filepath_same_as_default) {
- dict_update_filepath(id, df_remote.filepath());
-
- } else if (path_in == NULL) {
- /* SYS_DATAFILES record for this space ID
- was not found. */
- dict_replace_tablespace_and_filepath(
- id, tablename.m_name,
- df_remote.filepath(), flags);
- }
-
- } else if (df_default.is_open()) {
- /* We opened the tablespace in the default location.
- SYS_DATAFILES.PATH needs to be updated if it is different
- from this default path or if the SYS_DATAFILES.PATH was not
- supplied and it should have been. Also update the dictionary
- if we found an ISL file (since !df_remote.is_open). Since
- path_in is not suppled for file-per-table, we must assume
- that it matched the ISL. */
- if ((path_in != NULL && !dict_filepath_same_as_default)
- || (path_in == NULL && DICT_TF_HAS_DATA_DIR(flags))
- || df_remote.filepath() != NULL) {
- dict_replace_tablespace_and_filepath(
- id, tablename.m_name, df_default.filepath(),
- flags);
- }
- }
-
skip_validate:
const byte* first_page =
df_default.is_open() ? df_default.get_first_page() :
- df_dict.is_open() ? df_dict.get_first_page() :
df_remote.get_first_page();
fil_space_crypt_t* crypt_data = first_page
@@ -2814,12 +2697,10 @@ skip_validate:
space->add(
df_remote.is_open() ? df_remote.filepath() :
- df_dict.is_open() ? df_dict.filepath() :
df_default.filepath(), OS_FILE_CLOSED, 0, false, true);
if (validate && !srv_read_only_mode) {
df_remote.close();
- df_dict.close();
df_default.close();
if (space->acquire()) {
if (purpose != FIL_TYPE_IMPORT) {
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index cf9d1a73500..32437810adb 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -10909,7 +10909,6 @@ ha_innobase::update_create_info(
return;
}
- /* Update the DATA DIRECTORY name from SYS_DATAFILES. */
dict_get_and_save_data_dir_path(m_prebuilt->table, false);
if (m_prebuilt->table->data_dir_path) {
@@ -19749,7 +19748,6 @@ i_s_innodb_sys_fields,
i_s_innodb_sys_foreign,
i_s_innodb_sys_foreign_cols,
i_s_innodb_sys_tablespaces,
-i_s_innodb_sys_datafiles,
i_s_innodb_sys_virtual,
i_s_innodb_mutexes,
i_s_innodb_sys_semaphore_waits,
diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc
index ecc0905de56..af51dd7c043 100644
--- a/storage/innobase/handler/i_s.cc
+++ b/storage/innobase/handler/i_s.cc
@@ -6475,8 +6475,8 @@ static ST_FIELD_INFO innodb_sys_tablespaces_fields_info[] =
#define SYS_TABLESPACES_PAGE_SIZE 4
Column("PAGE_SIZE", ULong(), NOT_NULL),
-#define SYS_TABLESPACES_ZIP_PAGE_SIZE 5
- Column("ZIP_PAGE_SIZE", ULong(), NOT_NULL),
+#define SYS_TABLESPACES_FILENAME 5
+ Column("FILENAME", Varchar(FN_REFLEN), NOT_NULL),
#define SYS_TABLESPACES_FS_BLOCK_SIZE 6
Column("FS_BLOCK_SIZE", ULong(),NOT_NULL),
@@ -6491,189 +6491,106 @@ static ST_FIELD_INFO innodb_sys_tablespaces_fields_info[] =
};
} // namespace Show
-/**********************************************************************//**
-Function to fill INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES with information
-collected by scanning SYS_TABLESPACESS table.
+/** Produce one row of INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES.
+@param thd connection
+@param s tablespace
+@param t output table
@return 0 on success */
-static
-int
-i_s_dict_fill_sys_tablespaces(
-/*==========================*/
- THD* thd, /*!< in: thread */
- uint32_t space, /*!< in: space ID */
- const char* name, /*!< in: tablespace name */
- ulint flags, /*!< in: tablespace flags */
- TABLE* table_to_fill) /*!< in/out: fill this table */
-{
- Field** fields;
- ulint atomic_blobs = FSP_FLAGS_HAS_ATOMIC_BLOBS(flags);
- const char* row_format;
-
- DBUG_ENTER("i_s_dict_fill_sys_tablespaces");
-
- if (fil_space_t::full_crc32(flags)) {
- row_format = NULL;
- } else if (is_system_tablespace(space)) {
- row_format = "Compact, Redundant or Dynamic";
- } else if (FSP_FLAGS_GET_ZIP_SSIZE(flags)) {
- row_format = "Compressed";
- } else if (atomic_blobs) {
- row_format = "Dynamic";
- } else {
- row_format = "Compact or Redundant";
- }
-
- fields = table_to_fill->field;
-
- OK(fields[SYS_TABLESPACES_SPACE]->store(space, true));
-
- OK(field_store_string(fields[SYS_TABLESPACES_NAME], name));
-
- OK(fields[SYS_TABLESPACES_FLAGS]->store(flags, true));
-
- OK(field_store_string(fields[SYS_TABLESPACES_ROW_FORMAT], row_format));
-
- ulint cflags = fil_space_t::is_valid_flags(flags, space)
- ? flags : fsp_flags_convert_from_101(flags);
- if (cflags == ULINT_UNDEFINED) {
- fields[SYS_TABLESPACES_PAGE_SIZE]->set_null();
- fields[SYS_TABLESPACES_ZIP_PAGE_SIZE]->set_null();
- fields[SYS_TABLESPACES_FS_BLOCK_SIZE]->set_null();
- fields[SYS_TABLESPACES_FILE_SIZE]->set_null();
- fields[SYS_TABLESPACES_ALLOC_SIZE]->set_null();
- OK(schema_table_store_record(thd, table_to_fill));
- DBUG_RETURN(0);
- }
-
- OK(fields[SYS_TABLESPACES_PAGE_SIZE]->store(
- fil_space_t::logical_size(cflags), true));
-
- OK(fields[SYS_TABLESPACES_ZIP_PAGE_SIZE]->store(
- fil_space_t::physical_size(cflags), true));
-
- os_file_stat_t stat;
- os_file_size_t file;
-
- memset(&file, 0xff, sizeof(file));
- memset(&stat, 0x0, sizeof(stat));
-
- if (fil_space_t* s = fil_space_t::get(space)) {
- const char *filepath = s->chain.start
- ? s->chain.start->name : NULL;
- if (!filepath) {
- goto file_done;
- }
-
- file = os_file_get_size(filepath);
-
- /* Get the file system (or Volume) block size. */
- switch (dberr_t err = os_file_get_status(filepath, &stat,
- false, false)) {
- case DB_FAIL:
- ib::warn()
- << "File '" << filepath << "', failed to get "
- << "stats";
- break;
-
- case DB_SUCCESS:
- case DB_NOT_FOUND:
- break;
-
- default:
- ib::error() << "File '" << filepath << "' " << err;
- break;
- }
-
-file_done:
- s->release();
- }
-
- if (file.m_total_size == os_offset_t(~0)) {
- stat.block_size = 0;
- file.m_total_size = 0;
- file.m_alloc_size = 0;
- }
-
- OK(fields[SYS_TABLESPACES_FS_BLOCK_SIZE]->store(stat.block_size, true));
-
- OK(fields[SYS_TABLESPACES_FILE_SIZE]->store(file.m_total_size, true));
-
- OK(fields[SYS_TABLESPACES_ALLOC_SIZE]->store(file.m_alloc_size, true));
-
- OK(schema_table_store_record(thd, table_to_fill));
-
- DBUG_RETURN(0);
+static int i_s_sys_tablespaces_fill(THD *thd, const fil_space_t &s, TABLE *t)
+{
+ DBUG_ENTER("i_s_sys_tablespaces_fill");
+ const char *row_format;
+
+ if (s.full_crc32() || is_system_tablespace(s.id))
+ row_format= nullptr;
+ else if (FSP_FLAGS_GET_ZIP_SSIZE(s.flags))
+ row_format= "Compressed";
+ else if (FSP_FLAGS_HAS_ATOMIC_BLOBS(s.flags))
+ row_format= "Dynamic";
+ else
+ row_format= "Compact or Redundant";
+
+ Field **fields= t->field;
+
+ OK(fields[SYS_TABLESPACES_SPACE]->store(s.id, true));
+ OK(field_store_string(fields[SYS_TABLESPACES_NAME], s.name));
+ OK(fields[SYS_TABLESPACES_FLAGS]->store(s.flags, true));
+ OK(field_store_string(fields[SYS_TABLESPACES_ROW_FORMAT], row_format));
+ const char *filepath= s.chain.start->name;
+ OK(field_store_string(fields[SYS_TABLESPACES_FILENAME], filepath));
+
+ OK(fields[SYS_TABLESPACES_PAGE_SIZE]->store(s.physical_size(), true));
+ os_file_stat_t stat;
+ stat.block_size= 0;
+ os_file_size_t file= os_file_get_size(filepath);
+ if (file.m_total_size == os_offset_t(~0))
+ {
+ file.m_total_size= 0;
+ file.m_alloc_size= 0;
+ }
+ else
+ {
+ /* Get the file system (or Volume) block size. */
+ switch (dberr_t err= os_file_get_status(filepath, &stat, false, false)) {
+ case DB_FAIL:
+ ib::warn() << "File '" << filepath << "', failed to get stats";
+ break;
+ case DB_SUCCESS:
+ case DB_NOT_FOUND:
+ break;
+ default:
+ ib::error() << "File '" << filepath << "' " << err;
+ break;
+ }
+ }
+
+ OK(fields[SYS_TABLESPACES_FS_BLOCK_SIZE]->store(stat.block_size, true));
+ OK(fields[SYS_TABLESPACES_FILE_SIZE]->store(file.m_total_size, true));
+ OK(fields[SYS_TABLESPACES_ALLOC_SIZE]->store(file.m_alloc_size, true));
+
+ OK(schema_table_store_record(thd, t));
+
+ DBUG_RETURN(0);
}
-/*******************************************************************//**
-Function to populate INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES table.
-Loop through each record in SYS_TABLESPACES, and extract the column
-information and fill the INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES table.
+/** Populate INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES.
+@param thd connection
+@param tables table to fill
@return 0 on success */
-static
-int
-i_s_sys_tablespaces_fill_table(
-/*===========================*/
- THD* thd, /*!< in: thread */
- TABLE_LIST* tables, /*!< in/out: tables to fill */
- Item* ) /*!< in: condition (not used) */
-{
- btr_pcur_t pcur;
- const rec_t* rec;
- mem_heap_t* heap;
- mtr_t mtr;
-
- DBUG_ENTER("i_s_sys_tablespaces_fill_table");
- RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name.str);
-
- /* deny access to user without PROCESS_ACL privilege */
- if (check_global_access(thd, PROCESS_ACL)) {
- DBUG_RETURN(0);
- }
-
- heap = mem_heap_create(1000);
- mutex_enter(&dict_sys.mutex);
- mtr_start(&mtr);
-
- for (rec = dict_startscan_system(&pcur, &mtr, SYS_TABLESPACES);
- rec != NULL;
- rec = dict_getnext_system(&pcur, &mtr)) {
-
- const char* err_msg;
- uint32_t space;
- const char* name;
- ulint flags;
-
- /* Extract necessary information from a SYS_TABLESPACES row */
- err_msg = dict_process_sys_tablespaces(
- heap, rec, &space, &name, &flags);
-
- mtr_commit(&mtr);
- mutex_exit(&dict_sys.mutex);
-
- if (!err_msg) {
- i_s_dict_fill_sys_tablespaces(
- thd, space, name, flags,
- tables->table);
- } else {
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_CANT_FIND_SYSTEM_REC, "%s",
- err_msg);
- }
-
- mem_heap_empty(heap);
-
- /* Get the next record */
- mutex_enter(&dict_sys.mutex);
- mtr_start(&mtr);
- }
-
- mtr_commit(&mtr);
- mutex_exit(&dict_sys.mutex);
- mem_heap_free(heap);
-
- DBUG_RETURN(0);
+static int i_s_sys_tablespaces_fill_table(THD *thd, TABLE_LIST *tables, Item*)
+{
+ DBUG_ENTER("i_s_sys_tablespaces_fill_table");
+ RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name.str);
+
+ if (check_global_access(thd, PROCESS_ACL))
+ DBUG_RETURN(0);
+
+ int err= 0;
+
+ mutex_enter(&fil_system.mutex);
+ fil_system.freeze_space_list++;
+
+ for (fil_space_t *space= UT_LIST_GET_FIRST(fil_system.space_list);
+ space; space= UT_LIST_GET_NEXT(space_list, space))
+ {
+ if (space->purpose == FIL_TYPE_TABLESPACE && !space->is_stopping() &&
+ space->chain.start)
+ {
+ space->reacquire();
+ mutex_exit(&fil_system.mutex);
+ err= i_s_sys_tablespaces_fill(thd, *space, tables->table);
+ mutex_enter(&fil_system.mutex);
+ space->release();
+ if (err)
+ break;
+ }
+ }
+
+ fil_system.freeze_space_list--;
+ mutex_exit(&fil_system.mutex);
+ DBUG_RETURN(err);
}
+
/*******************************************************************//**
Bind the dynamic table INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
@return 0 on success */
@@ -6715,7 +6632,7 @@ UNIV_INTERN struct st_maria_plugin i_s_innodb_sys_tablespaces =
/* general descriptive text (for SHOW PLUGINS) */
/* const char* */
- STRUCT_FLD(descr, "InnoDB SYS_TABLESPACES"),
+ STRUCT_FLD(descr, "InnoDB tablespaces"),
/* the plugin license (PLUGIN_LICENSE_XXX) */
/* int */
@@ -6745,185 +6662,6 @@ UNIV_INTERN struct st_maria_plugin i_s_innodb_sys_tablespaces =
};
namespace Show {
-/** SYS_DATAFILES ************************************************/
-/* Fields of the dynamic table INFORMATION_SCHEMA.INNODB_SYS_DATAFILES */
-static ST_FIELD_INFO innodb_sys_datafiles_fields_info[] =
-{
-#define SYS_DATAFILES_SPACE 0
- Column("SPACE", ULong(), NOT_NULL),
-
-#define SYS_DATAFILES_PATH 1
- Column("PATH", Varchar(OS_FILE_MAX_PATH), NOT_NULL),
-
- CEnd()
-};
-} // namespace Show
-
-/**********************************************************************//**
-Function to fill INFORMATION_SCHEMA.INNODB_SYS_DATAFILES with information
-collected by scanning SYS_DATAFILESS table.
-@return 0 on success */
-static
-int
-i_s_dict_fill_sys_datafiles(
-/*========================*/
- THD* thd, /*!< in: thread */
- uint32_t space, /*!< in: space ID */
- const char* path, /*!< in: absolute path */
- TABLE* table_to_fill) /*!< in/out: fill this table */
-{
- Field** fields;
-
- DBUG_ENTER("i_s_dict_fill_sys_datafiles");
-
- fields = table_to_fill->field;
-
- OK(fields[SYS_DATAFILES_SPACE]->store(space, true));
-
- OK(field_store_string(fields[SYS_DATAFILES_PATH], path));
-
- OK(schema_table_store_record(thd, table_to_fill));
-
- DBUG_RETURN(0);
-}
-/*******************************************************************//**
-Function to populate INFORMATION_SCHEMA.INNODB_SYS_DATAFILES table.
-Loop through each record in SYS_DATAFILES, and extract the column
-information and fill the INFORMATION_SCHEMA.INNODB_SYS_DATAFILES table.
-@return 0 on success */
-static
-int
-i_s_sys_datafiles_fill_table(
-/*=========================*/
- THD* thd, /*!< in: thread */
- TABLE_LIST* tables, /*!< in/out: tables to fill */
- Item* ) /*!< in: condition (not used) */
-{
- btr_pcur_t pcur;
- const rec_t* rec;
- mem_heap_t* heap;
- mtr_t mtr;
-
- DBUG_ENTER("i_s_sys_datafiles_fill_table");
- RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name.str);
-
- /* deny access to user without PROCESS_ACL privilege */
- if (check_global_access(thd, PROCESS_ACL)) {
- DBUG_RETURN(0);
- }
-
- heap = mem_heap_create(1000);
- mutex_enter(&dict_sys.mutex);
- mtr_start(&mtr);
-
- rec = dict_startscan_system(&pcur, &mtr, SYS_DATAFILES);
-
- while (rec) {
- const char* err_msg;
- uint32_t space;
- const char* path;
-
- /* Extract necessary information from a SYS_DATAFILES row */
- err_msg = dict_process_sys_datafiles(
- heap, rec, &space, &path);
-
- mtr_commit(&mtr);
- mutex_exit(&dict_sys.mutex);
-
- if (!err_msg) {
- i_s_dict_fill_sys_datafiles(
- thd, space, path, tables->table);
- } else {
- push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
- ER_CANT_FIND_SYSTEM_REC, "%s",
- err_msg);
- }
-
- mem_heap_empty(heap);
-
- /* Get the next record */
- mutex_enter(&dict_sys.mutex);
- mtr_start(&mtr);
- rec = dict_getnext_system(&pcur, &mtr);
- }
-
- mtr_commit(&mtr);
- mutex_exit(&dict_sys.mutex);
- mem_heap_free(heap);
-
- DBUG_RETURN(0);
-}
-/*******************************************************************//**
-Bind the dynamic table INFORMATION_SCHEMA.INNODB_SYS_DATAFILES
-@return 0 on success */
-static
-int
-innodb_sys_datafiles_init(
-/*======================*/
- void* p) /*!< in/out: table schema object */
-{
- ST_SCHEMA_TABLE* schema;
-
- DBUG_ENTER("innodb_sys_datafiles_init");
-
- schema = (ST_SCHEMA_TABLE*) p;
-
- schema->fields_info = Show::innodb_sys_datafiles_fields_info;
- schema->fill_table = i_s_sys_datafiles_fill_table;
-
- DBUG_RETURN(0);
-}
-
-UNIV_INTERN struct st_maria_plugin i_s_innodb_sys_datafiles =
-{
- /* the plugin type (a MYSQL_XXX_PLUGIN value) */
- /* int */
- STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
-
- /* pointer to type-specific plugin descriptor */
- /* void* */
- STRUCT_FLD(info, &i_s_info),
-
- /* plugin name */
- /* const char* */
- STRUCT_FLD(name, "INNODB_SYS_DATAFILES"),
-
- /* plugin author (for SHOW PLUGINS) */
- /* const char* */
- STRUCT_FLD(author, plugin_author),
-
- /* general descriptive text (for SHOW PLUGINS) */
- /* const char* */
- STRUCT_FLD(descr, "InnoDB SYS_DATAFILES"),
-
- /* the plugin license (PLUGIN_LICENSE_XXX) */
- /* int */
- STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
-
- /* the function to invoke when plugin is loaded */
- /* int (*)(void*); */
- STRUCT_FLD(init, innodb_sys_datafiles_init),
-
- /* the function to invoke when plugin is unloaded */
- /* int (*)(void*); */
- STRUCT_FLD(deinit, i_s_common_deinit),
-
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- STRUCT_FLD(version, INNODB_VERSION_SHORT),
-
- /* struct st_mysql_show_var* */
- STRUCT_FLD(status_vars, NULL),
-
- /* struct st_mysql_sys_var** */
- STRUCT_FLD(system_vars, NULL),
-
- /* Maria extension */
- STRUCT_FLD(version_info, INNODB_VERSION_STR),
- STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE),
-};
-
-namespace Show {
/** TABLESPACES_ENCRYPTION ********************************************/
/* Fields of the table INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION */
static ST_FIELD_INFO innodb_tablespaces_encryption_fields_info[] =
@@ -6963,8 +6701,7 @@ static ST_FIELD_INFO innodb_tablespaces_encryption_fields_info[] =
} // namespace Show
/**********************************************************************//**
-Function to fill INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION
-with information collected by scanning SYS_TABLESPACES table.
+Function to fill INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION.
@param[in] thd thread handle
@param[in] space Tablespace
@param[in] table_to_fill I_S table to fill
@@ -7289,7 +7026,7 @@ UNIV_INTERN struct st_maria_plugin i_s_innodb_mutexes =
/* general descriptive text (for SHOW PLUGINS) */
/* const char* */
- STRUCT_FLD(descr, "InnoDB SYS_DATAFILES"),
+ STRUCT_FLD(descr, "Information on InnoDB rw-locks"),
/* the plugin license (PLUGIN_LICENSE_XXX) */
/* int */
diff --git a/storage/innobase/handler/i_s.h b/storage/innobase/handler/i_s.h
index 385c249d9d5..d5fb8247311 100644
--- a/storage/innobase/handler/i_s.h
+++ b/storage/innobase/handler/i_s.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2007, 2015, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2014, 2019, MariaDB Corporation.
+Copyright (c) 2014, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -59,7 +59,6 @@ extern struct st_maria_plugin i_s_innodb_sys_fields;
extern struct st_maria_plugin i_s_innodb_sys_foreign;
extern struct st_maria_plugin i_s_innodb_sys_foreign_cols;
extern struct st_maria_plugin i_s_innodb_sys_tablespaces;
-extern struct st_maria_plugin i_s_innodb_sys_datafiles;
extern struct st_maria_plugin i_s_innodb_mutexes;
extern struct st_maria_plugin i_s_innodb_sys_virtual;
extern struct st_maria_plugin i_s_innodb_tablespaces_encryption;
diff --git a/storage/innobase/include/dict0boot.h b/storage/innobase/include/dict0boot.h
index 0f96df8fd9f..857342b18bd 100644
--- a/storage/innobase/include/dict0boot.h
+++ b/storage/innobase/include/dict0boot.h
@@ -267,37 +267,6 @@ enum dict_fld_sys_foreign_cols_enum {
DICT_FLD__SYS_FOREIGN_COLS__REF_COL_NAME = 5,
DICT_NUM_FIELDS__SYS_FOREIGN_COLS = 6
};
-/* The columns in SYS_TABLESPACES */
-enum dict_col_sys_tablespaces_enum {
- DICT_COL__SYS_TABLESPACES__SPACE = 0,
- DICT_COL__SYS_TABLESPACES__NAME = 1,
- DICT_COL__SYS_TABLESPACES__FLAGS = 2,
- DICT_NUM_COLS__SYS_TABLESPACES = 3
-};
-/* The field numbers in the SYS_TABLESPACES clustered index */
-enum dict_fld_sys_tablespaces_enum {
- DICT_FLD__SYS_TABLESPACES__SPACE = 0,
- DICT_FLD__SYS_TABLESPACES__DB_TRX_ID = 1,
- DICT_FLD__SYS_TABLESPACES__DB_ROLL_PTR = 2,
- DICT_FLD__SYS_TABLESPACES__NAME = 3,
- DICT_FLD__SYS_TABLESPACES__FLAGS = 4,
- DICT_NUM_FIELDS__SYS_TABLESPACES = 5
-};
-/* The columns in SYS_DATAFILES */
-enum dict_col_sys_datafiles_enum {
- DICT_COL__SYS_DATAFILES__SPACE = 0,
- DICT_COL__SYS_DATAFILES__PATH = 1,
- DICT_NUM_COLS__SYS_DATAFILES = 2
-};
-/* The field numbers in the SYS_DATAFILES clustered index */
-enum dict_fld_sys_datafiles_enum {
- DICT_FLD__SYS_DATAFILES__SPACE = 0,
- DICT_FLD__SYS_DATAFILES__DB_TRX_ID = 1,
- DICT_FLD__SYS_DATAFILES__DB_ROLL_PTR = 2,
- DICT_FLD__SYS_DATAFILES__PATH = 3,
- DICT_NUM_FIELDS__SYS_DATAFILES = 4
-};
-
/* The columns in SYS_VIRTUAL */
enum dict_col_sys_virtual_enum {
DICT_COL__SYS_VIRTUAL__TABLE_ID = 0,
diff --git a/storage/innobase/include/dict0crea.h b/storage/innobase/include/dict0crea.h
index 13706d6bfad..72108614f14 100644
--- a/storage/innobase/include/dict0crea.h
+++ b/storage/innobase/include/dict0crea.h
@@ -167,14 +167,6 @@ dict_foreigns_has_s_base_col(
const dict_foreign_set& local_fk_set,
const dict_table_t* table);
-/****************************************************************//**
-Creates the tablespaces and datafiles system tables inside InnoDB
-at server bootstrap or server start if they are not found or are
-not of the right form.
-@return DB_SUCCESS or error code */
-dberr_t
-dict_create_or_check_sys_tablespace(void);
-/*=====================================*/
/** Creates the virtual column system tables inside InnoDB
at server bootstrap or server start if they are not found or are
not of the right form.
@@ -182,22 +174,6 @@ not of the right form.
dberr_t
dict_create_or_check_sys_virtual();
-/** Put a tablespace definition into the data dictionary,
-replacing what was there previously.
-@param[in] space Tablespace id
-@param[in] name Tablespace name
-@param[in] flags Tablespace flags
-@param[in] path Tablespace path
-@param[in] trx Transaction
-@return error code or DB_SUCCESS */
-dberr_t
-dict_replace_tablespace_in_dictionary(
- ulint space_id,
- const char* name,
- ulint flags,
- const char* path,
- trx_t* trx);
-
/********************************************************************//**
Add a foreign key definition to the data dictionary tables.
@return error code or DB_SUCCESS */
diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h
index 276252e625c..9667ad7a731 100644
--- a/storage/innobase/include/dict0dict.h
+++ b/storage/innobase/include/dict0dict.h
@@ -1803,20 +1803,6 @@ dict_table_decode_n_col(
ulint* n_col,
ulint* n_v_col);
-/** Look for any dictionary objects that are found in the given tablespace.
-@param[in] space_id Tablespace ID to search for.
-@return true if tablespace is empty. */
-bool
-dict_space_is_empty(
- ulint space_id);
-
-/** Find the space_id for the given name in sys_tablespaces.
-@param[in] name Tablespace name to search for.
-@return the tablespace ID. */
-ulint
-dict_space_get_id(
- const char* name);
-
/** Free the virtual column template
@param[in,out] vc_templ virtual column template */
UNIV_INLINE
diff --git a/storage/innobase/include/dict0load.h b/storage/innobase/include/dict0load.h
index f067571ca5b..1a777c7d1a0 100644
--- a/storage/innobase/include/dict0load.h
+++ b/storage/innobase/include/dict0load.h
@@ -47,8 +47,6 @@ enum dict_system_id_t {
SYS_FIELDS,
SYS_FOREIGN,
SYS_FOREIGN_COLS,
- SYS_TABLESPACES,
- SYS_DATAFILES,
SYS_VIRTUAL,
/* This must be last item. Defines the number of system tables. */
@@ -56,13 +54,11 @@ enum dict_system_id_t {
};
/** Check each tablespace found in the data dictionary.
-Look at each table defined in SYS_TABLES that has a space_id > 0.
-If the tablespace is not yet in the fil_system cache, look up the
-tablespace in SYS_DATAFILES to ensure the correct path.
+Then look at each table defined in SYS_TABLES that has a space_id > 0
+to find all the file-per-table tablespaces.
In a crash recovery we already have some tablespace objects created from
-processing the REDO log. Any other tablespace in SYS_TABLESPACES not
-previously used in recovery will be opened here. We will compare the
+processing the REDO log. We will compare the
space_id information in the data dictionary to what we find in the
tablespace file. In addition, more validation will be done if recovery
was needed and force_recovery is not set.
@@ -80,7 +76,6 @@ dict_get_first_table_name_in_db(
const char* name); /*!< in: database name which ends to '/' */
/** Make sure the data_file_name is saved in dict_table_t if needed.
-Try to read it from the fil_system first, then from SYS_DATAFILES.
@param[in] table Table object
@param[in] dict_mutex_own true if dict_sys.mutex is owned already */
void
@@ -259,51 +254,5 @@ dict_process_sys_foreign_col_rec(
const char** ref_col_name, /*!< out: referenced column name
in referenced table */
ulint* pos); /*!< out: column position */
-/********************************************************************//**
-This function parses a SYS_TABLESPACES record, extracts necessary
-information from the record and returns to caller.
-@return error message, or NULL on success */
-const char*
-dict_process_sys_tablespaces(
-/*=========================*/
- mem_heap_t* heap, /*!< in/out: heap memory */
- const rec_t* rec, /*!< in: current SYS_TABLESPACES rec */
- uint32_t* space, /*!< out: tablespace identifier */
- const char** name, /*!< out: tablespace name */
- ulint* flags); /*!< out: tablespace flags */
-/********************************************************************//**
-This function parses a SYS_DATAFILES record, extracts necessary
-information from the record and returns to caller.
-@return error message, or NULL on success */
-const char*
-dict_process_sys_datafiles(
-/*=======================*/
- mem_heap_t* heap, /*!< in/out: heap memory */
- const rec_t* rec, /*!< in: current SYS_DATAFILES rec */
- uint32_t* space, /*!< out: tablespace identifier */
- const char** path); /*!< out: datafile path */
-
-/** Update the record for space_id in SYS_TABLESPACES to this filepath.
-@param[in] space_id Tablespace ID
-@param[in] filepath Tablespace filepath
-@return DB_SUCCESS if OK, dberr_t if the insert failed */
-dberr_t
-dict_update_filepath(
- ulint space_id,
- const char* filepath);
-
-/** Replace records in SYS_TABLESPACES and SYS_DATAFILES associated with
-the given space_id using an independent transaction.
-@param[in] space_id Tablespace ID
-@param[in] name Tablespace name
-@param[in] filepath First filepath
-@param[in] fsp_flags Tablespace flags
-@return DB_SUCCESS if OK, dberr_t if the insert failed */
-dberr_t
-dict_replace_tablespace_and_filepath(
- ulint space_id,
- const char* name,
- const char* filepath,
- ulint fsp_flags);
#endif
diff --git a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h
index e645ce31232..e5424aca038 100644
--- a/storage/innobase/include/fil0fil.h
+++ b/storage/innobase/include/fil0fil.h
@@ -1624,7 +1624,6 @@ If the fix_dict boolean is set, then it is safe to use an internal SQL
statement to update the dictionary tables if they are incorrect.
@param[in] validate true if we should validate the tablespace
-@param[in] fix_dict true if the dictionary is available to be fixed
@param[in] purpose FIL_TYPE_TABLESPACE or FIL_TYPE_TEMPORARY
@param[in] id tablespace ID
@param[in] flags expected FSP_SPACE_FLAGS
@@ -1637,7 +1636,6 @@ If file-per-table, it is the table name in the databasename/tablename format
fil_space_t*
fil_ibd_open(
bool validate,
- bool fix_dict,
fil_type_t purpose,
ulint id,
ulint flags,
diff --git a/storage/innobase/include/srv0start.h b/storage/innobase/include/srv0start.h
index 324e3f0478d..9033cd916c3 100644
--- a/storage/innobase/include/srv0start.h
+++ b/storage/innobase/include/srv0start.h
@@ -96,8 +96,6 @@ extern lsn_t srv_shutdown_lsn;
/** TRUE if the server is being started */
extern bool srv_is_being_started;
-/** TRUE if SYS_TABLESPACES is available for lookups */
-extern bool srv_sys_tablespaces_open;
/** TRUE if the server is being started, before rolling back any
incomplete transactions */
extern bool srv_startup_is_before_trx_rollback_phase;
diff --git a/storage/innobase/row/row0import.cc b/storage/innobase/row/row0import.cc
index 8376fbb4ba6..36f821e0e9b 100644
--- a/storage/innobase/row/row0import.cc
+++ b/storage/innobase/row/row0import.cc
@@ -4038,6 +4038,8 @@ row_import_for_mysql(
Find the space ID in SYS_TABLES since this is an ALTER TABLE. */
dict_get_and_save_data_dir_path(table, true);
+ ut_ad(!DICT_TF_HAS_DATA_DIR(table->flags) || table->data_dir_path);
+
if (DICT_TF_HAS_DATA_DIR(table->flags)) {
ut_a(table->data_dir_path);
@@ -4069,7 +4071,7 @@ row_import_for_mysql(
ulint fsp_flags = dict_tf_to_fsp_flags(table->flags);
table->space = fil_ibd_open(
- true, true, FIL_TYPE_IMPORT, table->space_id,
+ true, FIL_TYPE_IMPORT, table->space_id,
fsp_flags, table->name, filepath, &err);
ut_ad((table->space == NULL) == (err != DB_SUCCESS));
diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc
index 33aa578873f..1558f0a9064 100644
--- a/storage/innobase/row/row0mysql.cc
+++ b/storage/innobase/row/row0mysql.cc
@@ -2363,21 +2363,6 @@ err_exit:
err = trx->error_state;
- /* Update SYS_TABLESPACES and SYS_DATAFILES if a new file-per-table
- tablespace was created. */
- if (err == DB_SUCCESS && dict_table_is_file_per_table(table)) {
- err = dict_replace_tablespace_in_dictionary(
- table->space_id, table->name.m_name,
- table->space->flags,
- table->space->chain.start->name, trx);
-
- if (err != DB_SUCCESS) {
-
- /* We must delete the link file. */
- RemoteDatafile::delete_link_file(table->name.m_name);
- }
- }
-
switch (err) {
case DB_SUCCESS:
break;
@@ -3653,23 +3638,6 @@ do_drop:
"DELETE FROM SYS_TABLES WHERE NAME=:name;\n"
"END;\n", FALSE, trx) : err;
-
- if (err == DB_SUCCESS && table->space
- && dict_table_get_low("SYS_TABLESPACES")
- && dict_table_get_low("SYS_DATAFILES")) {
- info = pars_info_create();
- pars_info_add_int4_literal(info, "id",
- lint(table->space_id));
- err = que_eval_sql(
- info,
- "PROCEDURE DROP_SPACE_PROC () IS\n"
- "BEGIN\n"
- "DELETE FROM SYS_TABLESPACES\n"
- "WHERE SPACE = :id;\n"
- "DELETE FROM SYS_DATAFILES\n"
- "WHERE SPACE = :id;\n"
- "END;\n", FALSE, trx);
- }
}
switch (err) {
@@ -4285,38 +4253,6 @@ row_rename_table_for_mysql(
"END;\n"
, FALSE, trx);
- /* SYS_TABLESPACES and SYS_DATAFILES need to be updated if
- the table is in a single-table tablespace. */
- if (err != DB_SUCCESS || !dict_table_is_file_per_table(table)) {
- } else if (table->space) {
- /* If old path and new path are the same means tablename
- has not changed and only the database name holding the table
- has changed so we need to make the complete filepath again. */
- char* new_path = dict_tables_have_same_db(old_name, new_name)
- ? os_file_make_new_pathname(
- table->space->chain.start->name, new_name)
- : fil_make_filepath(NULL, new_name, IBD, false);
-
- info = pars_info_create();
-
- pars_info_add_str_literal(info, "new_table_name", new_name);
- pars_info_add_str_literal(info, "new_path_name", new_path);
- pars_info_add_int4_literal(info, "space_id", table->space_id);
-
- err = que_eval_sql(info,
- "PROCEDURE RENAME_SPACE () IS\n"
- "BEGIN\n"
- "UPDATE SYS_TABLESPACES"
- " SET NAME = :new_table_name\n"
- " WHERE SPACE = :space_id;\n"
- "UPDATE SYS_DATAFILES"
- " SET PATH = :new_path_name\n"
- " WHERE SPACE = :space_id;\n"
- "END;\n"
- , FALSE, trx);
-
- ut_free(new_path);
- }
if (err != DB_SUCCESS) {
goto end;
}
diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc
index b53c7888509..718732f139c 100644
--- a/storage/innobase/srv/srv0start.cc
+++ b/storage/innobase/srv/srv0start.cc
@@ -121,8 +121,6 @@ incomplete transactions */
bool srv_startup_is_before_trx_rollback_phase;
/** TRUE if the server is being started */
bool srv_is_being_started;
-/** TRUE if SYS_TABLESPACES is available for lookups */
-bool srv_sys_tablespaces_open;
/** TRUE if the server was successfully started */
bool srv_was_started;
/** The original value of srv_log_file_size (innodb_log_file_size) */
@@ -1768,17 +1766,7 @@ file_checked:
trx_rollback_recovered(false);
}
- /* FIXME: Skip the following if srv_read_only_mode,
- while avoiding "Allocated tablespace ID" warnings. */
if (srv_force_recovery <= SRV_FORCE_NO_IBUF_MERGE) {
- /* Open or Create SYS_TABLESPACES and SYS_DATAFILES
- so that tablespace names and other metadata can be
- found. */
- err = dict_create_or_check_sys_tablespace();
- if (err != DB_SUCCESS) {
- return(srv_init_abort(err));
- }
-
/* The following call is necessary for the insert
buffer to work with multiple tablespaces. We must
know the mapping between space id's and .ibd file
@@ -1848,10 +1836,7 @@ skip_monitors:
/* Create the SYS_FOREIGN and SYS_FOREIGN_COLS system tables */
err = dict_create_or_check_foreign_constraint_tables();
if (err == DB_SUCCESS) {
- err = dict_create_or_check_sys_tablespace();
- if (err == DB_SUCCESS) {
- err = dict_create_or_check_sys_virtual();
- }
+ err = dict_create_or_check_sys_virtual();
}
switch (err) {
case DB_SUCCESS:
diff --git a/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result b/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
index ac6e2bcc633..37a53036b62 100644
--- a/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
+++ b/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
@@ -321,6 +321,4 @@ ID FOR_NAME REF_NAME N_COLS TYPE
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
ID FOR_COL_NAME REF_COL_NAME POS
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES;
-SPACE NAME FLAG ROW_FORMAT PAGE_SIZE ZIP_PAGE_SIZE FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
-SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
-SPACE PATH
+SPACE NAME FLAG ROW_FORMAT PAGE_SIZE FILENAME FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled-master.opt b/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled-master.opt
index b3565b5fa82..5e9d95e0bf0 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled-master.opt
+++ b/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled-master.opt
@@ -1,5 +1,4 @@
--loose-enable-innodb_trx
---loose-enable-innodb_file_status
--loose-enable-innodb_locks
--loose-enable-innodb_lock_waits
--loose-enable-innodb_cmp
@@ -26,5 +25,3 @@
--loose-enable-innodb_sys_foreign
--loose-enable-innodb_sys_foreign_cols
--loose-enable-innodb_sys_tablespaces
---loose-enable-innodb_sys_datafiles
---loose-enable-innodb_sys_docstore_fields
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test b/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test
index 4ff48e13089..524b37a7127 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test
@@ -9,8 +9,6 @@
--disable_warnings
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
-#Not in MariaDB: SELECT * FROM INFORMATION_SCHEMA.INNODB_FILE_STATUS;
-
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
@@ -37,7 +35,5 @@ SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
-#Not in MariaDB: SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DOCSTORE_FIELDS;
--enable_warnings