MCPcopy Create free account
hub / github.com/ByConity/ByConity / ReadFromMergeTree

Method ReadFromMergeTree

src/QueryPlan/ReadFromMergeTree.cpp:259–323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

257}
258
259ReadFromMergeTree::ReadFromMergeTree(
260 MergeTreeMetaBase::DataPartsVector parts_,
261 MergeTreeMetaBase::DeleteBitmapGetter delete_bitmap_getter_,
262 Names real_column_names_,
263 Names virt_column_names_,
264 const MergeTreeMetaBase & data_,
265 const SelectQueryInfo & query_info_,
266 StorageSnapshotPtr storage_snapshot_,
267 ContextPtr context_,
268 size_t max_block_size_,
269 size_t num_streams_,
270 bool sample_factor_column_queried_,
271 bool map_column_keys_column_queried_,
272 std::shared_ptr<PartitionIdToMaxBlock> max_block_numbers_to_read_,
273 Poco::Logger * log_,
274 MergeTreeDataSelectAnalysisResultPtr analyzed_result_ptr_)
275 : ISourceStep(DataStream{
276 .header = query_info_.atomic_predicates.empty()
277 ? MergeTreeBaseSelectProcessor::transformHeader(
278 storage_snapshot_->getSampleBlockForColumns(real_column_names_),
279 getPrewhereInfo(query_info_),
280 data_.getPartitionValueType(),
281 virt_column_names_,
282 getIndexContext(query_info_), query_info_.read_bitmap_index)
283 : MergeTreeBaseSelectProcessorLM::transformHeader(
284 storage_snapshot_->getSampleBlockForColumns(real_column_names_),
285 query_info_,
286 data_.getPartitionValueType(),
287 virt_column_names_)})
288 , reader_settings(getMergeTreeReaderSettings(context_, data_))
289 , prepared_parts(std::move(parts_))
290 , delete_bitmap_getter(std::move(delete_bitmap_getter_))
291 , real_column_names(std::move(real_column_names_))
292 , virt_column_names(std::move(virt_column_names_))
293 , data(data_)
294 , query_info(query_info_)
295 , prewhere_info(getPrewhereInfo(query_info))
296 , actions_settings(ExpressionActionsSettings::fromContext(context_))
297 , storage_snapshot(std::move(storage_snapshot_))
298 , metadata_for_reading(storage_snapshot->getMetadataForQuery())
299 , context(std::move(context_))
300 , max_block_size(max_block_size_)
301 , requested_num_streams(num_streams_)
302 , preferred_block_size_bytes(context->getSettingsRef().preferred_block_size_bytes)
303 , preferred_max_column_in_block_size_bytes(context->getSettingsRef().preferred_max_column_in_block_size_bytes)
304 , sample_factor_column_queried(sample_factor_column_queried_)
305 , map_column_keys_column_queried(map_column_keys_column_queried_)
306 , max_block_numbers_to_read(std::move(max_block_numbers_to_read_))
307 , log(log_), analyzed_result_ptr(analyzed_result_ptr_)
308{
309 if (sample_factor_column_queried)
310 {
311 /// Only _sample_factor virtual column is added by ReadFromMergeTree
312 /// Other virtual columns are added by MergeTreeBaseSelectProcessor.
313 auto type = std::make_shared<DataTypeFloat64>();
314 output_stream->header.insert({type->createColumn(), type, "_sample_factor"});
315 }
316

Callers

nothing calls this directly

Calls 8

getIndexContextFunction · 0.85
getPartitionValueTypeMethod · 0.80
getMetadataForQueryMethod · 0.80
emptyMethod · 0.45
insertMethod · 0.45
createColumnMethod · 0.45

Tested by

no test coverage detected