ClickHouse/dbms/include/DB/DataStreams/FilterBlockInputStream.h

35 lines
1.0 KiB
C
Raw Normal View History

2011-08-22 20:37:21 +00:00
#pragma once
#include <Poco/SharedPtr.h>
2011-09-04 21:23:19 +00:00
#include <DB/DataStreams/IProfilingBlockInputStream.h>
2011-08-22 20:37:21 +00:00
namespace DB
{
using Poco::SharedPtr;
/** Реализует операции WHERE, HAVING.
* На вход подаётся поток блоков, в котором в одном из столбцов типа ColumnUInt8 содержатся условия фильтрации.
2011-08-28 05:13:24 +00:00
* Возвращается поток блоков, в котором содержатся только отфильтрованные строки.
2011-08-22 20:37:21 +00:00
*/
2011-09-04 21:23:19 +00:00
class FilterBlockInputStream : public IProfilingBlockInputStream
2011-08-22 20:37:21 +00:00
{
public:
2011-08-28 05:13:24 +00:00
/// filter_column_ - номер столбца с условиями фильтрации. -1 - последний столбец
FilterBlockInputStream(BlockInputStreamPtr input_, ssize_t filter_column_ = -1);
2011-09-04 21:23:19 +00:00
Block readImpl();
String getName() const { return "FilterBlockInputStream"; }
2011-08-22 20:37:21 +00:00
2011-10-24 12:10:59 +00:00
BlockInputStreamPtr clone() { return new FilterBlockInputStream(input, filter_column); }
2011-08-22 20:37:21 +00:00
private:
2011-08-28 02:22:23 +00:00
BlockInputStreamPtr input;
2011-08-28 05:13:24 +00:00
ssize_t filter_column;
2011-08-22 20:37:21 +00:00
};
}