mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 01:22:04 +00:00
dbms: fix quantileDeterministic (no hash was saved with samples) [#METR-13932]
This commit is contained in:
parent
540c411aa8
commit
61988e6a37
@ -67,6 +67,7 @@ public:
|
|||||||
|
|
||||||
void insertImpl(const T & v, const UInt32 hash)
|
void insertImpl(const T & v, const UInt32 hash)
|
||||||
{
|
{
|
||||||
|
/// @todo why + 1? I don't quite recall
|
||||||
while (samples.size() + 1 >= sample_count)
|
while (samples.size() + 1 >= sample_count)
|
||||||
{
|
{
|
||||||
if (++skip_degree > detail::MAX_SKIP_DEGREE)
|
if (++skip_degree > detail::MAX_SKIP_DEGREE)
|
||||||
@ -119,6 +120,7 @@ public:
|
|||||||
|
|
||||||
/** Если T не числовой тип, использование этого метода вызывает ошибку компиляции,
|
/** Если T не числовой тип, использование этого метода вызывает ошибку компиляции,
|
||||||
* но использование класса ошибки не вызывает. SFINAE.
|
* но использование класса ошибки не вызывает. SFINAE.
|
||||||
|
* Не SFINAE. Функции члены шаблонов типов просто не проверяются, пока не используются.
|
||||||
*/
|
*/
|
||||||
double quantileInterpolated(double level)
|
double quantileInterpolated(double level)
|
||||||
{
|
{
|
||||||
@ -153,9 +155,9 @@ public:
|
|||||||
thinOut();
|
thinOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < b.samples.size(); ++i)
|
for (const auto & sample : b.samples)
|
||||||
if (good(b.samples[i].second))
|
if (good(sample.second))
|
||||||
insertImpl(b.samples[i].first, b.samples[i].second);
|
insertImpl(sample.first, sample.second);
|
||||||
|
|
||||||
total_values += b.total_values;
|
total_values += b.total_values;
|
||||||
}
|
}
|
||||||
@ -167,7 +169,7 @@ public:
|
|||||||
samples.resize(std::min(total_values, sample_count));
|
samples.resize(std::min(total_values, sample_count));
|
||||||
|
|
||||||
for (size_t i = 0; i < samples.size(); ++i)
|
for (size_t i = 0; i < samples.size(); ++i)
|
||||||
DB::readBinary(samples[i].first, buf);
|
DB::readPODBinary(samples[i], buf);
|
||||||
|
|
||||||
sorted = false;
|
sorted = false;
|
||||||
}
|
}
|
||||||
@ -178,7 +180,7 @@ public:
|
|||||||
DB::writeIntBinary<size_t>(total_values, buf);
|
DB::writeIntBinary<size_t>(total_values, buf);
|
||||||
|
|
||||||
for (size_t i = 0; i < std::min(sample_count, total_values); ++i)
|
for (size_t i = 0; i < std::min(sample_count, total_values); ++i)
|
||||||
DB::writeBinary(samples[i].first, buf);
|
DB::writePODBinary(samples[i], buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user