Using maximum one connection to external source when updating cache dictionary [#METR-19576].

This commit is contained in:
Alexey Milovidov 2016-03-30 22:03:25 +03:00
parent a2e7b7c904
commit 2a5f86b890
2 changed files with 6 additions and 6 deletions

View File

@ -577,9 +577,6 @@ private:
const std::vector<id_t> & requested_ids, PresentIdHandler && on_cell_updated,
AbsentIdHandler && on_id_not_found) const
{
auto stream = source_ptr->loadIds(requested_ids);
stream->readPrefix();
MapType<UInt8> remaining_ids{requested_ids.size()};
for (const auto id : requested_ids)
remaining_ids.insert({ id, 0 });
@ -591,6 +588,9 @@ private:
const Poco::ScopedWriteRWLock write_lock{rw_lock};
auto stream = source_ptr->loadIds(requested_ids);
stream->readPrefix();
while (const auto block = stream->read())
{
const auto id_column = typeid_cast<const ColumnVector<UInt64> *>(block.getByPosition(0).column.get());

View File

@ -614,9 +614,6 @@ private:
const std::vector<std::size_t> & in_requested_rows, PresentKeyHandler && on_cell_updated,
AbsentKeyHandler && on_key_not_found) const
{
auto stream = source_ptr->loadKeys(in_key_columns, in_requested_rows);
stream->readPrefix();
MapType<bool> remaining_keys{in_requested_rows.size()};
for (const auto row : in_requested_rows)
remaining_keys.insert({ in_keys[row], false });
@ -628,6 +625,9 @@ private:
const Poco::ScopedWriteRWLock write_lock{rw_lock};
auto stream = source_ptr->loadKeys(in_key_columns, in_requested_rows);
stream->readPrefix();
const auto keys_size = dict_struct.key.value().size();
StringRefs keys(keys_size);