**Use case**

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

**Describe the solution you'd like**

The same as `TSVRaw`.
{
    const auto & header = getPort(PortKind::Main).getHeader();
    if (with_names)
        writeLine(header.getNames());
    if (with_types)
        writeLine(header.getDataTypeNames());
}
void TabSeparatedRowOutputFormat::writeField(const IColumn & column, const ISerialization & serialization, size_t row_num)
{
    if (is_raw)
        serialization.serializeTextRaw(column, row_num, out, format_settings);
    else
        serialization.serializeTextEscaped(column, row_num, out, format_settings);
}
void TabSeparatedRowOutputFormat::writeFieldDelimiter()
{
    writeChar('\t', out);
}
void TabSeparatedRowOutputFormat::writeRowEndDelimiter()
{
    if (format_settings.tsv.crlf_end_of_line)
        writeChar('\r', out);
    writeChar('\n', out);
}
void TabSeparatedRowOutputFormat::writeBeforeTotals()