Better exception message [#CLICKHOUSE-4143]

This commit is contained in:
Alexey Milovidov 2018-11-19 15:31:26 +03:00
parent f6207377c4
commit 2f3b4ba851

View File

@ -177,7 +177,7 @@ void DataTypeString::deserializeBinaryBulk(IColumn & column, ReadBuffer & istr,
ColumnString::Chars_t & data = column_string.getChars();
ColumnString::Offsets & offsets = column_string.getOffsets();
double avg_chars_size;
double avg_chars_size = 1; /// By default reserve only for empty strings.
if (avg_value_size_hint && avg_value_size_hint > sizeof(offsets[0]))
{
@ -186,13 +186,19 @@ void DataTypeString::deserializeBinaryBulk(IColumn & column, ReadBuffer & istr,
avg_chars_size = (avg_value_size_hint - sizeof(offsets[0])) * avg_value_size_hint_reserve_multiplier;
}
else
{
/// By default reserve only for empty strings.
avg_chars_size = 1;
}
data.reserve(data.size() + std::ceil(limit * avg_chars_size));
try
{
data.reserve(data.size() + std::ceil(limit * avg_chars_size));
}
catch (Exception & e)
{
e.addMessage(
"avg_value_size_hint = " + toString(avg_value_size_hint)
+ ", avg_chars_size = " + toString(avg_chars_size)
+ ", limit = " + toString(limit));
throw;
}
offsets.reserve(offsets.size() + limit);