提交 327f527d 编写于 作者: A Alexey Milovidov

ColumnFunction: better code (incomplete)

上级 712d094a
#include <Interpreters/ExpressionActions.h>
#include <Columns/ColumnFunction.h>
#include <Columns/ColumnsCommon.h>
#include <Columns/ColumnTuple.h>
#include <IO/WriteHelpers.h>
#include <Functions/IFunction.h>
......
......@@ -4,6 +4,7 @@
#include <Core/ColumnsWithTypeAndName.h>
#include <Columns/IColumn.h>
class IFunctionBase;
using FunctionBasePtr = std::shared_ptr<IFunctionBase>;
......@@ -107,10 +108,24 @@ public:
throw Exception("Method gather is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
}
void forEachSubcolumn(ColumnCallback callback) override
{
callback(captured_columns);
}
bool structureEquals(const IColumn & rhs) const override
{
if (auto rhs_concrete = typeid_cast<const ColumnFunction *>(&rhs))
return captured_columns->structureEquals(*rhs_concrete->captured_columns)
&& function->getName() == rhs_concrete->function->getName();
return false;
}
private:
size_t size_;
FunctionBasePtr function;
ColumnsWithTypeAndName captured_columns;
WrappedPtr captured_columns; /// ColumnTuple
DataTypes captured_types;
void appendArgument(const ColumnWithTypeAndName & column);
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册