WL#9457: Deprecate support for non-native partitioning

Affects: Server-5.7   —   Status: Complete

Support for non-native partitioning has been removed in 8.0. This feature must
be deprecated in 5.7.

User Documentation
==================

* http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_disable-partition-engine-check
* http://dev.mysql.com/doc/refman/5.7/en/partitioning.html (initial note)
F0. For the deprecation warning, use error code 'ER_WARN_DEPRECATED_SYNTAX' 
    with the following message:

      "The partition engine, used by table '.', is 
       deprecated and will be removed in a future release. Please
       use native partitioning instead."

F1. Issue a deprecation warning when reading the table definition from file. 
    This will ensure that warnings are issued: 

    1. While executing DML on a non-natively partitioned table, if the table
       definition is not already cached.
    2. While creating a non-natively partitioned table.
    3. While altering a table in a way where the destination table is a
       non-natively partitioned table.

F2. Issue a deprecation warning on CHECK TABLE for a non-natively
    partitioned table, regardless of the table definition being read
    from file or not.

F3. Issue a deprecation warning on SHOW CREATE TABLE for a non-natively
    partitioned table, regardless of the table definition being read
    from file or not.

F4. Issue a deprecation warning when executing I_S queries doing SELECT from
    INFORMATION_SCHEMA.TABLES, provided the query will read the table 
    definition. Thus, a query such as 'SELECT TABLE_NAME FROM 
    INFORMATION_SCHEMA.TABLES' will not return warnings since it is executed 
    without reading the table definitions. On the other hand, queries such as 
    'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE CREATE_OPTIONS LIKE 
    '%partitioned%'' will return warnings since the table definitions are read.

F5. Execute an I_S query reading table definitions at server start to scan for 
    non-natively partitioned tables. Write a warning in the error log for every 
    non-natively partitioned table.

F6. Introduce a command line option '--disable-partition-engine-check' for the 
    MySQL server to be used use for skipping the execution of the I_S query in
    F6 during server start. This does not affect the deprecation warnings 
    issued in F1 - F4.
1. Warn when opening the .FRM file of a table.

This will make sure we get warnings on DDL statements. However, this will also
limit the amount of warnings fro DML if the table definition is already present
in the cache.

2. Run an I_S query during server restart.

Write the warning in 1. above in a way that logs a warning to the error log if
the server is not fully started.

3. Extend the bootstrap infrastructure to run a single query.

Needed to support item 2. above.

4. Suppress the warning from 1. for I_S queries, SHOW CREATE and CHECK.

Instead, push a warning explicitly. Done to get repeatable results.

5. Add the command line option described in F6.