Skip to content

Commit ff8ffef

Browse files
committed
MDEV-23201: mysql_upgrade order mysql.user for 5.7 cross-upgrade
As MariaDB tables are expected in a fixed order, the cross upgrade previously placed roles, default_role and max_statement_time after now unused mysql-5.7 columns. Test: $ cp -a /usr/local/mysql-5.7.31/data/ /tmp/m57data $ sql/mysqld --no-defaults --skip-networking --datadir=/tmp/m57data --socket=/tmp/${PWD##*/}.sock --verbose --lc-messages-dir=$PWD/sql/share 2020-10-02 11:02:05 140135193212864 [Note] sql/mysqld (mysqld 10.2.34-MariaDB) starting as process 1457667 ... 2020-10-02 11:02:05 140135193212864 [Note] InnoDB: Mutexes and rw_locks use GCC atomic built $ client/mysql_upgrade --no-defaults -u root -pbob -S /tmp/build-mariadb-server-10.2.sock MySQL upgrade detected Phase 1/7: Checking and upgrading mysql database Processing databases mysql mysql.columns_priv OK mysql.db OK mysql.engine_cost OK mysql.event OK mysql.func OK mysql.gtid_executed OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.innodb_index_stats OK mysql.innodb_table_stats OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.server_cost OK mysql.servers OK mysql.slave_master_info OK mysql.slave_relay_log_info OK mysql.slave_worker_info OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Upgrading from a version before MariaDB-10.1 Phase 2/7: Installing used storage engines Result: | user | CREATE TABLE `user` ( `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '', `ssl_cipher` blob NOT NULL, `x509_issuer` blob NOT NULL, `x509_subject` blob NOT NULL, `max_questions` int(11) unsigned NOT NULL DEFAULT 0, `max_updates` int(11) unsigned NOT NULL DEFAULT 0, `max_connections` int(11) unsigned NOT NULL DEFAULT 0, `max_user_connections` int(11) NOT NULL DEFAULT 0, `plugin` char(64) CHARACTER SET latin1 NOT NULL DEFAULT '', `authentication_string` text COLLATE utf8_bin NOT NULL, `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `is_role` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `default_role` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', `max_statement_time` decimal(12,6) NOT NULL DEFAULT 0.000000, `password_last_changed` timestamp NULL DEFAULT NULL, `password_lifetime` smallint(5) unsigned DEFAULT NULL, `account_locked` enum('N','Y') COLLATE utf8_bin NOT NULL DEFAULT 'N', PRIMARY KEY (`Host`,`User`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' | MariaDB [(none)]> CREATE ROLE `aRole`; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> SET ROLE `aRole`; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> SET ROLE `aRole`; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> SELECT `User`, `is_role` FROM `mysql`.`user`; +---------------+---------+ | User | is_role | +---------------+---------+ | root | N | | mysql.session | N | | mysql.sys | N | | dan | N | | aRole | Y | +---------------+---------+ 5 rows in set (0.00 sec) Reviewer: Anel Husakovic
1 parent 4383c70 commit ff8ffef

File tree

6 files changed

+211
-6
lines changed

6 files changed

+211
-6
lines changed

mysql-test/r/mysql_upgrade.result

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,3 +561,173 @@ t1 CREATE TABLE `t1` (
561561
DROP TABLE test.t1;
562562
SET GLOBAL enforce_storage_engine=NULL;
563563
End of 10.1 tests
564+
#
565+
# MDEV-23201 'Roles' are created incorrectly on an install that was previously MySQL 5.7
566+
#
567+
#
568+
FLUSH TABLES mysql.user;
569+
FLUSH PRIVILEGES;
570+
SHOW CREATE TABLE mysql.user;
571+
Table Create Table
572+
user CREATE TABLE `user` (
573+
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
574+
`User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '',
575+
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
576+
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
577+
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
578+
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
579+
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
580+
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
581+
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
582+
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
583+
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
584+
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
585+
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
586+
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
587+
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
588+
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
589+
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
590+
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
591+
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
592+
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
593+
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
594+
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
595+
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
596+
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
597+
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
598+
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
599+
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
600+
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
601+
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
602+
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
603+
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
604+
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
605+
`ssl_cipher` blob NOT NULL,
606+
`x509_issuer` blob NOT NULL,
607+
`x509_subject` blob NOT NULL,
608+
`max_questions` int(11) unsigned NOT NULL DEFAULT 0,
609+
`max_updates` int(11) unsigned NOT NULL DEFAULT 0,
610+
`max_connections` int(11) unsigned NOT NULL DEFAULT 0,
611+
`max_user_connections` int(11) unsigned NOT NULL DEFAULT 0,
612+
`plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password',
613+
`authentication_string` text COLLATE utf8_bin DEFAULT NULL,
614+
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
615+
`password_last_changed` timestamp NULL DEFAULT NULL,
616+
`password_lifetime` smallint(5) unsigned DEFAULT NULL,
617+
`account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
618+
PRIMARY KEY (`Host`,`User`)
619+
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
620+
Phase 1/7: Checking and upgrading mysql database
621+
Processing databases
622+
mysql
623+
mysql.column_stats OK
624+
mysql.columns_priv OK
625+
mysql.db OK
626+
mysql.event OK
627+
mysql.func OK
628+
mysql.gtid_slave_pos OK
629+
mysql.help_category OK
630+
mysql.help_keyword OK
631+
mysql.help_relation OK
632+
mysql.help_topic OK
633+
mysql.host OK
634+
mysql.index_stats OK
635+
mysql.innodb_index_stats OK
636+
mysql.innodb_table_stats OK
637+
mysql.plugin OK
638+
mysql.proc OK
639+
mysql.procs_priv OK
640+
mysql.proxies_priv OK
641+
mysql.roles_mapping OK
642+
mysql.servers OK
643+
mysql.table_stats OK
644+
mysql.tables_priv OK
645+
mysql.time_zone OK
646+
mysql.time_zone_leap_second OK
647+
mysql.time_zone_name OK
648+
mysql.time_zone_transition OK
649+
mysql.time_zone_transition_type OK
650+
mysql.user OK
651+
Upgrading from a version before MariaDB-10.1
652+
Phase 2/7: Installing used storage engines
653+
Checking for tables with unknown storage engine
654+
Phase 3/7: Fixing views
655+
Phase 4/7: Running 'mysql_fix_privilege_tables'
656+
Phase 5/7: Fixing table and database names
657+
Phase 6/7: Checking and upgrading tables
658+
Processing databases
659+
information_schema
660+
mtr
661+
mtr.global_suppressions OK
662+
mtr.test_suppressions OK
663+
performance_schema
664+
test
665+
Phase 7/7: Running 'FLUSH PRIVILEGES'
666+
OK
667+
SHOW CREATE TABLE mysql.user;
668+
Table Create Table
669+
user CREATE TABLE `user` (
670+
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
671+
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
672+
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
673+
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
674+
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
675+
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
676+
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
677+
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
678+
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
679+
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
680+
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
681+
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
682+
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
683+
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
684+
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
685+
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
686+
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
687+
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
688+
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
689+
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
690+
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
691+
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
692+
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
693+
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
694+
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
695+
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
696+
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
697+
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
698+
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
699+
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
700+
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
701+
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
702+
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
703+
`ssl_cipher` blob NOT NULL,
704+
`x509_issuer` blob NOT NULL,
705+
`x509_subject` blob NOT NULL,
706+
`max_questions` int(11) unsigned NOT NULL DEFAULT 0,
707+
`max_updates` int(11) unsigned NOT NULL DEFAULT 0,
708+
`max_connections` int(11) unsigned NOT NULL DEFAULT 0,
709+
`max_user_connections` int(11) NOT NULL DEFAULT 0,
710+
`plugin` char(64) CHARACTER SET latin1 NOT NULL DEFAULT '',
711+
`authentication_string` text COLLATE utf8_bin NOT NULL,
712+
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
713+
`is_role` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
714+
`default_role` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
715+
`max_statement_time` decimal(12,6) NOT NULL DEFAULT 0.000000,
716+
`password_last_changed` timestamp NULL DEFAULT NULL,
717+
`password_lifetime` smallint(5) unsigned DEFAULT NULL,
718+
`account_locked` enum('N','Y') COLLATE utf8_bin NOT NULL DEFAULT 'N',
719+
PRIMARY KEY (`Host`,`User`)
720+
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
721+
CREATE ROLE `aRole`;
722+
SET ROLE `aRole`;
723+
FLUSH PRIVILEGES;
724+
SET ROLE `aRole`;
725+
SELECT `User`, `is_role` FROM `mysql`.`user`;
726+
User is_role
727+
mysql.session N
728+
root N
729+
mysql.sys N
730+
aRole Y
731+
DROP ROLE `aRole`;
732+
FLUSH PRIVILEGES;
733+
End of 10.2 tests
340 Bytes
Binary file not shown.
4 KB
Binary file not shown.
10.6 KB
Binary file not shown.

mysql-test/t/mysql_upgrade.test

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,3 +219,38 @@ DROP TABLE test.t1;
219219
SET GLOBAL enforce_storage_engine=NULL;
220220

221221
--echo End of 10.1 tests
222+
223+
--echo #
224+
--echo # MDEV-23201 'Roles' are created incorrectly on an install that was previously MySQL 5.7
225+
--echo #
226+
--echo #
227+
228+
--exec $MYSQL_DUMP --result-file $MYSQLTEST_VARDIR/tmp/user.sql mysql user
229+
--remove_file $MYSQLD_DATADIR/mysql/user.frm
230+
--remove_file $MYSQLD_DATADIR/mysql/user.MYI
231+
--remove_file $MYSQLD_DATADIR/mysql/user.MYD
232+
233+
--copy_file std_data/mysql57user.frm $MYSQLD_DATADIR/mysql/user.frm
234+
--copy_file std_data/mysql57user.MYI $MYSQLD_DATADIR/mysql/user.MYI
235+
--copy_file std_data/mysql57user.MYD $MYSQLD_DATADIR/mysql/user.MYD
236+
FLUSH TABLES mysql.user;
237+
FLUSH PRIVILEGES;
238+
SHOW CREATE TABLE mysql.user;
239+
240+
--exec $MYSQL_UPGRADE --force 2>&1
241+
SHOW CREATE TABLE mysql.user;
242+
243+
CREATE ROLE `aRole`;
244+
SET ROLE `aRole`;
245+
246+
FLUSH PRIVILEGES;
247+
248+
SET ROLE `aRole`;
249+
SELECT `User`, `is_role` FROM `mysql`.`user`;
250+
251+
DROP ROLE `aRole`;
252+
--exec $MYSQL mysql < $MYSQLTEST_VARDIR/tmp/user.sql
253+
FLUSH PRIVILEGES;
254+
--remove_file $MYSQLD_DATADIR/mysql_upgrade_info
255+
256+
--echo End of 10.2 tests

scripts/mysql_system_tables_fix.sql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -644,14 +644,14 @@ ALTER TABLE user MODIFY Create_tablespace_priv enum('N','Y') COLLATE utf8_genera
644644

645645
UPDATE user SET Create_tablespace_priv = Super_priv WHERE @hadCreateTablespacePriv = 0;
646646

647-
ALTER TABLE user ADD plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL,
648-
ADD authentication_string TEXT NOT NULL;
647+
ALTER TABLE user ADD plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL AFTER max_user_connections,
648+
ADD authentication_string TEXT NOT NULL AFTER plugin;
649649
ALTER TABLE user MODIFY plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL,
650650
MODIFY authentication_string TEXT NOT NULL;
651-
ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
652-
ALTER TABLE user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
653-
ALTER TABLE user ADD default_role char(80) binary DEFAULT '' NOT NULL;
654-
ALTER TABLE user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL;
651+
ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER authentication_string;
652+
ALTER TABLE user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER password_expired;
653+
ALTER TABLE user ADD default_role char(80) binary DEFAULT '' NOT NULL AFTER is_role;
654+
ALTER TABLE user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL AFTER default_role;
655655
-- Somewhere above, we ran ALTER TABLE user .... CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin.
656656
-- we want password_expired column to have collation utf8_general_ci.
657657
ALTER TABLE user MODIFY password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;

0 commit comments

Comments
 (0)