Depending on mysql-server and mysql-client packages

All packages that at the moment depend directly on mysql-server or mysql-client should instead have something like:

 Depends: mariadb-client | virtual-mysql-client

(or Suggests or Recommends)

since late 2013, all variants x-server (Oracle MySQL, MariaDB, Percona) have hade provides like this:

 Provides: virtual-mysql-server

and x-client packages have

 Provides: virtual-mysql-client

(Side note: Drizzle is a MySQL fork but is not an drop-in-replacement and thus does not have this provides.)

As of March 2016 the Debian release team decided, that in Debian the default database option should be MariaDB. The primary dependency should therefore be on the MariaDB package but the virtual-mysql-x should be kept as alternative dependency to satisfy installation of other variants is users explicitly want so.

Switching in/out MySQL alternatives

The virtual-mysql-* approach is also used for switching in/out alternative MySQL implementations.

Each binary package should declare (for example):

Provides: virtual-mysql-server
Breaks: virtual-mysql-server, ...
Replaces: virtual-mysql-server, ...

Currently recognised virtual-mysql-* packages are:

virtual-mysql-client-core
virtual-mysql-client
virtual-mysql-server-core
virtual-mysql-server
virtual-mysql-testsuite

It is acceptable for a package to Provide/Break/Replace multiple virtual-mysql-*'s; not all packages have exactly the same binary package structure.