|
68 | 68 | --echo # table related DDL be rejected. Verify that implicit |
69 | 69 | --echo # invalid tablespace names (e.g., present in an .FRM |
70 | 70 | --echo # file from a previous MySQL version) are ignored. |
71 | | ---echo # |
| 71 | +--echo # 16. Verify correct P_S information. |
72 | 72 | --echo ########################################################### |
73 | 73 | --echo # |
74 | 74 | --echo # Test setup: Create reusable connections: |
@@ -1043,6 +1043,100 @@ DROP TABLESPACE ts1; |
1043 | 1043 | SET DEBUG_SYNC= 'RESET'; |
1044 | 1044 |
|
1045 | 1045 |
|
| 1046 | +--echo ########################################################### |
| 1047 | +--echo # TC16. Verify correct P_S information. |
| 1048 | +--echo # |
| 1049 | + |
| 1050 | +--echo # |
| 1051 | +--echo # Start executing CREATE TABLESPACE, but wait after |
| 1052 | +--echo # getting the MDL X lock on the tablespace name. |
| 1053 | + |
| 1054 | +--connection con1 |
| 1055 | +SET DEBUG_SYNC= 'after_wait_locked_tablespace_name |
| 1056 | + SIGNAL got_lock_con1 |
| 1057 | + WAIT_FOR cont_con1'; |
| 1058 | +--send CREATE TABLESPACE ts1 ADD DATAFILE 'ts1_1.ibd' |
| 1059 | + |
| 1060 | +--echo # |
| 1061 | +--echo # Start executing ALTER TABLESPACE. |
| 1062 | + |
| 1063 | +--connection con2 |
| 1064 | +SET DEBUG_SYNC= 'now WAIT_FOR got_lock_con1'; |
| 1065 | +--send ALTER TABLESPACE ts1 ADD DATAFILE 'ts1_2.ibd' |
| 1066 | + |
| 1067 | +--echo # |
| 1068 | +--echo # Verify that the ALTER TABLESPACE is waiting for an MDL |
| 1069 | +--echo # X lock on the tablespace name (not logged). Then, verify |
| 1070 | +--echo # that we are also seeing the correct entries in the P_S MDL |
| 1071 | +--echo # and events_waits_current tables. Further, signal con1 to |
| 1072 | +--echo # make the CREATE TABLESPACE proceed. |
| 1073 | + |
| 1074 | +--connection default |
| 1075 | +LET $wait_condition= |
| 1076 | + SELECT COUNT(*) = 1 FROM information_schema.processlist |
| 1077 | + WHERE state LIKE 'Waiting for tablespace metadata lock' AND |
| 1078 | + info LIKE 'ALTER TABLESPACE%'; |
| 1079 | +--source include/wait_condition.inc |
| 1080 | + |
| 1081 | +LET $wait_condition= |
| 1082 | + SELECT COUNT(*) = 2 FROM performance_schema.metadata_locks |
| 1083 | + WHERE object_type LIKE 'TABLESPACE'; |
| 1084 | +--source include/wait_condition.inc |
| 1085 | + |
| 1086 | +SELECT object_type, object_name, lock_type, lock_duration, lock_status |
| 1087 | + FROM performance_schema.metadata_locks |
| 1088 | + WHERE object_type LIKE 'TABLESPACE'; |
| 1089 | + |
| 1090 | +LET $wait_condition= |
| 1091 | + SELECT COUNT(*) = 1 FROM performance_schema.events_waits_current |
| 1092 | + WHERE object_type LIKE 'TABLESPACE'; |
| 1093 | +--source include/wait_condition.inc |
| 1094 | + |
| 1095 | +SELECT event_name, object_name, object_type, operation |
| 1096 | + FROM performance_schema.events_waits_current |
| 1097 | + WHERE object_type LIKE 'TABLESPACE'; |
| 1098 | + |
| 1099 | +SET DEBUG_SYNC= 'now SIGNAL cont_con1'; |
| 1100 | + |
| 1101 | +--echo # |
| 1102 | +--echo # Now, the tablespace MDL information will eventually be |
| 1103 | +--echo # gone from both I_S and P_S, except it will remain in the |
| 1104 | +--echo # P_S event wait history. |
| 1105 | + |
| 1106 | +LET $wait_condition= |
| 1107 | + SELECT COUNT(*) = 0 FROM information_schema.processlist |
| 1108 | + WHERE state LIKE 'Waiting for tablespace metadata lock' AND |
| 1109 | + info LIKE 'ALTER TABLESPACE%'; |
| 1110 | +--source include/wait_condition.inc |
| 1111 | + |
| 1112 | +LET $wait_condition= |
| 1113 | + SELECT COUNT(*) = 0 FROM performance_schema.metadata_locks |
| 1114 | + WHERE object_type LIKE 'TABLESPACE'; |
| 1115 | +--source include/wait_condition.inc |
| 1116 | + |
| 1117 | +LET $wait_condition= |
| 1118 | + SELECT COUNT(*) = 1 FROM performance_schema.events_waits_history |
| 1119 | + WHERE object_type LIKE 'TABLESPACE' AND object_name LIKE 'ts1'; |
| 1120 | +--source include/wait_condition.inc |
| 1121 | + |
| 1122 | +SELECT event_name, object_name, object_type, operation |
| 1123 | + FROM performance_schema.events_waits_history |
| 1124 | + WHERE object_type LIKE 'TABLESPACE' AND object_name LIKE 'ts1'; |
| 1125 | + |
| 1126 | +--echo # |
| 1127 | +--echo # Reap the connections, reset DEBUG_SYNC and drop objects. |
| 1128 | + |
| 1129 | +--connection con1 |
| 1130 | +--reap |
| 1131 | +--connection con2 |
| 1132 | +# InnoDB does not support ALTER TABLESPACE |
| 1133 | +--error ER_CHECK_NOT_IMPLEMENTED |
| 1134 | +--reap |
| 1135 | +--connection default |
| 1136 | +DROP TABLESPACE ts1; |
| 1137 | +SET DEBUG_SYNC= 'RESET'; |
| 1138 | + |
| 1139 | + |
1046 | 1140 | --echo ########################################################### |
1047 | 1141 | --echo # |
1048 | 1142 | --echo # Test teardown: Disconnect |
|
0 commit comments