For compound hash tables such as the future StringHashMap, an
iterator-based API might be inefficient for iterating over a table or
for merging two tables, because:
1) the key has to be converted to a general format from a from a
component-specific format, which may differ between the components;
2) the information about the component of the compound hash table to
which the value belongs is lost, and has to be recalculated if the
value is reinserted.
A more efficient approach is to use internal iteration, that is,
map-like functions, which avoids unnecessary conversions when iterating,
and allows to use an efficient component-wise approach when merging.
Use separate key and "mapped" value references instead. This is
important for hash tables that do not store the key/"mapped" pair
directly, and cannot provide this interface without some runtime
overhead.
We don't need it anymore after we changed the hash table key memory
management to use callbacks. Removing this interface is important for
hash maps that do not store the key, such as FixedHashMap or the
prospective compound StringHashMap.
Based on std::list<>::emplace_back() and std::unordered_map<>::emplace()
provide strong exception safety, RWLockImpl is now changed to provide
the same level of exception safety.
* Typo fix.
* DOCAPI-7745: The first version.
* DOCAPI-7745: More text
* DOCAPI-7745: More text.
* Update docs/en/operations/settings/settings.md
Co-Authored-By: Ivan Blinkov <github@blinkov.ru>
* Update docs/en/query_language/misc.md
Co-Authored-By: Ivan Blinkov <github@blinkov.ru>
* DOCAPI-7745: Fixes.
* Fix build
* cmake: fix cpuinfo
* Fix includes after processors merge
Conflicts:
dbms/src/Processors/Formats/Impl/CapnProtoRowInputFormat.cpp
dbms/src/Processors/Formats/Impl/ParquetBlockOutputFormat.cpp
dbms/src/Processors/Formats/Impl/ProtobufRowInputFormat.cpp
dbms/src/Processors/Formats/Impl/ProtobufRowOutputFormat.cpp
* Fix build in gcc8
* fix test link
* fix test link
* Fix test link
* link fix
* Fix includes after processors merge 2
Conflicts:
dbms/src/Processors/Formats/Impl/ParquetBlockInputFormat.cpp
* Fix includes after processors merge 3
* link fix
* Fix likely/unlikely conflict with cython
* Fix conflict with protobuf/stubs/atomicops.h
* remove unlikely.h
* Fix macos build (do not use timer_t)
* wip
* Fix build (orc, ...)
* Missing files
* Try fix
* fix hdfs
* Fix llvm 7.1 find