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, 2025, Oracle Corporation and/or its affiliates. All rights reserved.