removed indexpart class

This commit is contained in:
Nikita Vasilev 2019-01-04 18:54:34 +03:00
parent 92a850ceb0
commit f92750223f
5 changed files with 8 additions and 39 deletions

View File

@ -1039,7 +1039,6 @@ MergeTreeData::MutableDataPartPtr MergeTreeDataMergerMutator::mutatePartToTempor
new_data_part->index = source_part->index; new_data_part->index = source_part->index;
new_data_part->partition.assign(source_part->partition); new_data_part->partition.assign(source_part->partition);
new_data_part->minmax_idx = source_part->minmax_idx; new_data_part->minmax_idx = source_part->minmax_idx;
new_data_part->index_parts = source_part->index_parts;
new_data_part->modification_time = time(nullptr); new_data_part->modification_time = time(nullptr);
new_data_part->bytes_on_disk = MergeTreeData::DataPart::calculateTotalSizeOnDisk(new_data_part->getFullPath()); new_data_part->bytes_on_disk = MergeTreeData::DataPart::calculateTotalSizeOnDisk(new_data_part->getFullPath());
} }

View File

@ -208,8 +208,6 @@ struct MergeTreeDataPart
MinMaxIndex minmax_idx; MinMaxIndex minmax_idx;
MergeTreeIndexParts index_parts;
Checksums checksums; Checksums checksums;
/// Columns description. /// Columns description.

View File

@ -530,8 +530,8 @@ namespace DB
/// It can be done in multiple threads (one thread for each part). /// It can be done in multiple threads (one thread for each part).
/// Maybe it should be moved to BlockInputStream, but it can cause some problems. /// Maybe it should be moved to BlockInputStream, but it can cause some problems.
for (auto index_part : part->index_parts) { for (auto index : data.indexes) {
auto condition = index_part->createIndexConditionOnPart(query_info, context); auto condition = index->createIndexConditionOnPart(query_info, context);
if (!condition->alwaysUnknownOrTrue()) { if (!condition->alwaysUnknownOrTrue()) {
ranges.ranges = condition->filterRanges(ranges.ranges); ranges.ranges = condition->filterRanges(ranges.ranges);
} }

View File

@ -12,11 +12,6 @@ namespace ErrorCodes
IndexType IndexCondition::indexType() const { IndexType IndexCondition::indexType() const {
return part->indexType();
}
IndexType MergeTreeIndexPart::indexType() const {
return index->indexType(); return index->indexType();
} }

View File

@ -21,20 +21,16 @@ enum class IndexType {
class MergeTreeIndex; class MergeTreeIndex;
struct MergeTreeIndexPart;
using MergeTreeIndexPtr = std::shared_ptr<const MergeTreeIndex>; using MergeTreeIndexPtr = std::shared_ptr<const MergeTreeIndex>;
using MutableMergeTreeIndexPtr = std::shared_ptr<MergeTreeIndex>; using MutableMergeTreeIndexPtr = std::shared_ptr<MergeTreeIndex>;
using MergeTreeIndexes = std::vector<MutableMergeTreeIndexPtr>; using MergeTreeIndexes = std::vector<MutableMergeTreeIndexPtr>;
using MergeTreeIndexPartPtr = std::shared_ptr<MergeTreeIndexPart>;
using MergeTreeIndexParts = std::vector<MergeTreeIndexPartPtr>;
/// Condition on the index. /// Condition on the index.
/// It works only with one indexPart (MergeTreeDataPart). /// It works only with one indexPart (MergeTreeDataPart).
class IndexCondition { class IndexCondition {
friend MergeTreeIndexPart; friend MergeTreeIndex;
public: public:
virtual ~IndexCondition() = default; virtual ~IndexCondition() = default;
@ -51,7 +47,7 @@ protected:
IndexCondition() = default; IndexCondition() = default;
public: public:
MergeTreeIndexPartPtr part; MergeTreeIndexPtr index;
}; };
using IndexConditionPtr = std::shared_ptr<IndexCondition>; using IndexConditionPtr = std::shared_ptr<IndexCondition>;
@ -59,7 +55,7 @@ using IndexConditionPtr = std::shared_ptr<IndexCondition>;
struct MergeTreeIndexGranule struct MergeTreeIndexGranule
{ {
friend MergeTreeIndexPart; friend MergeTreeIndex;
public: public:
virtual ~MergeTreeIndexGranule(); virtual ~MergeTreeIndexGranule();
@ -76,28 +72,6 @@ using MergeTreeIndexGranulePtr = std::shared_ptr<MergeTreeIndexGranule>;
using MergeTreeIndexGranules = std::vector<MergeTreeIndexGranulePtr>; using MergeTreeIndexGranules = std::vector<MergeTreeIndexGranulePtr>;
/// Data structure for operations with index data for each MergeTreeDataPart.
/// Stores information specific for DataPart.
/// Возможно будет убран.
struct MergeTreeIndexPart
{
friend MergeTreeIndex;
public:
MergeTreeIndexPart() = default;
virtual ~MergeTreeIndexPart() = default;
IndexType indexType() const;
virtual MergeTreeIndexPartPtr cloneEmpty() const = 0;
virtual IndexConditionPtr createIndexConditionOnPart(
const SelectQueryInfo & query_info, const Context & context) const = 0;
MergeTreeIndexPtr index;
};
/// Structure for storing basic index info like columns, expression, arguments, ... /// Structure for storing basic index info like columns, expression, arguments, ...
class MergeTreeIndex class MergeTreeIndex
{ {
@ -111,6 +85,9 @@ public:
virtual MergeTreeIndexGranulePtr createIndexGranule() const = 0; virtual MergeTreeIndexGranulePtr createIndexGranule() const = 0;
virtual IndexConditionPtr createIndexConditionOnPart(
const SelectQueryInfo & query_info, const Context & context) const = 0;
String name; String name;
ExpressionActionsPtr expr; ExpressionActionsPtr expr;
size_t granularity; size_t granularity;