This commit is contained in:
Michael Kolupaev 2014-03-14 21:19:38 +04:00
parent ba9315d264
commit 758b1414a7
6 changed files with 14 additions and 14 deletions

View File

@ -18,7 +18,7 @@ public:
for (auto & current_block : part_blocks)
{
UInt64 temp_index = storage.increment.get();
MergeTreeData::DataPartPtr part = storage.writer.writeTempPart(current_block, temp_index, structure);
MergeTreeData::MutableDataPartPtr part = storage.writer.writeTempPart(current_block, temp_index, structure);
storage.data.renameTempPartAndAdd(part, &storage.increment, structure);
storage.merge(2);
}

View File

@ -101,9 +101,7 @@ public:
{
DataPart(MergeTreeData & storage_) : storage(storage_), size_in_bytes(0) {}
/// Не изменяйте никакие поля для кусков, уже вставленных в таблицу. TODO заменить почти везде на const DataPart.
MergeTreeData & storage;
MergeTreeData & storage;
DayNum_t left_date;
DayNum_t right_date;
UInt64 left;
@ -208,7 +206,9 @@ public:
}
};
typedef SharedPtr<DataPart> DataPartPtr;
typedef std::shared_ptr<DataPart> MutableDataPartPtr;
/// После добавление в рабочее множество DataPart нельзя изменять.
typedef std::shared_ptr<const DataPart> DataPartPtr;
struct DataPartPtrLess { bool operator() (const DataPartPtr & lhs, const DataPartPtr & rhs) const { return *lhs < *rhs; } };
typedef std::set<DataPartPtr, DataPartPtrLess> DataParts;
typedef std::vector<DataPartPtr> DataPartsVector;
@ -317,9 +317,9 @@ public:
void replaceParts(DataPartsVector old_parts, DataPartPtr new_part);
/** Переименовывает временный кусок в постоянный и добавляет его в рабочий набор.
* Если increment!=nullptr, индекс куска бурется из инкремента. Иначе индекс куска не меняется.
* Если increment!=nullptr, индекс куска берется из инкремента. Иначе индекс куска не меняется.
*/
void renameTempPartAndAdd(DataPartPtr part, Increment * increment,
void renameTempPartAndAdd(MutableDataPartPtr part, Increment * increment,
const LockedTableStructurePtr & structure);
/** Удалить неактуальные куски.

View File

@ -43,7 +43,7 @@ public:
* temp_index - значение left и right для нового куска. Можно будет изменить при переименовании.
* Возвращает кусок с именем, начинающимся с tmp_, еще не добавленный в MergeTreeData.
*/
MergeTreeData::DataPartPtr writeTempPart(BlockWithDateInterval & block, UInt64 temp_index, const MergeTreeData::LockedTableStructurePtr & structure);
MergeTreeData::MutableDataPartPtr writeTempPart(BlockWithDateInterval & block, UInt64 temp_index, const MergeTreeData::LockedTableStructurePtr & structure);
private:
MergeTreeData & data;

View File

@ -181,7 +181,7 @@ void MergeTreeData::loadDataParts()
if (!isPartDirectory(file_name, matches))
continue;
DataPartPtr part = new DataPart(*this);
MutableDataPartPtr part = std::make_shared<DataPart>(*this);
parsePartName(file_name, matches, *part);
part->name = file_name;
@ -285,7 +285,7 @@ void MergeTreeData::clearOldParts()
LOG_TRACE(log, "Clearing old parts");
for (DataParts::iterator it = all_data_parts.begin(); it != all_data_parts.end();)
{
int ref_count = it->referenceCount();
int ref_count = it->use_count();
if (ref_count == 1) /// После этого ref_count не может увеличиться.
{
LOG_DEBUG(log, "'Removing' part " << (*it)->name << " (prepending old_ to its name)");
@ -628,7 +628,7 @@ void MergeTreeData::replaceParts(DataPartsVector old_parts, DataPartPtr new_part
data_parts.erase(data_parts.find(old_parts[i]));
}
void MergeTreeData::renameTempPartAndAdd(DataPartPtr part, Increment * increment,
void MergeTreeData::renameTempPartAndAdd(MutableDataPartPtr part, Increment * increment,
const MergeTreeData::LockedTableStructurePtr & structure)
{
LOG_TRACE(log, "Renaming.");

View File

@ -241,7 +241,7 @@ String MergeTreeDataMerger::mergeParts(const MergeTreeData::DataPartsVector & pa
DateLUTSingleton & date_lut = DateLUTSingleton::instance();
MergeTreeData::DataPartPtr new_data_part = new MergeTreeData::DataPart(data);
MergeTreeData::MutableDataPartPtr new_data_part = std::make_shared<MergeTreeData::DataPart>(data);
new_data_part->left_date = std::numeric_limits<UInt16>::max();
new_data_part->right_date = std::numeric_limits<UInt16>::min();
new_data_part->left = parts.front()->left;

View File

@ -69,7 +69,7 @@ BlocksWithDateIntervals MergeTreeDataWriter::splitBlockIntoParts(const Block & b
return res;
}
MergeTreeData::DataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithDateInterval & block_with_dates, UInt64 temp_index,
MergeTreeData::MutableDataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithDateInterval & block_with_dates, UInt64 temp_index,
const MergeTreeData::LockedTableStructurePtr & structure)
{
Block & block = block_with_dates.block;
@ -144,7 +144,7 @@ MergeTreeData::DataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithDateInter
writeData(part_tmp_path, column.name, *column.type, *column.column, offset_columns);
}
MergeTreeData::DataPartPtr new_data_part = new MergeTreeData::DataPart(data);
MergeTreeData::MutableDataPartPtr new_data_part = std::make_shared<MergeTreeData::DataPart>(data);
new_data_part->left_date = DayNum_t(min_date);
new_data_part->right_date = DayNum_t(max_date);
new_data_part->left = temp_index;