ClickHouse/dbms/include/DB/DataStreams/PrettyBlockOutputStream.h
2017-04-01 11:35:09 +03:00

53 lines
1.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <DB/Core/Block.h>
#include <DB/DataStreams/IBlockOutputStream.h>
namespace DB
{
class WriteBuffer;
class Context;
/** Выводит результат в виде красивых таблиц.
*/
class PrettyBlockOutputStream : public IBlockOutputStream
{
public:
/// no_escapes - не использовать ANSI escape sequences - для отображения в браузере, а не в консоли.
PrettyBlockOutputStream(WriteBuffer & ostr_, bool no_escapes_, size_t max_rows_, const Context & context_);
void write(const Block & block) override;
void writeSuffix() override;
void flush() override;
void setTotals(const Block & totals_) override { totals = totals_; }
void setExtremes(const Block & extremes_) override { extremes = extremes_; }
protected:
void writeTotals();
void writeExtremes();
using Widths_t = std::vector<size_t>;
/// Вычислить видимую (при выводе на консоль с кодировкой UTF-8) ширину значений и имён столбцов.
void calculateWidths(Block & block, Widths_t & max_widths, Widths_t & name_widths);
WriteBuffer & ostr;
size_t max_rows;
size_t total_rows = 0;
size_t terminal_width = 0;
bool no_escapes;
Block totals;
Block extremes;
const Context & context;
};
}