提交 078f598e 编写于 作者: M Michael Kolupaev

clickhouse: sleep function not sleeping on empty blocks [#CONV-2807].

上级 c5833998
......@@ -409,30 +409,32 @@ public:
{
IColumn * col = &*block.getByPosition(arguments[0]).column;
double seconds;
size_t size;
size_t size = col->size();
if (ColumnConst<Float64> * column = dynamic_cast<ColumnConst<Float64> *>(col))
size = column->size(), seconds = column->getData();
seconds = column->getData();
else if (ColumnConst<Float32> * column = dynamic_cast<ColumnConst<Float32> *>(col))
size = column->size(), seconds = static_cast<double>(column->getData());
seconds = static_cast<double>(column->getData());
else if (ColumnConst<UInt64> * column = dynamic_cast<ColumnConst<UInt64> *>(col))
size = column->size(), seconds = static_cast<double>(column->getData());
seconds = static_cast<double>(column->getData());
else if (ColumnConst<UInt32> * column = dynamic_cast<ColumnConst<UInt32> *>(col))
size = column->size(), seconds = static_cast<double>(column->getData());
seconds = static_cast<double>(column->getData());
else if (ColumnConst<UInt16> * column = dynamic_cast<ColumnConst<UInt16> *>(col))
size = column->size(), seconds = static_cast<double>(column->getData());
seconds = static_cast<double>(column->getData());
else if (ColumnConst<UInt8> * column = dynamic_cast<ColumnConst<UInt8> *>(col))
size = column->size(), seconds = static_cast<double>(column->getData());
seconds = static_cast<double>(column->getData());
else
throw Exception("The argument of function " + getName() + " must be constant.", ErrorCodes::ILLEGAL_COLUMN);
usleep(static_cast<unsigned>(seconds * 1e6));
/// Не спим, если блок пустой.
if (size > 0)
usleep(static_cast<unsigned>(seconds * 1e6));
block.getByPosition(result).column = ColumnConst<UInt8>(size, 0).convertToFullColumn();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册