提交 aa434e68 编写于 作者: A Alexey Milovidov

dbms: fixed error with higher-order functions [#CONV-8757].

上级 2d48435e
#pragma once
#include <DB/Columns/IColumnDummy.h>
namespace DB
{
/** Содержит промежуточные данные для вычисления выражений в функциях высшего порядка.
* Это - вложенный столбец произвольного размера.
* Сам ColumnReplicated притворяется, как столбец указанного в конструкторе размера.
*/
class ColumnReplicated : public IColumnDummy
{
public:
ColumnReplicated(size_t s_, ColumnPtr nested_) : IColumnDummy(s_), nested(nested_) {}
std::string getName() const { return "ColumnReplicated"; }
ColumnPtr cloneDummy(size_t s_) const { return new ColumnReplicated(s_, nested); }
ColumnPtr & getData() { return nested; }
private:
ColumnPtr nested;
};
}
......@@ -5,6 +5,7 @@
#include <DB/DataTypes/DataTypesNumberFixed.h>
#include <DB/Columns/ColumnArray.h>
#include <DB/Columns/ColumnReplicated.h>
#include <DB/Columns/ColumnExpression.h>
#include <DB/Functions/IFunction.h>
......@@ -485,6 +486,7 @@ public:
ColumnWithNameAndType replicated_column = block.getByPosition(prerequisites[prerequisite_index]);
replicated_column.name = name;
replicated_column.column = dynamic_cast<ColumnReplicated &>(*replicated_column.column).getData();
temp_block.insert(replicated_column);
++prerequisite_index;
......
......@@ -17,6 +17,7 @@
#include <DB/Columns/ColumnSet.h>
#include <DB/Columns/ColumnTuple.h>
#include <DB/Columns/ColumnArray.h>
#include <DB/Columns/ColumnReplicated.h>
#include <DB/Functions/IFunction.h>
......@@ -723,8 +724,8 @@ class FunctionReplicate : public IFunction
temp_column = const_array_column->convertToFullColumn();
array_column = dynamic_cast<ColumnArray *>(&*temp_column);
}
block.getByPosition(result).column = first_column->replicate(array_column->getOffsets());
block.getByPosition(result).column = new ColumnReplicated(first_column->size(), first_column->replicate(array_column->getOffsets()));
}
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册