#pragma once #include #include namespace DB { /** Столбец, хранящий состояния агрегатных функций. */ class ColumnAggregateFunction : public ColumnVector { public: std::string getName() const { return "ColumnAggregateFunction"; } bool isNumeric() const { return false; } Field operator[](size_t n) const { return data[n]; } void cut(size_t start, size_t length) { if (length == 0 || start + length > data.size()) throw Exception("Parameters start = " + Poco::NumberFormatter::format(start) + ", length = " + Poco::NumberFormatter::format(length) + " are out of bound in IColumnVector::cut() method" " (data.size() = " + Poco::NumberFormatter::format(data.size()) + ").", ErrorCodes::PARAMETER_OUT_OF_BOUND); if (start == 0) data.resize(length); else { Container_t tmp(data.begin() + start, data.begin() + start + length); tmp.swap(data); } } void insert(const Field & x) { data.push_back(boost::get(x)); } int compareAt(size_t n, size_t m, const IColumn & rhs_) const { return 0; } }; }