Create test table:
`CREATE TABLE test (`id` Int32) ENGINE = MySQL('localhost:3306', '', 'test', 'user', 'pass')`

Attempt insert:
`INSERT INTO test VALUES(1)`

CH sending SQL:
`INSERT INTO ``.`test` (`id`) VALUES (1)`

"``." - sending empty database name in generated SQL

However SELECT statement working with empty database name correctrly

P.S.
This can be useful when working with databases such as sphinx
#include "parseRemoteDescription.h"
#include <Common/Exception.h>
#include <IO/WriteHelpers.h>
#include <IO/ReadHelpers.h>
#include <common/logger_useful.h>
namespace DB
{
namespace ErrorCodes
{
    extern const int BAD_ARGUMENTS;
}
static void append(std::vector<String> & to, const std::vector<String> & what, size_t max_addresses)
{
    if (what.empty())
        return;
    if (to.empty())
    {
        to = what;
        return;
    }
    if (what.size() * to.size() > max_addresses)
        throw Exception("Table function 'remote': first argument generates too many result addresses",
                        ErrorCodes::BAD_ARGUMENTS);
    std::vector<String> res;
    for (const auto & elem_to : to)
        for (const auto & elem_what : what)
            res.push_back(elem_to + elem_what);
    to.swap(res);
}
static bool parseNumber(const String & description, size_t l, size_t r, size_t & res)