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
{
        const auto & table_name_col = *block.getByPosition(0).column;
        const auto & column_name_col = *block.getByPosition(1).column;
        const auto & column_type_col = *block.getByPosition(2).column;
        const auto & is_nullable_col = *block.getByPosition(3).column;
        const auto & is_unsigned_col = *block.getByPosition(4).column;
        const auto & char_max_length_col = *block.getByPosition(5).column;
        const auto & precision_col = *block.getByPosition(6).column;
        const auto & scale_col = *block.getByPosition(7).column;
        size_t rows = block.rows();
        for (size_t i = 0; i < rows; ++i)
        {
            String table_name = table_name_col[i].safeGet<String>();
            tables_and_columns[table_name].emplace_back(
                    column_name_col[i].safeGet<String>(),
                    convertMySQLDataType(
                            type_support,
                            column_type_col[i].safeGet<String>(),
                            settings.external_table_functions_use_nulls && is_nullable_col[i].safeGet<UInt64>(),
                            is_unsigned_col[i].safeGet<UInt64>(),
                            char_max_length_col[i].safeGet<UInt64>(),
                            precision_col[i].safeGet<UInt64>(),
                            scale_col[i].safeGet<UInt64>()));
        }
    }
    return tables_and_columns;
}
}
#endif