@@ -104,3 +104,170 @@ create table t3 (a int not null primary key, b int, c varchar(80)) engine=merge
104104--error ER_ALTER_OPERATION_NOT_SUPPORTED
105105alter online table t3 union=(t1,t2);
106106drop table t1,t2,t3;
107+
108+ --echo #
109+ --echo # MDEV-8948 ALTER ... INPLACE does work for BINARY, BLOB
110+ --echo #
111+ #
112+ # ALTER to the same [VAR]BINARY type
113+ #
114+ CREATE TABLE t1 (a BINARY(10));
115+ ALTER TABLE t1 MODIFY a BINARY(10), ALGORITHM=INPLACE;
116+ DROP TABLE t1;
117+
118+ CREATE TABLE t1 (a VARBINARY(10));
119+ ALTER TABLE t1 MODIFY a VARBINARY(10), ALGORITHM=INPLACE;
120+ DROP TABLE t1;
121+
122+ #
123+ # ALTER to the same BLOB variant
124+ #
125+ CREATE TABLE t1 (a TINYBLOB);
126+ ALTER TABLE t1 MODIFY a TINYBLOB, ALGORITHM=INPLACE;
127+ DROP TABLE t1;
128+
129+ CREATE TABLE t1 (a MEDIUMBLOB);
130+ ALTER TABLE t1 MODIFY a MEDIUMBLOB, ALGORITHM=INPLACE;
131+ DROP TABLE t1;
132+
133+ CREATE TABLE t1 (a BLOB);
134+ ALTER TABLE t1 MODIFY a BLOB, ALGORITHM=INPLACE;
135+ DROP TABLE t1;
136+
137+ CREATE TABLE t1 (a LONGBLOB);
138+ ALTER TABLE t1 MODIFY a LONGBLOB, ALGORITHM=INPLACE;
139+ DROP TABLE t1;
140+
141+ #
142+ # ALTER to the same [VAR]CHAR type
143+ #
144+ CREATE TABLE t1 (a CHAR(10));
145+ ALTER TABLE t1 MODIFY a CHAR(10), ALGORITHM=INPLACE;
146+ DROP TABLE t1;
147+
148+ CREATE TABLE t1 (a VARCHAR(10));
149+ ALTER TABLE t1 MODIFY a VARCHAR(10), ALGORITHM=INPLACE;
150+ DROP TABLE t1;
151+
152+
153+ #
154+ # ALTER to the same TEXT variant
155+ #
156+ CREATE TABLE t1 (a TINYTEXT);
157+ ALTER TABLE t1 MODIFY a TINYTEXT, ALGORITHM=INPLACE;
158+ DROP TABLE t1;
159+
160+ CREATE TABLE t1 (a MEDIUMTEXT);
161+ ALTER TABLE t1 MODIFY a MEDIUMTEXT, ALGORITHM=INPLACE;
162+ DROP TABLE t1;
163+
164+ CREATE TABLE t1 (a TEXT);
165+ ALTER TABLE t1 MODIFY a TEXT, ALGORITHM=INPLACE;
166+ DROP TABLE t1;
167+
168+ CREATE TABLE t1 (a LONGTEXT);
169+ ALTER TABLE t1 MODIFY a LONGTEXT, ALGORITHM=INPLACE;
170+ DROP TABLE t1;
171+
172+ #
173+ # ALTER from a non-binary to a binary collation
174+ #
175+ CREATE TABLE t1 (a CHAR(10));
176+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
177+ ALTER TABLE t1 MODIFY a CHAR(10) COLLATE latin1_bin, ALGORITHM=INPLACE;
178+ DROP TABLE t1;
179+
180+ CREATE TABLE t1 (a VARCHAR(10));
181+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
182+ ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE latin1_bin, ALGORITHM=INPLACE;
183+ DROP TABLE t1;
184+
185+ CREATE TABLE t1 (a TINYTEXT);
186+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
187+ ALTER TABLE t1 MODIFY a TINYTEXT COLLATE latin1_bin, ALGORITHM=INPLACE;
188+ DROP TABLE t1;
189+
190+ CREATE TABLE t1 (a MEDIUMTEXT);
191+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
192+ ALTER TABLE t1 MODIFY a MEDIUMTEXT COLLATE latin1_bin, ALGORITHM=INPLACE;
193+ DROP TABLE t1;
194+
195+ CREATE TABLE t1 (a TEXT);
196+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
197+ ALTER TABLE t1 MODIFY a TEXT COLLATE latin1_bin, ALGORITHM=INPLACE;
198+ DROP TABLE t1;
199+
200+ CREATE TABLE t1 (a LONGTEXT);
201+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
202+ ALTER TABLE t1 MODIFY a LONGTEXT COLLATE latin1_bin, ALGORITHM=INPLACE;
203+ DROP TABLE t1;
204+
205+ #
206+ # ALTER from a binary to a non-binary collation
207+ #
208+ CREATE TABLE t1 (a CHAR(10) COLLATE latin1_bin);
209+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
210+ ALTER TABLE t1 MODIFY a CHAR(10) COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
211+ DROP TABLE t1;
212+
213+ CREATE TABLE t1 (a VARCHAR(10) COLLATE latin1_bin);
214+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
215+ ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
216+ DROP TABLE t1;
217+
218+ CREATE TABLE t1 (a TINYTEXT COLLATE latin1_bin);
219+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
220+ ALTER TABLE t1 MODIFY a TINYTEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
221+ DROP TABLE t1;
222+
223+ CREATE TABLE t1 (a MEDIUMTEXT COLLATE latin1_bin);
224+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
225+ ALTER TABLE t1 MODIFY a MEDIUMTEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
226+ DROP TABLE t1;
227+
228+ CREATE TABLE t1 (a TEXT COLLATE latin1_bin);
229+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
230+ ALTER TABLE t1 MODIFY a TEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
231+ DROP TABLE t1;
232+
233+ CREATE TABLE t1 (a LONGTEXT COLLATE latin1_bin);
234+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
235+ ALTER TABLE t1 MODIFY a LONGTEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
236+ DROP TABLE t1;
237+
238+ #
239+ # ALTER from a non-binary collation to another non-binary collation
240+ #
241+ CREATE TABLE t1 (a CHAR(10) COLLATE latin1_general_ci);
242+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
243+ ALTER TABLE t1 MODIFY a CHAR(10) COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
244+ DROP TABLE t1;
245+
246+ CREATE TABLE t1 (a VARCHAR(10) COLLATE latin1_general_ci);
247+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
248+ ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
249+ DROP TABLE t1;
250+
251+ CREATE TABLE t1 (a TINYTEXT COLLATE latin1_general_ci);
252+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
253+ ALTER TABLE t1 MODIFY a TINYTEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
254+ DROP TABLE t1;
255+
256+ CREATE TABLE t1 (a MEDIUMTEXT COLLATE latin1_general_ci);
257+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
258+ ALTER TABLE t1 MODIFY a MEDIUMTEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
259+ DROP TABLE t1;
260+
261+ CREATE TABLE t1 (a TEXT COLLATE latin1_general_ci);
262+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
263+ ALTER TABLE t1 MODIFY a TEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
264+ DROP TABLE t1;
265+
266+ CREATE TABLE t1 (a LONGTEXT COLLATE latin1_general_ci);
267+ --error ER_ALTER_OPERATION_NOT_SUPPORTED
268+ ALTER TABLE t1 MODIFY a LONGTEXT COLLATE latin1_swedish_ci, ALGORITHM=INPLACE;
269+ DROP TABLE t1;
270+
271+ --echo #
272+ --echo # End of MDEV-8948 ALTER ... INPLACE does work for BINARY, BLOB
273+ --echo #
0 commit comments