WL#13950: Deprecate transaction_write_set_extraction

Affects: Server-8.0   —   Status: Complete

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

This worklog deprecates the option transaction_write_set_extraction.
There shall not be any alternative and the writeset shall always
use XXHASH64.

The default of transaction_write_set_extraction is
XXHASH64 already.

Background
==========

This worklog implements a deprecation warning when the user sets
or reads the value of transaction_write_set_extraction.

This WL deprecates the option and warning is logged irrespective of
value set. By default server shall always use XXHASH64.

The default is XXHASH64 as of
WL10477: Defaults: Enable Transaction Write Sets

Rationale
=========

- We want users to use only XXHASH64 going forward.
FR1. Server SHALL emit a warning in the session when configuring
     transaction_write_set_extraction Session or Global or persist
     value in the session (SET GLOBAL transaction_write_set_extraction...)

FR2. Server SHALL emit a warning, at server start time, when
     configuring transaction_write_set_extraction in the server
     configuration file (transaction_write_set_extraction=..)

FR3: Server SHALL emit a warning, at server start time, when passing
     transaction_write_set_extraction as a server start up option on the
     command line.

FR4: Server SHALL emit a warning in the session when reading
     transaction_write_set_extraction Session or Global value in
     the session (SELECT @@GLOBAL.transaction_write_set_extraction...)

FR5: RESET PERSIST transaction_write_set_extraction should not
     generate a warning.
User Visible Changes
====================

- Deprecation Warning in the session when setting
  transaction_write_set_extraction dynamically

The user visible change is that a deprecation warning will be emited
when the user configures transaction_write_set_extraction in the
session irrespective of the value set:

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

  mysql> SHOW WARNINGS\G
  *************************** 1. row ***************************
    Level: Warning
     Code: 1287
  Message: '@@transaction_write_set_extraction' 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
  transaction-write-set-extraction in the server configuration

The user visible change is that a deprecation warning will be emited
when the user configures transaction-write-set-extraction in the config
file and the server is restarted. Example:

2020-08-14T11:05:22.830731Z 0 [Warning] [MY-011069] [Server] The syntax
'--transaction-write-set-extraction' 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 transaction-write-set-extraction
   variable declaration.

2. Deploy conditional calls to push_deprecated_warn in
   mysql_get_one_options, for transaction-write-set-extraction,
   so that the warning is pushed at server start
   time, when the options is set.

3. Add test case validating session, global, persist and server start warnings.