WL#13958: Deprecate relay_log_info_repository and master_info_repository

Affects: Server-8.0   —   Status: Complete

EXECUTIVE SUMMARY
=================

This worklog deprecates the option relay_log_info_repository and
master_info_repository. There shall not be any alternative and the
replication configuration and metadata shall always
be stored in a transactional (InnoDB based) system table.

The default of relay_log_info_repository and
master_info_repository is TABLE already.

Background
==========

This worklog implements a deprecation warning when the user sets
or reads the value of relay_log_info_repository or master_info_repository

WL#6959 has deprecated the use of these two options when set to FILE
(master_info_repository=FILE and relay_log_info_repository=FILE). This
WL deprecates the two options and warning is logged irrespective of value
set. By default server shall always use TABLE repositories.

The default is TABLE as of
WL#10474: Defaults: Store Replication Metadata In InnoDB

WL#11031  deprecated the use of --relay-log-info-file and
--master-info-file

Rationale
=========

- We want users to use only TABLE repository going forward, since it is
  transactional.

- New features require TABLE repositories (Multisource, GR).

- We want replication to be safe and not use MyISAM tables or depend
  on external files as much as possible.

- The default is to store replication metadata in InnoDB tables
  already in MySQL 8.
FR1. server SHALL emit a warning in the session when configuring
     relay-log-info-repository in the session (SET GLOBAL
     relay_log...)

FR2. server SHALL emit a warning, at server start time, when
     configuring relay-log-info-repository in the server
     configuration file (relay_log_info_repository=..)

FR3. server SHALL emit a warning in the session when configuring
     master-info-repository in the session (SET GLOBAL
     master_info...)

FR4. server SHALL emit a warning, at server start time, when
     configuring master-info-repository in the server
     configuration file (master_info_repository=..)
User Visible Changes
====================

- Deprecation Warning in the session when setting
  relay-log-info-repository dynamically

The user visible change is that a deprecation warning will be emited
when the user configures relay-log-info-repository in the
session irrespective of the value set:

  mysql> SET GLOBAL relay_log_info_repository=TABLE;
  Query OK, 0 rows affected, 1 warning (0,00 sec)

  mysql> SHOW WARNINGS\G
  *************************** 1. row ***************************
    Level: Warning
     Code: 1287
  Message: '@@relay_log_info_repository' is deprecated and will be removed in a 
future release.
  1 row in set (0.01 sec)

- Deprecation Warning in the error log when setting
  relay-log-info-repository in the server configuration

The user visible change is that a deprecation warning will be emited
when the user configures relay-log-info-repository in the config file
and the server is restarted. Example:

2020-08-14T11:05:22.830731Z 0 [Warning] [MY-011069] [Server] The syntax
'--relay-log-info-repository' is deprecated and will be removed in a
future release.

- Deprecation Warning in the session when setting
  master-info-repository dynamically

The user visible change is that a deprecation warning will be emited
when the user configures relay-log-info-repository=FILE in the
session:

  mysql> SET GLOBAL master_info_repository=TABLE;
  Query OK, 0 rows affected, 1 warning (0,00 sec)

  mysql> SHOW WARNINGS\G
  *************************** 1. row ***************************
    Level: Warning
     Code: 1287
  Message: '@@master_info_repository' is deprecated and will be removed in a 
future release.
  1 row in set (0.00 sec)

- Deprecation Warning in the error log when setting
  relay-log-info-repository in the server configuration

The user visible change is that a deprecation warning will be emited
when the user configures master-info-repository in the config file and
the server is restarted. Example:

2020-08-14T10:58:53.283596Z 0 [Warning] [MY-011069] [Server] The syntax
'--master-info-repository' is deprecated and will be removed in a
future release.

Upgrades
========

After using MySQL 8, the user will get the deprecation warnings as
described in the previous section.  This however, shall not break
backwards compatibility.

Security
========

There are no security considerations.

Observability
=============

There are no observability considerations. There is no new
functionality added only a new warning is emited.
LOW LEVEL CHANGES
=================

1. Deploy DEPRECATED_VAR("") in the master-info-repository and
   relay-log-info-repository variable declaration.

2. Deploy conditional calls to push_deprecated_warn in
   mysql_get_one_options, for both relay_log_info_file and
   master_info_file, so that the warning is pushed at server start
   time, when the options is set.

3. Add test case validating session and server start warnings.