WL#8971: Deprecate and remove partitioning storage engine
Affects: Server-8.0 — Status: Complete
This WL is about deprecation (5.7) and removal (5.8) of the partitioning storage engine (ha_partition). After this WL, partitioning will only be available for storage engines that support this natively.
Requirements within the scope of this WL, to be implemented and pushed to mysql-trunk: F1. Remove source code of the partitioning engine. Remove cmake option 'WITH_PARTITION_STORAGE_ENGINE'. Remove 'PARTITION' as a known engine. The '--skip-partition' command line option will also be disabled. F2. Introduce errors and error handling when trying to create a table in an engine not supporting partitioning natively. F3. Remove test primitives related to non-native partitioning (have_partition.inc). F4. Remove tests applicable to non-native partitioning. Rewrite partitioning tests from using non-native partitioning to use native partitioning instead. F5. Keep the entry 'DB_TYPE_PARTITION_DB' in the enum legacy_db_type. This value will not be used in 8.0 and onwards, but was used in 5.7, and is needed for upgrade from 5.7 to work as intended; i.e., the enum values must not be disturbed (see also F8). The predicate 'is_ha_partition_handlerton()' shall be removed, and its usage modified (see F2). F6. Build with NDB storage engine to verify that MySQL Cluster builds are not broken by this WL. Also ask Cluster devs to verify that this WL will not be problematic for them. Requirements within the scope of this WL, to be pushed as a separate patch to mysql-5.7: F7. Deprecate usage of non-native partitioning in 5.7. This essentially means to adapt F2 but to return a deprecation warning rather than an error. Additionally, tests in 5.7 must be updated to handle the deprecation warning. We also need to decide whether the deprecation warning should be promoted to error when running in strict mode. Requirements outside the scope of this WL: F8. Reject upgrade to MySQL 8.0 when tables using non-native partitioning are present. (see also F5). F9. Rewrite and extend innodb native partitioning to use SE specific code for partition handling rather than common code at the SQL layer. F10. Remove dead code at the SQL layer after F8 is implemented. This will be done as separate followup patches or bug fixes pushed to mysql-trunk.* F11. Update test infrastructure (not on mysql-trunk) to handle the removal of the partitioning engine. This will probably involve System QA tests and RQG.
Interfaces affected: * SQL syntax/semantics: Partition related DDL statements will now fail for engines not supporting native partitioning. * Errors and warnings: The SQL statements mentioned above will fail, but with an already existing error code 'ER_CHECK_NOT_IMPLEMENTED'. * Plugins/APIs: The partition engine will have its source code removed, and will consequently not be built.
Copyright (c) 2000, 2020, Oracle Corporation and/or its affiliates. All rights reserved.