Sergei Golubchik <serg@mariadb.org> writes:
Unless we redefine what "online" mean. If not, there's no choice but stop claming an "online alter" support and remove ONLINE and LOCK=NONE from the syntax.
Opinions?
I think "ONLINE" should mean: no exclusive lock is taken while data is migrated from the old table definition to the new. And LOCK=NONE should mean the same: no lock is taken while data of the table is migrated. Of course, if there is no need to migrate any data, then the operation is trivially LOCK=NONE and ONLINE. Like `ALTER TABLE t1 MODIFY b INT DEFAULT 5`. As you said, it's obvious that an exclusive lock is needed for the metadata (you cannot alter the default of b to both 5 and 6 at the same time). So the LOCK should be about the data migration (if any) which is the potentially time-consuming one that users care about, not about the metadata lock on the .frm file. (I am not sure how this matches current MariaDB or MySQL behaviour, but it is what I would expect and probably most other users as well). Hope this helps, - Kristian.