@@ -853,130 +853,6 @@ ASTs buildFilters(const KeyDescription & primary_key, const std::vector<Values>
853853 return filters;
854854}
855855
856- #if 0
857- RangesInDataParts findPKRangesForFinalAfterSkipIndexImpl(RangesInDataParts & ranges_in_data_parts, bool cannot_sort_primary_key, const LoggerPtr & logger)
858- {
859- IndexAccess index_access(ranges_in_data_parts);
860-
861- std::vector<PartsRangesIterator> combined_ranges;
862-
863- RangesInDataPartsBuilder result(ranges_in_data_parts);
864- bool earliest_part_found = false;
865-
866- auto skip_and_return_all_part_ranges = [&]()
867- {
868- RangesInDataParts all_part_ranges(std::move(ranges_in_data_parts));
869- for (auto & all_part_range : all_part_ranges)
870- {
871- const auto & index_granularity = all_part_range.data_part->index_granularity;
872- all_part_range.ranges = MarkRanges{{MarkRange{0, index_granularity->getMarksCountWithoutFinal()}}};
873- }
874- return all_part_ranges;
875- };
876-
877- if (cannot_sort_primary_key) /// just expand to all parts + ranges
878- {
879- return skip_and_return_all_part_ranges();
880- }
881-
882- size_t rejected_ranges_count = 0;
883- for (size_t part_index = 0; part_index < ranges_in_data_parts.size(); ++part_index)
884- {
885- const auto & index_granularity = ranges_in_data_parts[part_index].data_part->index_granularity;
886- std::vector<bool> is_selected_range(index_granularity->getMarksCountWithoutFinal(), false);
887- for (const auto & range : ranges_in_data_parts[part_index].ranges)
888- {
889- combined_ranges.push_back(
890- {index_access.getValue(part_index, range.begin), range, part_index, PartsRangesIterator::EventType::RangeStart, true});
891- const bool value_is_defined_at_end_mark = range.end < index_granularity->getMarksCount();
892- if (!value_is_defined_at_end_mark)
893- {
894- return skip_and_return_all_part_ranges();
895- }
896-
897- combined_ranges.push_back(
898- {index_access.getValue(part_index, range.end), range, part_index, PartsRangesIterator::EventType::RangeEnd, true});
899- for (auto i = range.begin; i < range.end;i++)
900- is_selected_range[i] = true;
901-
902- earliest_part_found = true;
903- }
904- if (!earliest_part_found)
905- continue;
906- for (size_t range_begin = 0; range_begin < is_selected_range.size(); range_begin++)
907- {
908- if (is_selected_range[range_begin])
909- continue;
910- MarkRange rejected_range(range_begin, range_begin + 1);
911- combined_ranges.push_back(
912- {index_access.getValue(part_index, rejected_range.begin), rejected_range, part_index, PartsRangesIterator::EventType::RangeStart, false});
913-
914- const bool value_is_defined_at_end_mark = rejected_range.end < index_granularity->getMarksCount();
915- if (!value_is_defined_at_end_mark)
916- {
917- return skip_and_return_all_part_ranges();
918- }
919-
920- combined_ranges.push_back(
921- {index_access.getValue(part_index, rejected_range.end), rejected_range, part_index, PartsRangesIterator::EventType::RangeEnd, false});
922- rejected_ranges_count++;
923- }
924- }
925- LOG_TRACE(logger, "findPKRangesForFinalAfterSkipIndex : processed {} parts, combined ranges {}, rejected ranges {}", ranges_in_data_parts.size(), combined_ranges.size() / 2, rejected_ranges_count);
926-
927- ::sort(combined_ranges.begin(), combined_ranges.end());
928-
929- size_t active_selected_ranges = 0;
930- std::unordered_set<PartRangeIndex, PartRangeIndexHash> in_doubt_ranges;
931- for (auto ranges_iter : combined_ranges)
932- {
933- if (ranges_iter.event == PartsRangesIterator::EventType::RangeStart)
934- {
935- if (ranges_iter.selected)
936- {
937- active_selected_ranges++;
938- for (auto in_doubt_iter : in_doubt_ranges)
939- {
940- result.addRange(in_doubt_iter.part_index, in_doubt_iter.range);
941- }
942- in_doubt_ranges.clear();
943-
944- result.addRange(ranges_iter.part_index, ranges_iter.range);
945- }
946- else if (active_selected_ranges)
947- {
948- result.addRange(ranges_iter.part_index, ranges_iter.range);
949- }
950- else
951- {
952- in_doubt_ranges.insert(PartRangeIndex(ranges_iter));
953- }
954- }
955- else /// RangeEnd event
956- {
957- if (ranges_iter.selected)
958- {
959- active_selected_ranges--;
960- }
961- else
962- {
963- in_doubt_ranges.erase(PartRangeIndex(ranges_iter));
964- }
965- }
966- }
967-
968- auto result_final_ranges = result.getCurrentRangesInDataParts();
969- std::stable_sort(
970- result_final_ranges.begin(),
971- result_final_ranges.end(),
972- [](const auto & lhs, const auto & rhs) { return lhs.part_index_in_query < rhs.part_index_in_query; });
973- for (auto & result_final_range : result_final_ranges)
974- {
975- std::sort(result_final_range.ranges.begin(), result_final_range.ranges.end());
976- }
977- return result_final_ranges;
978- }
979- #else
980856RangesInDataParts findPKRangesForFinalAfterSkipIndexImpl (RangesInDataParts & ranges_in_data_parts, bool cannot_sort_primary_key, const LoggerPtr & logger)
981857{
982858 IndexAccess index_access (ranges_in_data_parts);
@@ -1023,6 +899,7 @@ RangesInDataParts findPKRangesForFinalAfterSkipIndexImpl(RangesInDataParts & ran
1023899 }
1024900 if (!earliest_part_found)
1025901 continue ;
902+
1026903 for (size_t range_begin = 0 ; range_begin < is_selected_range.size (); range_begin++)
1027904 {
1028905 const bool value_is_defined_at_end_mark = ((range_begin + 1 ) < index_granularity->getMarksCount ());
@@ -1099,7 +976,6 @@ RangesInDataParts findPKRangesForFinalAfterSkipIndexImpl(RangesInDataParts & ran
1099976 }
1100977 return result_final_ranges;
1101978}
1102- #endif
1103979}
1104980
1105981namespace DB
0 commit comments