Description:
Hi,
If a column on 8.0 is FLOAT or DOUBLE and has AUTO_INCREMENT the upgrade to 8.4.3 is not possible.
How to repeat:
$ dbdeployer deploy single /opt/mysql/8.0.39/ --port=$(getport) --force
$ ./use -e "create table test.t1 (c1 float auto_increment primary key)"
# Starting the same data directory with 8.4.3 binaries fails:
2024-12-10T02:00:22.307639Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2024-12-10T02:00:22.539252Z 0 [System] [MY-010116] [Server] /opt/mysql/8.4.3/bin/mysqld (mysqld 8.4.3) starting as process 2957081
2024-12-10T02:00:22.547410Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-12-10T02:00:31.623952Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-12-10T02:00:32.525595Z 1 [System] [MY-011090] [Server] Data dictionary upgrading from version '80023' to '80300'.
2024-12-10T02:00:56.540159Z 1 [ERROR] [MY-015118] [Server] AUTO_INCREMENT is not supported with DOUBLE/FLOAT field. Please consider fixing (Schema:test, Table:t1, Column:c1).
2024-12-10T02:00:56.543658Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2024-12-10T02:00:56.543692Z 0 [ERROR] [MY-010119] [Server] Aborting
2024-12-10T02:00:57.826621Z 0 [System] [MY-010910] [Server] /opt/mysql/8.4.3/bin/mysqld: Shutdown complete (mysqld 8.4.3) MySQL Community Server - GPL.
2024-12-10T02:00:57.826653Z 0 [System] [MY-015016] [Server] MySQL Server - end.
Moreover, the MySQL Upgrade Checker Utility correctly reports upgrade won't be possible:
$ mysql-shell-8.4.3-linux-glibc2.28-x86-64bit/bin/mysqlsh -- util checkForServerUpgrade root@localhost:29453 --target-version=8.4.3 --config-path=msb_8_0_39/my.sandbox.cnf
9) Checks for errors in column definitions (columnDefinition)
Identifies column definitions that may not be supported in future versions
of MySQL
test.t1.c1 - The column is of type FLOAT and has the AUTO_INCREMENT flag
set, this is no longer supported.
Finally, 8.4.3 documentation on https://dev.mysql.com/doc/refman/8.4/en/numeric-type-attributes.html says the following:
AUTO_INCREMENT is deprecated for FLOAT and DOUBLE columns; you should expect support for it to be removed in a future version of MySQL. Consider removing the AUTO_INCREMENT attribute from such columns to avoid potential compatibility issues, or convert them to an integer type.
Suggested fix:
Please change the documentation, mentioning it's no longer supported, and the upgrade will fail.
Thanks!