PrettyBlockOutputStream.h 906 字节
Newer Older
A
Alexey Milovidov 已提交
1 2 3 4
#pragma once

#include <DB/DataStreams/IBlockOutputStream.h>

A
Alexey Milovidov 已提交
5 6
#define PRETTY_FORMAT_DEFAULT_MAX_ROWS 1000

A
Alexey Milovidov 已提交
7 8 9 10 11 12 13 14 15

namespace DB
{

/** Выводит результат в виде красивых таблиц.
  */
class PrettyBlockOutputStream : public IBlockOutputStream
{
public:
A
Alexey Milovidov 已提交
16
	PrettyBlockOutputStream(WriteBuffer & ostr_, size_t max_rows_ = PRETTY_FORMAT_DEFAULT_MAX_ROWS);
A
Alexey Milovidov 已提交
17
	void write(const Block & block);
A
Alexey Milovidov 已提交
18
	void writeSuffix();
A
Alexey Milovidov 已提交
19 20
	BlockOutputStreamPtr clone() { return new PrettyBlockOutputStream(ostr); }

A
Alexey Milovidov 已提交
21 22 23 24 25 26
protected:
	typedef std::vector<size_t> Widths_t;

	/// Вычислить видимую (при выводе на консоль с кодировкой UTF-8) ширину значений и имён столбцов.
	void calculateWidths(Block & block, Widths_t & max_widths, Widths_t & name_widths);
	
A
Alexey Milovidov 已提交
27
	WriteBuffer & ostr;
A
Alexey Milovidov 已提交
28
	size_t max_rows;
A
Alexey Milovidov 已提交
29
	size_t total_rows;
A
Alexey Milovidov 已提交
30
	size_t terminal_width;
A
Alexey Milovidov 已提交
31 32 33
};

}