ISSUES-2581 fix bug with new partition

This commit is contained in:
VadimPE 2018-10-10 16:22:55 +03:00
parent 28102bc3b5
commit d4a56af660
3 changed files with 11 additions and 11 deletions

View File

@ -137,7 +137,7 @@ BlockInputStreams MergeTreeDataSelectExecutor::read(
const Context & context,
const size_t max_block_size,
const unsigned num_streams,
const PartitionIdToMaxBlock* max_blocks_number_to_read) const
const PartitionIdToMaxBlock * max_blocks_number_to_read) const
{
return readFromParts(
data.getDataPartsVector(), column_names_to_return, query_info, context,
@ -151,7 +151,7 @@ BlockInputStreams MergeTreeDataSelectExecutor::readFromParts(
const Context & context,
const size_t max_block_size,
const unsigned num_streams,
const PartitionIdToMaxBlock* max_blocks_number_to_read) const
const PartitionIdToMaxBlock * max_blocks_number_to_read) const
{
size_t part_index = 0;
@ -274,7 +274,7 @@ BlockInputStreams MergeTreeDataSelectExecutor::readFromParts(
if (max_blocks_number_to_read)
{
auto blocks_iterator = max_blocks_number_to_read->find(part->info.partition_id);
if (blocks_iterator != max_blocks_number_to_read->end() && part->info.max_block > blocks_iterator->second)
if (blocks_iterator == max_blocks_number_to_read->end() || part->info.max_block > blocks_iterator->second)
continue;
}

View File

@ -30,7 +30,7 @@ public:
const Context & context,
size_t max_block_size,
unsigned num_streams,
const PartitionIdToMaxBlock* max_blocks_number_to_read = nullptr) const;
const PartitionIdToMaxBlock * max_blocks_number_to_read = nullptr) const;
BlockInputStreams readFromParts(
MergeTreeData::DataPartsVector parts,
@ -39,7 +39,7 @@ public:
const Context & context,
size_t max_block_size,
unsigned num_streams,
const PartitionIdToMaxBlock* max_blocks_number_to_read = nullptr) const;
const PartitionIdToMaxBlock * max_blocks_number_to_read = nullptr) const;
private:
MergeTreeData & data;

View File

@ -2952,12 +2952,13 @@ BlockInputStreams StorageReplicatedMergeTree::read(
* 2. Do not read parts that have not yet been written to the quorum of the replicas.
* For this you have to synchronously go to ZooKeeper.
*/
ReplicatedMergeTreeQuorumAddedParts::PartitionIdToMaxBlock max_added_blocks;
if (settings.select_sequential_consistency)
{
ReplicatedMergeTreeQuorumAddedParts::PartitionIdToMaxBlock max_added_blocks;
for (const auto & data_part : data.getDataParts())
{
max_added_blocks[data_part->info.partition_id] = data_part->info.max_block;
max_added_blocks[data_part->info.partition_id] = std::max(max_added_blocks[data_part->info.partition_id], data_part->info.max_block);
}
auto zookeeper = getZooKeeper();
@ -2993,12 +2994,11 @@ BlockInputStreams StorageReplicatedMergeTree::read(
for (const auto & max_block : part_with_quorum.getMaxInsertedBlocks())
max_added_blocks[max_block.first] = max_block.second;
}
return reader.read(column_names, query_info, context, max_block_size, num_streams, &max_added_blocks);
}
if (max_added_blocks.empty())
return reader.read(column_names, query_info, context, max_block_size, num_streams);
else
return reader.read(column_names, query_info, context, max_block_size, num_streams, &max_added_blocks);
return reader.read(column_names, query_info, context, max_block_size, num_streams);
}