WL#13057: Removal of the deprecated namespace of Mysqlx.Sql.StmtExecute message
Motivation
Xplugin currently supports three different values for the namespace parameter of
the StmtExecute
X protocol request: 'sql', 'xplugin' and 'mysqlx'.
The goal of the last one was to give the user a more self-descriptive way to encode arguments of admin commands by using key/value pairs. To maintain backwards compatibility the 'xplugin' namespace was kept as is but has been made deprecated. A suitable notice message informs the user about deprecation of this namespace.
Goal
The goal of this worklog is removing the 'xplugin' namespace from
Mysqlx.Sql.StmtExecute
message after 2 years (since 5.7.14) of deprecations.
- FR1
-
Remove namespace
xplugin
from the list of supported namespaces. Thus, thexplugin
namespace becomes an unknown identifier and any administrative commands sent within this namespace will not be handled. If the user continues to use this namespace, they will be notified by a standard error message. - FR2
- Counter of executed administrative commands in the 'xplugin' namespace realized as the 'Mysqlx_stmt_execute_xplugin' session variable is deprecated and its status will not be changed at the time of performing any administrative commands.
- FR3
- Administrative commands assigned to the 'mysqlx' namesspace remain unchanged, and the 'Mysqlx_stmt_execute_mysqlx' variable (the counter of commands executed in this namespace) retains its previous action and state.
Description of the change (in pill)
A user that tries to execute an admin command in "xplugin" namespace must receive the same error as using a non-existing namespace.
Before the change:
client->server: StmtExecute(stmt="ping", namespace="xplugin")
client<-server: Ok
After the change:
client->server: StmtExecute(stmt="ping", namespace="xplugin")
client<-server: Error(ER_X_INVALID_NAMESPACE, "Unknown namespace xplugin")
Protocol
This change does not require any modification of the protocol.
Source code
Stopping support of the 'xplugin' namespace requires removing the part of the source code that handles it. This action is required in order to preserve high enough code coverage for the tests.
MTR tests
The functionality of the administrative commands is accomplished by two
namespaces 'xplugin' and 'mysqlx', and testing them is provided by separate
functional tests. Stopping support for the 'xplugin' namespace requires
removing/modifying those tests that directly use it. In addition, dedicated
tests for the 'mysqlx' namespace may require simplifying the name of the test
file, e.g. admin_bogus_mysqlx.test -> admin_bogus.test
Errors and warnings
This change does not require any additional warnings or error messages. At the same time, it does not change or delete the ones used to service the administrative command mechanism.