WL#5185: Remove deprecated 5.1 features

Affects: Server-5.5   —   Status: Complete

This is a task for formally deprecating and removing items that
are mentioned in the 5.1 manual or source as being deprecated, to
make sure that these items really do get removed. Going through
the deprecation process enables us to schedule these items for
removal.

NOTE: 2010-04-16: Feedback was solicited from stakeholders.
NOTE: 2010-05-12: ServerPT approved this set of deprecations.
Warnings are added before MySQL 5.6, removal occurs in 5.6.1
with these exceptions:
* rpl_recovery_rank removed in 5.6.0 by BUG#54649.
* storage_engine can be deprecated only as of 5.5 because
  default_storage_engine did not exist until then. Removal
  will be added as an item for WL#5681.
* FLUSH MASTER, FLUSH slave removed in 5.6.2.
* mysql --safe-updates still used sql_max_join_size (not
  max_join_size) until 5.6.2.

The proposal is to formally deprecate all of these items as
of 5.1 (and then remove them in some future series to be
determined; I suggest Dahlia). So "deprecate" in the following
language implies "and remove in a future series."


--skip-thread-priorities (deprecated in 5.1.29)

PROPOSAL: Deprecate this option. It no longer does anything, so removing it 
should have no impact.

There are several system variables flagged by a TO_BE_DELETED
symbol in sql/set_var.cc. These are all "old" variable names
that now have a newer (preferred) name:

sql_low_priority_updates (low_priority_updates is preferred)
sql_max_join_size        (max_join_size is preferred; see also BUG#50206)
sql_big_tables           (big_tables is preferred)

PROPOSAL: Deprecate the old names.

Several mysqld items to deprecate identified by Serg during work on WL#4738:

"
 -l, --log[=name]    Log connections and queries to file (deprecated option,
                     use --general-log/--general-log-file instead).
 (deprecated in 5.1.29)

 --log-slow-queries[=name] 
                     Log slow queries to a table or log file. Defaults logging
                     to table mysql.slow_log or hostname-slow.log if
                     --log-output=file is used. Must be enabled to activate
                     other slow log options. Deprecated option, use
                     --slow-query-log/--slow-query-log-file instead.
 (deprecated in 5.1.29)

 --one-thread        (deprecated): Only use one thread (for debugging under
                     Linux). Use thread-handling=no-threads instead
 (deprecated in 5.1.17)

 --rpl-recovery-rank=# 
                     Unused, will be removed

and

 @@rpl_recovery_rank
       unused

 @@storage_engine
       use @@default_storage_engine, matching command-line

 @@log
       use @@general_log

 @@log_slow_queries
       use slow_query_log

 @@have_csv, @@have_innodb, @@have_ndbcluster, @@have_partitioning
       use I_S.ENGINES or I_S.PLUGINS instead. We cannot have @@have_
       variable for every engine, they should only be used for features
       like @@have_compress or @@have_geometry (this was ok'ed by support)

 @@table_cache
       use @@table_open_cache
 (deprecated in 5.1.3)
"

PROPOSAL:
Deprecate -l/--log options, log system variable.
Deprecate --log-slow-queries option, log_slow_queries system variable.
Deprecate --one-thread option.
Deprecate --rpl-recovery-rank, rpl_recovery_rank system variable.
Deprecate storage_engine system variable.
Deprecate have_csv, have_innodb, have_ndbcluster, have_partitioning system 
variables.
Deprecate table_cache system variable.

WL#5197 takes the information represented by engine_condition_pushdown and moves 
it to optimizer_switch.

PROPOSAL: Deprecate engine_condition_pushdown.

The manual says for START SLAVE and STOP SLAVE that the older forms SLAVE START 
and SLAVE STOP are accepted for backward compatibility but are deprecated (since 
4.0.5). We should get rid of the older forms.

PROPOSAL: Deprecate SLAVE START and SLAVE STOP.

http://dev.mysql.com/doc/refman/5.1/en/set-option.html says that SET OPTION is 
deprecated in favor of SET (this has been true since at least 4.x). It also says 
"ONE_SHOT is for internal use only and is deprecated for MySQL 5.0 and up."

PROPOSAL: Deprecate SET OPTION (allow only SET without OPTION) and ONE_SHOT.

http://dev.mysql.com/doc/refman/5.1/en/flush.html says this about FLUSH MASTER: 
"MASTER (DEPRECATED). Deletes all binary logs, resets the binary log index file 
and creates a new binary log. FLUSH MASTER is deprecated in favor of RESET 
MASTER, and is supported for backward compatibility only." It also says this 
about FLUSH SLAVE: "SLAVE (DEPRECATED). Resets all replication slave parameters, 
including relay log files and replication position in the master's binary logs. 
FLUSH SLAVE is deprecated in favor of RESET SLAVE, and is supported for backward 
compatibility only."

PROPOSAL: Deprecate FLUSH MASTER, FLUSH SLAVE.

http://dev.mysql.com/doc/refman/5.1/en/create-index.html says this about 
specifying an index type 
(such as BTREE or HASH):
"Examples:

CREATE TABLE lookup (id INT) ENGINE = MEMORY;
CREATE INDEX id_index USING BTREE ON lookup (id);
TYPE type_name is recognized as a synonym for USING type_name. However, USING is 
the preferred form.

Before MySQL 5.1.10, this option can be given only before the ON tbl_name 
clause. Use of the option 
in this position is deprecated as of 5.1.10; support for it is to be dropped in 
a future MySQL 
release. If an index_type option is given in both the earlier and later 
positions, the final option 
applies."

PROPOSAL: Deprecate the USING/TYPE clause for specifying an index type from 
appearing before ON 
tbl_name (that is, allow USING/TYPE only following ON tbl_name).


Update 2010-04-28:
For:
 @@storage_engine
       use @@default_storage_engine, matching command-line

@@default_storage_engine is not implemented until 5.5, so @@storage_engine
cannot be deprecated until 5.5. It cannot be deprecated in 5.1