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

Method MergeTreeReaderWide

src/Storages/MergeTree/MergeTreeReaderWide.cpp:58–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56}
57
58MergeTreeReaderWide::MergeTreeReaderWide(
59 MergeTreeMetaBase::DataPartPtr data_part_,
60 NamesAndTypesList columns_,
61 const StorageMetadataPtr & metadata_snapshot_,
62 UncompressedCache * uncompressed_cache_,
63 MarkCache * mark_cache_,
64 MarkRanges mark_ranges_,
65 MergeTreeReaderSettings settings_,
66 MergeTreeIndexExecutor * index_executor_,
67 IMergeTreeDataPart::ValueSizeMap avg_value_size_hints_,
68 const ReadBufferFromFileBase::ProfileCallback & profile_callback_,
69 clockid_t clock_type_,
70 bool create_streams_)
71 : IMergeTreeReader(
72 std::move(data_part_),
73 std::move(columns_),
74 metadata_snapshot_,
75 uncompressed_cache_,
76 std::move(mark_cache_),
77 std::move(mark_ranges_),
78 std::move(settings_),
79 std::move(avg_value_size_hints_),
80 index_executor_)
81{
82 if (!create_streams_)
83 {
84 return;
85 }
86
87 try
88 {
89 for (const NameAndTypePair & column : columns)
90 {
91 auto column_from_part = getColumnFromPart(column);
92 if (column_from_part.type->isByteMap())
93 {
94 // Scan the directory to get all implicit columns(stream) for the map type
95 const DataTypeMap & type_map = typeid_cast<const DataTypeMap &>(*column_from_part.type);
96
97 String key_name;
98 String impl_key_name;
99 {
100 for (auto & file : data_part->getChecksums()->files)
101 {
102 // Try to get keys, and form the stream, its bin file name looks like "NAME__xxxxx.bin"
103 const String & file_name = file.first;
104 if (isMapImplicitDataFileNameNotBaseOfSpecialMapName(file_name, column.name))
105 {
106 key_name = parseKeyNameFromImplicitFileName(file_name, column.name);
107 impl_key_name = getImplicitColNameForMapKey(column.name, key_name);
108 // Special handing if implicit key is referenced too
109 if (columns.contains(impl_key_name))
110 {
111 dup_implicit_keys.insert(impl_key_name);
112 }
113
114 addByteMapStreams(
115 {impl_key_name, type_map.getValueTypeForImplicitColumn()}, column.name, profile_callback_, clock_type_);

Callers

nothing calls this directly

Calls 13

isMapImplicitKeyFunction · 0.85
getChecksumsMethod · 0.80
reportBrokenPartMethod · 0.80
isByteMapMethod · 0.45
containsMethod · 0.45
insertMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected