Hi, Pavel! On Oct 13, Pavel Ivanov wrote:
For example, in MariaDB one can use InnoDB for system tables too. Always could, even in 5.5, it's not a new feature. There is no code that limits system tables to a specific storage engine.
This is not true even in MariaDB 10.2: https://github.com/MariaDB/server/blob/10.2/storage/innobase/row/row0mysql.c.... And that's only the explicit restriction. Even when you remove that you still need a lot of other code changes to make MariaDB work with system tables using InnoDB. There are many places assuming that system tables are not transactional.
That's basically what I said - the server doesn't limit system tables to a specific engine. Every engine can decide for itself. And InnoDB, apparently, doesn't want to create mysql.host, mysql.user, and mysql.db tables. This test: https://github.com/MariaDB/server/blob/5.5/mysql-test/t/plugin_innodb.test verifies that mysql.plugin works when altered to InnoDB This test: https://github.com/MariaDB/server/blob/10.1/mysql-test/suite/innodb/t/system... verifies that mysql.time_zone_name works when altered to InnoDB This is not a very popular use case, we had no bug reports about mysql.host, mysql.user, and mysql.db in InnoDB. Otherwise this would've been fixed too. Regards, Sergei Chief Architect MariaDB and security@mariadb.org