26 namespace foreign_storage {
29 const std::map<
ChunkKey, std::shared_ptr<ChunkMetadata>>& chunk_metadata_map,
30 const std::map<ChunkKey, AbstractBuffer*>& buffers,
43 const size_t items_per_thread = (items.size() + (max_threads - 1)) / max_threads;
44 std::list<std::set<T>> items_by_thread;
46 for (
auto item : items) {
47 if (i++ % items_per_thread == 0) {
48 items_by_thread.emplace_back(std::set<T>{});
50 items_by_thread.back().emplace(item);
52 return items_by_thread;
62 const size_t items_per_thread = (items.size() + (max_threads - 1)) / max_threads;
63 std::list<std::vector<T>> items_by_thread;
65 for (
auto item : items) {
66 if (i++ % items_per_thread == 0) {
67 items_by_thread.emplace_back(std::vector<T>{});
69 items_by_thread.back().emplace_back(item);
71 return items_by_thread;
74 template <
typename Container>
76 const Container& items,
78 std::function<
void(
const Container&)> lambda) {
80 std::vector<std::future<void>> futures;
81 for (
const auto& items : items_per_thread) {
std::vector< int > ChunkKey
bool is_system_table_chunk_key(const ChunkKey &chunk_key)
auto partition_for_threads(const std::set< T > &items, size_t max_threads)
bool is_append_table_chunk_key(const ChunkKey &chunk_key)
bool is_replicated_table_chunk_key(const ChunkKey &chunk_key)
bool key_does_not_shard_to_leaf(const ChunkKey &key)
future< Result > async(Fn &&fn, Args &&...args)
std::vector< std::future< void > > create_futures_for_workers(const Container &items, size_t max_threads, std::function< void(const Container &)> lambda)
std::shared_ptr< ChunkMetadata > get_placeholder_metadata(const ColumnDescriptor *column, size_t num_elements)
void init_chunk_for_column(const ChunkKey &chunk_key, const std::map< ChunkKey, std::shared_ptr< ChunkMetadata >> &chunk_metadata_map, const std::map< ChunkKey, AbstractBuffer * > &buffers, Chunk_NS::Chunk &chunk)
specifies the content in-memory of a row in the column metadata table
bool fragment_maps_to_leaf(const ChunkKey &key)
bool is_shardable_key(const ChunkKey &key)
const foreign_storage::ForeignTable & get_foreign_table_for_key(const ChunkKey &key)