**Use case**

For symmetry reasons, because it is already supported for input.

**Describe the solution you'd like**

The same as `TSVRaw`.
{
    writeChar('\n', out);
}
void TabSeparatedRowOutputFormat::writeBeforeExtremes()
{
    writeChar('\n', out);
}
void registerOutputFormatTabSeparated(FormatFactory & factory)
{
    for (bool is_raw : {false, true})
    {
        auto register_func = [&](const String & format_name, bool with_names, bool with_types)
        {
            factory.registerOutputFormat(format_name, [is_raw, with_names, with_types](
                WriteBuffer & buf,
                const Block & sample,
                const RowOutputFormatParams & params,
                const FormatSettings & settings)
            {
                return std::make_shared<TabSeparatedRowOutputFormat>(buf, sample, with_names, with_types, is_raw, params, settings);
            });
            factory.markOutputFormatSupportsParallelFormatting(format_name);
        };
        registerWithNamesAndTypes(is_raw ? "TSVRaw" : "TSV", register_func);
        registerWithNamesAndTypes(is_raw ? "TabSeparatedRaw" : "TabSeparated", register_func);
    }
}
}