@@ -1039,3 +1039,132 @@ UNLOCK TABLE;
1039
1039
DROP TABLE t1;
1040
1040
DROP TABLESPACE s1;
1041
1041
DROP TABLESPACE s2;
1042
+ #
1043
+ # Bug#27472087: ALTER TABLE HANGS IN "WAITING FOR TABLESPACE METADATA
1044
+ # LOCK" STATE
1045
+ #
1046
+ # Verify that MDLs taken for implicit table and partition tablespaces
1047
+ # handled correctly in lock tables mode.
1048
+ #
1049
+ CREATE TABLE test1(a INT NOT NULL, b CHAR(2) NOT NULL, PRIMARY KEY(a, b))
1050
+ ENGINE=INNODB;
1051
+ CREATE TABLE test2(a INT NOT NULL, b CHAR(2) NOT NULL, PRIMARY KEY(a, b))
1052
+ ENGINE=INNODB;
1053
+ LOCK TABLES test1 WRITE;
1054
+ ### Locks held ###
1055
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1056
+ FROM performance_schema.metadata_locks
1057
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1058
+ OBJECT_TYPE = 'tablespace'
1059
+ ORDER BY OBJECT_NAME;
1060
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1061
+ TABLESPACE test/test1 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1062
+ TABLE test1 SHARED_NO_READ_WRITE TRANSACTION GRANTED
1063
+ ###
1064
+ ALTER TABLE test1 RENAME test1_tmp;
1065
+ ### Locks held ###
1066
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1067
+ FROM performance_schema.metadata_locks
1068
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1069
+ OBJECT_TYPE = 'tablespace'
1070
+ ORDER BY OBJECT_NAME;
1071
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1072
+ TABLESPACE test/test1_tmp EXCLUSIVE TRANSACTION GRANTED
1073
+ TABLE test1_tmp EXCLUSIVE TRANSACTION GRANTED
1074
+ ###
1075
+ ALTER TABLE test2 RENAME test1;
1076
+ ### Locks held ###
1077
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1078
+ FROM performance_schema.metadata_locks
1079
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1080
+ OBJECT_TYPE = 'tablespace'
1081
+ ORDER BY OBJECT_NAME;
1082
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1083
+ TABLESPACE test/test1_tmp EXCLUSIVE TRANSACTION GRANTED
1084
+ TABLE test1_tmp EXCLUSIVE TRANSACTION GRANTED
1085
+ ###
1086
+ UNLOCK TABLES;
1087
+ ### Locks held ###
1088
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1089
+ FROM performance_schema.metadata_locks
1090
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1091
+ OBJECT_TYPE = 'tablespace'
1092
+ ORDER BY OBJECT_NAME;
1093
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1094
+ ###
1095
+ DROP TABLE test1_tmp;
1096
+ DROP TABLE test1;
1097
+ # Testing partitioned tables
1098
+ CREATE TABLE part1(a INT) PARTITION BY HASH (a) PARTITIONS 10;
1099
+ CREATE TABLE part2(a INT) PARTITION BY HASH (a) PARTITIONS 10;
1100
+ LOCK TABLES part1 WRITE;
1101
+ ### Locks held ###
1102
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1103
+ FROM performance_schema.metadata_locks
1104
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1105
+ OBJECT_TYPE = 'tablespace'
1106
+ ORDER BY OBJECT_NAME;
1107
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1108
+ TABLE part1 SHARED_NO_READ_WRITE TRANSACTION GRANTED
1109
+ TABLESPACE test/part1#P#p0 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1110
+ TABLESPACE test/part1#P#p1 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1111
+ TABLESPACE test/part1#P#p2 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1112
+ TABLESPACE test/part1#P#p3 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1113
+ TABLESPACE test/part1#P#p4 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1114
+ TABLESPACE test/part1#P#p5 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1115
+ TABLESPACE test/part1#P#p6 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1116
+ TABLESPACE test/part1#P#p7 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1117
+ TABLESPACE test/part1#P#p8 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1118
+ TABLESPACE test/part1#P#p9 INTENTION_EXCLUSIVE TRANSACTION GRANTED
1119
+ ###
1120
+ ALTER TABLE part1 RENAME TO part1_tmp;
1121
+ ### Locks held ###
1122
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1123
+ FROM performance_schema.metadata_locks
1124
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1125
+ OBJECT_TYPE = 'tablespace'
1126
+ ORDER BY OBJECT_NAME;
1127
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1128
+ TABLE part1_tmp EXCLUSIVE TRANSACTION GRANTED
1129
+ TABLESPACE test/part1_tmp#P#p0 EXCLUSIVE TRANSACTION GRANTED
1130
+ TABLESPACE test/part1_tmp#P#p1 EXCLUSIVE TRANSACTION GRANTED
1131
+ TABLESPACE test/part1_tmp#P#p2 EXCLUSIVE TRANSACTION GRANTED
1132
+ TABLESPACE test/part1_tmp#P#p3 EXCLUSIVE TRANSACTION GRANTED
1133
+ TABLESPACE test/part1_tmp#P#p4 EXCLUSIVE TRANSACTION GRANTED
1134
+ TABLESPACE test/part1_tmp#P#p5 EXCLUSIVE TRANSACTION GRANTED
1135
+ TABLESPACE test/part1_tmp#P#p6 EXCLUSIVE TRANSACTION GRANTED
1136
+ TABLESPACE test/part1_tmp#P#p7 EXCLUSIVE TRANSACTION GRANTED
1137
+ TABLESPACE test/part1_tmp#P#p8 EXCLUSIVE TRANSACTION GRANTED
1138
+ TABLESPACE test/part1_tmp#P#p9 EXCLUSIVE TRANSACTION GRANTED
1139
+ ###
1140
+ ALTER TABLE part2 RENAME TO part1;
1141
+ ### Locks held ###
1142
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1143
+ FROM performance_schema.metadata_locks
1144
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1145
+ OBJECT_TYPE = 'tablespace'
1146
+ ORDER BY OBJECT_NAME;
1147
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1148
+ TABLE part1_tmp EXCLUSIVE TRANSACTION GRANTED
1149
+ TABLESPACE test/part1_tmp#P#p0 EXCLUSIVE TRANSACTION GRANTED
1150
+ TABLESPACE test/part1_tmp#P#p1 EXCLUSIVE TRANSACTION GRANTED
1151
+ TABLESPACE test/part1_tmp#P#p2 EXCLUSIVE TRANSACTION GRANTED
1152
+ TABLESPACE test/part1_tmp#P#p3 EXCLUSIVE TRANSACTION GRANTED
1153
+ TABLESPACE test/part1_tmp#P#p4 EXCLUSIVE TRANSACTION GRANTED
1154
+ TABLESPACE test/part1_tmp#P#p5 EXCLUSIVE TRANSACTION GRANTED
1155
+ TABLESPACE test/part1_tmp#P#p6 EXCLUSIVE TRANSACTION GRANTED
1156
+ TABLESPACE test/part1_tmp#P#p7 EXCLUSIVE TRANSACTION GRANTED
1157
+ TABLESPACE test/part1_tmp#P#p8 EXCLUSIVE TRANSACTION GRANTED
1158
+ TABLESPACE test/part1_tmp#P#p9 EXCLUSIVE TRANSACTION GRANTED
1159
+ ###
1160
+ UNLOCK TABLES;
1161
+ ### Locks held ###
1162
+ SELECT OBJECT_TYPE, OBJECT_NAME, LOCK_TYPE, LOCK_DURATION, LOCK_STATUS
1163
+ FROM performance_schema.metadata_locks
1164
+ WHERE OBJECT_TYPE = 'table' AND OBJECT_SCHEMA = 'test' OR
1165
+ OBJECT_TYPE = 'tablespace'
1166
+ ORDER BY OBJECT_NAME;
1167
+ OBJECT_TYPE OBJECT_NAME LOCK_TYPE LOCK_DURATION LOCK_STATUS
1168
+ ###
1169
+ DROP TABLE part1_tmp;
1170
+ DROP TABLE part1;
0 commit comments