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

This commit is contained in:
Michael Kolupaev 2013-06-10 13:42:05 +00:00
parent c58339984b
commit 078f598ea0

View File

@ -409,29 +409,31 @@ 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);
/// Не спим, если блок пустой.
if (size > 0)
usleep(static_cast<unsigned>(seconds * 1e6));
block.getByPosition(result).column = ColumnConst<UInt8>(size, 0).convertToFullColumn();