2019-10-10 16:30:30 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <Core/Row.h>
|
|
|
|
#include <Core/Block.h>
|
|
|
|
#include <Core/Types.h>
|
|
|
|
#include <Core/NamesAndTypes.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreeIndexGranularity.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreeIndexGranularityInfo.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreeIndices.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreePartInfo.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreePartition.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreeDataPartChecksum.h>
|
|
|
|
#include <Storages/MergeTree/MergeTreeDataPartTTLInfo.h>
|
|
|
|
#include <Storages/MergeTree/KeyCondition.h>
|
|
|
|
#include <Storages/MergeTree/IMergeTreeDataPart.h>
|
|
|
|
#include <Columns/IColumn.h>
|
|
|
|
|
|
|
|
#include <Poco/Path.h>
|
|
|
|
|
|
|
|
#include <shared_mutex>
|
|
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
|
|
|
struct ColumnSize;
|
|
|
|
class MergeTreeData;
|
|
|
|
|
|
|
|
/// Description of the data part.
|
|
|
|
class MergeTreeDataPartWide : public IMergeTreeDataPart
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
using Checksums = MergeTreeDataPartChecksums;
|
|
|
|
using Checksum = MergeTreeDataPartChecksums::Checksum;
|
|
|
|
|
2019-12-19 14:05:26 +00:00
|
|
|
MergeTreeDataPartWide(
|
2019-10-10 16:30:30 +00:00
|
|
|
const MergeTreeData & storage_,
|
|
|
|
const String & name_,
|
|
|
|
const MergeTreePartInfo & info_,
|
2019-12-19 13:10:57 +00:00
|
|
|
const DiskPtr & disk,
|
2019-10-10 16:30:30 +00:00
|
|
|
const std::optional<String> & relative_path = {});
|
|
|
|
|
|
|
|
MergeTreeDataPartWide(
|
|
|
|
MergeTreeData & storage_,
|
|
|
|
const String & name_,
|
2019-12-19 13:10:57 +00:00
|
|
|
const DiskPtr & disk,
|
2019-10-10 16:30:30 +00:00
|
|
|
const std::optional<String> & relative_path = {});
|
|
|
|
|
|
|
|
MergeTreeReaderPtr getReader(
|
|
|
|
const NamesAndTypesList & columns,
|
|
|
|
const MarkRanges & mark_ranges,
|
|
|
|
UncompressedCache * uncompressed_cache,
|
|
|
|
MarkCache * mark_cache,
|
2019-12-18 15:54:45 +00:00
|
|
|
const MergeTreeReaderSettings & reader_settings_,
|
2019-10-10 16:30:30 +00:00
|
|
|
const ValueSizeMap & avg_value_size_hints = ValueSizeMap{},
|
|
|
|
const ReadBufferFromFileBase::ProfileCallback & profile_callback = ReadBufferFromFileBase::ProfileCallback{}) const override;
|
|
|
|
|
2019-10-21 15:33:59 +00:00
|
|
|
MergeTreeWriterPtr getWriter(
|
|
|
|
const NamesAndTypesList & columns_list,
|
2019-11-05 11:53:22 +00:00
|
|
|
const std::vector<MergeTreeIndexPtr> & indices_to_recalc,
|
2019-10-21 15:33:59 +00:00
|
|
|
const CompressionCodecPtr & default_codec_,
|
2019-12-18 15:54:45 +00:00
|
|
|
const MergeTreeWriterSettings & writer_settings,
|
2019-11-05 11:53:22 +00:00
|
|
|
const MergeTreeIndexGranularity & computed_index_granularity = {}) const override;
|
2019-10-21 15:33:59 +00:00
|
|
|
|
2019-10-10 16:30:30 +00:00
|
|
|
bool isStoredOnDisk() const override { return true; }
|
|
|
|
|
|
|
|
bool supportsVerticalMerge() const override { return true; }
|
|
|
|
|
2019-11-18 15:18:50 +00:00
|
|
|
void accumulateColumnSizes(ColumnToSize & column_to_size) const override;
|
|
|
|
|
2019-12-19 13:10:57 +00:00
|
|
|
String getFileNameForColumn(const NameAndTypePair & column) const override;
|
|
|
|
|
2019-12-03 00:23:11 +00:00
|
|
|
ColumnSize getTotalColumnsSize() const override;
|
|
|
|
|
|
|
|
ColumnSize getColumnSize(const String & column_name, const IDataType & type) const override;
|
|
|
|
|
2019-12-16 14:51:19 +00:00
|
|
|
NameToNameMap createRenameMapForAlter(
|
|
|
|
AlterAnalysisResult & analysis_result,
|
|
|
|
const NamesAndTypesList & old_columns) const override;
|
|
|
|
|
2019-11-18 12:22:27 +00:00
|
|
|
~MergeTreeDataPartWide() override;
|
|
|
|
|
2019-12-19 14:05:26 +00:00
|
|
|
bool hasColumnFiles(const String & column, const IDataType & type) const override;
|
2019-12-09 21:21:17 +00:00
|
|
|
|
2019-11-18 15:18:50 +00:00
|
|
|
protected:
|
|
|
|
void checkConsistency(bool require_part_metadata) const override;
|
|
|
|
|
2019-10-10 16:30:30 +00:00
|
|
|
private:
|
|
|
|
/// Loads marks index granularity into memory
|
2019-10-31 14:44:17 +00:00
|
|
|
void loadIndexGranularity() override;
|
2019-10-10 16:30:30 +00:00
|
|
|
|
2019-12-03 00:23:11 +00:00
|
|
|
ColumnSize getColumnSizeImpl(const String & name, const IDataType & type, std::unordered_set<String> * processed_substreams) const;
|
2019-10-10 16:30:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// using MergeTreeDataPartState =IMergeTreeDataPart::State;
|
|
|
|
|
|
|
|
}
|