Added a new set API for TupleIdSequence.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/69fd94b8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/69fd94b8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/69fd94b8 Branch: refs/heads/trace Commit: 69fd94b8917c53e5a7a3e5899382c6ba12cf1c2b Parents: a61b03d Author: Zuyu Zhang <[email protected]> Authored: Thu Sep 28 19:28:30 2017 -0500 Committer: Zuyu Zhang <[email protected]> Committed: Mon Oct 9 13:14:07 2017 -0500 ---------------------------------------------------------------------- expressions/scalar/ScalarCaseExpression.cpp | 2 +- relational_operators/HashJoinOperator.cpp | 2 +- storage/AggregationOperationState.cpp | 3 +- storage/BloomFilterIndexSubBlock.cpp | 2 +- storage/CMakeLists.txt | 1 + storage/CSBTreeIndexSubBlock.cpp | 22 +- ...ompressedColumnStoreTupleStorageSubBlock.cpp | 36 +-- ...ressedPackedRowStoreTupleStorageSubBlock.cpp | 36 +-- storage/InsertDestination.hpp | 4 +- storage/SMAIndexSubBlock.cpp | 2 +- storage/StorageBlock.cpp | 9 +- storage/TupleIdSequence.hpp | 15 ++ storage/TupleStorageSubBlock.cpp | 2 +- utility/BitVector.hpp | 16 ++ utility/lip_filter/LIPFilterAdaptiveProber.hpp | 4 +- utility/tests/BitVector_unittest.cpp | 226 +++++++++---------- 16 files changed, 206 insertions(+), 176 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/expressions/scalar/ScalarCaseExpression.cpp ---------------------------------------------------------------------- diff --git a/expressions/scalar/ScalarCaseExpression.cpp b/expressions/scalar/ScalarCaseExpression.cpp index 00a7710..6847425 100644 --- a/expressions/scalar/ScalarCaseExpression.cpp +++ b/expressions/scalar/ScalarCaseExpression.cpp @@ -319,7 +319,7 @@ ColumnVectorPtr ScalarCaseExpression::getAllValuesForJoin( *right_accessor, right_relation_id, check_pair.second)) { - current_case_positions->set(pos, true); + current_case_positions->set(pos); current_case_matches.emplace_back(check_pair); } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/relational_operators/HashJoinOperator.cpp ---------------------------------------------------------------------- diff --git a/relational_operators/HashJoinOperator.cpp b/relational_operators/HashJoinOperator.cpp index b07e4cb..4083bd3 100644 --- a/relational_operators/HashJoinOperator.cpp +++ b/relational_operators/HashJoinOperator.cpp @@ -758,7 +758,7 @@ void HashSemiJoinWorkOrder::executeWithResidualPredicate() { *probe_accessor, probe_relation_id, hash_match.second)) { - filter.set(hash_match.second, true); + filter.set(hash_match.second); } } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/AggregationOperationState.cpp ---------------------------------------------------------------------- diff --git a/storage/AggregationOperationState.cpp b/storage/AggregationOperationState.cpp index 0f4795f..73f1983 100644 --- a/storage/AggregationOperationState.cpp +++ b/storage/AggregationOperationState.cpp @@ -579,8 +579,7 @@ void AggregationOperationState::aggregateBlockHashTableImplPartitioned( accessor->getTupleWithAttributes(group_by_key_ids)); const std::size_t curr_tuple_partition_id = curr_tuple->getTupleHash() % num_partitions; - partition_membership[curr_tuple_partition_id]->set( - accessor->getCurrentPosition(), true); + partition_membership[curr_tuple_partition_id]->set(accessor->getCurrentPosition()); } // Aggregate each partition. http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/BloomFilterIndexSubBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/BloomFilterIndexSubBlock.cpp b/storage/BloomFilterIndexSubBlock.cpp index 4351c05..1af3872 100644 --- a/storage/BloomFilterIndexSubBlock.cpp +++ b/storage/BloomFilterIndexSubBlock.cpp @@ -206,7 +206,7 @@ TupleIdSequence* BloomFilterIndexSubBlock::getMatchesForPredicate( } else { for (tuple_id tid = 0; tid <= tuple_store_.getMaxTupleID(); ++tid) { if (tuple_store_.hasTupleWithID(tid)) { - tuple_sequence->set(tid, true); + tuple_sequence->set(tid); } } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt index 92a3292..fb09e49 100644 --- a/storage/CMakeLists.txt +++ b/storage/CMakeLists.txt @@ -1065,6 +1065,7 @@ target_link_libraries(quickstep_storage_ThreadPrivateCompactKeyHashTable quickstep_utility_Macros quickstep_utility_ScopedBuffer) target_link_libraries(quickstep_storage_TupleIdSequence + glog quickstep_storage_StorageBlockInfo quickstep_utility_BitVector quickstep_utility_Macros) http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/CSBTreeIndexSubBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/CSBTreeIndexSubBlock.cpp b/storage/CSBTreeIndexSubBlock.cpp index dd75467..cc18e89 100644 --- a/storage/CSBTreeIndexSubBlock.cpp +++ b/storage/CSBTreeIndexSubBlock.cpp @@ -1791,7 +1791,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateEqualPredicate( // End of matches. return matches.release(); } - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); } key_ptr += key_tuple_id_pair_length_bytes_; } @@ -1824,7 +1824,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateNotEqualPredicate( + sizeof(NodeHeader) + key_length_bytes_; for (uint16_t entry_num = 0; entry_num < num_keys; ++entry_num) { - matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr), true); + matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr)); tuple_id_ptr += key_tuple_id_pair_length_bytes_; } search_node = getRightSiblingOfLeafNode(search_node); @@ -1841,7 +1841,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateNotEqualPredicate( if (!equal_found) { if (key_less_literal_comparator.compareDataPtrsInl(key_ptr, literal)) { // key < literal - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); } else { equal_found = true; } @@ -1854,7 +1854,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateNotEqualPredicate( for (uint16_t subsequent_num = entry_num; subsequent_num < num_keys; ++subsequent_num) { - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); key_ptr += key_tuple_id_pair_length_bytes_; } past_equal = true; @@ -1877,7 +1877,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateNotEqualPredicate( + sizeof(NodeHeader) + key_length_bytes_; for (uint16_t entry_num = 0; entry_num < num_keys; ++entry_num) { - matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr), true); + matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr)); tuple_id_ptr += key_tuple_id_pair_length_bytes_; } search_node = getRightSiblingOfLeafNode(search_node); @@ -1910,7 +1910,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateLessPredicate( + sizeof(NodeHeader) + key_length_bytes_; for (uint16_t entry_num = 0; entry_num < num_keys; ++entry_num) { - matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr), true); + matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr)); tuple_id_ptr += key_tuple_id_pair_length_bytes_; } search_node = getRightSiblingOfLeafNode(search_node); @@ -1927,7 +1927,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateLessPredicate( if (!equal_found) { if (key_less_literal_comparator.compareDataPtrsInl(key_ptr, literal)) { // key < literal - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); } else { equal_found = true; } @@ -1938,7 +1938,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateLessPredicate( // literal < key return matches.release(); } else { - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); } } @@ -1954,7 +1954,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateLessPredicate( for (uint16_t entry_num = 0; entry_num < num_keys; ++entry_num) { if (key_less_literal_comparator.compareDataPtrsInl(key_ptr, literal)) { // key < literal - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); } else { return matches.release(); } @@ -2001,7 +2001,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateGreaterPredicate( if (match_found) { // Fill in the matching entries from this leaf. for (uint16_t match_num = entry_num; match_num < num_keys; ++match_num) { - matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_), true); + matches->set(*reinterpret_cast<const tuple_id*>(key_ptr + key_length_bytes_)); key_ptr += key_tuple_id_pair_length_bytes_; } break; @@ -2024,7 +2024,7 @@ TupleIdSequence* CSBTreeIndexSubBlock::evaluateGreaterPredicate( + sizeof(NodeHeader) + key_length_bytes_; for (uint16_t entry_num = 0; entry_num < num_keys; ++entry_num) { - matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr), true); + matches->set(*reinterpret_cast<const tuple_id*>(tuple_id_ptr)); tuple_id_ptr += key_tuple_id_pair_length_bytes_; } search_node = getRightSiblingOfLeafNode(search_node); http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/CompressedColumnStoreTupleStorageSubBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/CompressedColumnStoreTupleStorageSubBlock.cpp b/storage/CompressedColumnStoreTupleStorageSubBlock.cpp index 3bd0c3a..cc23445 100644 --- a/storage/CompressedColumnStoreTupleStorageSubBlock.cpp +++ b/storage/CompressedColumnStoreTupleStorageSubBlock.cpp @@ -538,7 +538,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getNotEqualCodesExcl ++tid) { if ((code != static_cast<const uint8_t*>(attr_stripe)[tid]) && (null_code != static_cast<const uint8_t*>(attr_stripe)[tid])) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -548,7 +548,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getNotEqualCodesExcl ++tid) { if ((code != static_cast<const uint16_t*>(attr_stripe)[tid]) && (null_code != static_cast<const uint16_t*>(attr_stripe)[tid])) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -558,7 +558,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getNotEqualCodesExcl ++tid) { if ((code != static_cast<const uint16_t*>(attr_stripe)[tid]) && (null_code != static_cast<const uint16_t*>(attr_stripe)[tid])) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -578,7 +578,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getNotEqualCodesExcl ++filter_it) { if ((code != static_cast<const uint8_t*>(attr_stripe)[*filter_it]) && (null_code != static_cast<const uint8_t*>(attr_stripe)[*filter_it])) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -588,7 +588,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getNotEqualCodesExcl ++filter_it) { if ((code != static_cast<const uint16_t*>(attr_stripe)[*filter_it]) && (null_code != static_cast<const uint16_t*>(attr_stripe)[*filter_it])) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -598,7 +598,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getNotEqualCodesExcl ++filter_it) { if ((code != static_cast<const uint16_t*>(attr_stripe)[*filter_it]) && (null_code != static_cast<const uint16_t*>(attr_stripe)[*filter_it])) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -677,7 +677,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesInRange( ++tid) { if (range.first <= (static_cast<const uint8_t*>(attr_stripe)[tid]) && (static_cast<const uint8_t*>(attr_stripe)[tid] < range.second)) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -687,7 +687,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesInRange( ++tid) { if (range.first <= (static_cast<const uint16_t*>(attr_stripe)[tid]) && (static_cast<const uint16_t*>(attr_stripe)[tid] < range.second)) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -697,7 +697,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesInRange( ++tid) { if (range.first <= (static_cast<const uint32_t*>(attr_stripe)[tid]) && (static_cast<const uint32_t*>(attr_stripe)[tid] < range.second)) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -717,7 +717,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesInRange( ++filter_it) { if (range.first <= (static_cast<const uint8_t*>(attr_stripe)[*filter_it]) && (static_cast<const uint8_t*>(attr_stripe)[*filter_it] < range.second)) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -727,7 +727,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesInRange( ++filter_it) { if (range.first <= (static_cast<const uint16_t*>(attr_stripe)[*filter_it]) && (static_cast<const uint16_t*>(attr_stripe)[*filter_it] < range.second)) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -737,7 +737,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesInRange( ++filter_it) { if (range.first <= (static_cast<const uint32_t*>(attr_stripe)[*filter_it]) && (static_cast<const uint32_t*>(attr_stripe)[*filter_it] < range.second)) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -924,7 +924,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesSatisfyingCo tid < *static_cast<const tuple_id*>(sub_block_memory_); ++tid) { if (comp(code, static_cast<const uint8_t*>(attr_stripe)[tid])) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -933,7 +933,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesSatisfyingCo tid < *static_cast<const tuple_id*>(sub_block_memory_); ++tid) { if (comp(code, static_cast<const uint16_t*>(attr_stripe)[tid])) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -942,7 +942,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesSatisfyingCo tid < *static_cast<const tuple_id*>(sub_block_memory_); ++tid) { if (comp(code, static_cast<const uint32_t*>(attr_stripe)[tid])) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -961,7 +961,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesSatisfyingCo filter_it != filter->end(); ++filter_it) { if (comp(code, static_cast<const uint8_t*>(attr_stripe)[*filter_it])) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -970,7 +970,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesSatisfyingCo filter_it != filter->end(); ++filter_it) { if (comp(code, static_cast<const uint16_t*>(attr_stripe)[*filter_it])) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -979,7 +979,7 @@ TupleIdSequence* CompressedColumnStoreTupleStorageSubBlock::getCodesSatisfyingCo filter_it != filter->end(); ++filter_it) { if (comp(code, static_cast<const uint32_t*>(attr_stripe)[*filter_it])) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/CompressedPackedRowStoreTupleStorageSubBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/CompressedPackedRowStoreTupleStorageSubBlock.cpp b/storage/CompressedPackedRowStoreTupleStorageSubBlock.cpp index d362f98..f087293 100644 --- a/storage/CompressedPackedRowStoreTupleStorageSubBlock.cpp +++ b/storage/CompressedPackedRowStoreTupleStorageSubBlock.cpp @@ -403,7 +403,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getNotEqualCodesE ++tid, attr_location += tuple_length_bytes_) { if ((code != *reinterpret_cast<const uint8_t*>(attr_location)) && (null_code != *reinterpret_cast<const uint8_t*>(attr_location))) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -413,7 +413,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getNotEqualCodesE ++tid, attr_location += tuple_length_bytes_) { if ((code != *reinterpret_cast<const uint16_t*>(attr_location)) && (null_code != *reinterpret_cast<const uint16_t*>(attr_location))) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -423,7 +423,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getNotEqualCodesE ++tid, attr_location += tuple_length_bytes_) { if ((code != *reinterpret_cast<const uint32_t*>(attr_location)) && (null_code != *reinterpret_cast<const uint32_t*>(attr_location))) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -444,7 +444,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getNotEqualCodesE const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if ((code != *reinterpret_cast<const uint8_t*>(local_attr_location)) && (null_code != *reinterpret_cast<const uint8_t*>(local_attr_location))) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -455,7 +455,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getNotEqualCodesE const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if ((code != *reinterpret_cast<const uint16_t*>(local_attr_location)) && (null_code != *reinterpret_cast<const uint16_t*>(local_attr_location))) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -466,7 +466,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getNotEqualCodesE const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if ((code != *reinterpret_cast<const uint32_t*>(local_attr_location)) && (null_code != *reinterpret_cast<const uint32_t*>(local_attr_location))) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -513,7 +513,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesInRange( ++tid, attr_location += tuple_length_bytes_) { if (range.first <= (*reinterpret_cast<const uint8_t*>(attr_location)) && (*reinterpret_cast<const uint8_t*>(attr_location) < range.second)) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -523,7 +523,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesInRange( ++tid, attr_location += tuple_length_bytes_) { if (range.first <= (*reinterpret_cast<const uint16_t*>(attr_location)) && (*reinterpret_cast<const uint16_t*>(attr_location) < range.second)) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -533,7 +533,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesInRange( ++tid, attr_location += tuple_length_bytes_) { if (range.first <= (*reinterpret_cast<const uint32_t*>(attr_location)) && (*reinterpret_cast<const uint32_t*>(attr_location) < range.second)) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -554,7 +554,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesInRange( const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if (range.first <= (*reinterpret_cast<const uint8_t*>(local_attr_location)) && (*reinterpret_cast<const uint8_t*>(local_attr_location) < range.second)) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -565,7 +565,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesInRange( const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if (range.first <= (*reinterpret_cast<const uint16_t*>(local_attr_location)) && (*reinterpret_cast<const uint16_t*>(local_attr_location) < range.second)) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -576,7 +576,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesInRange( const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if (range.first <= (*reinterpret_cast<const uint32_t*>(local_attr_location)) && (*reinterpret_cast<const uint32_t*>(local_attr_location) < range.second)) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -638,7 +638,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesSatisfyin tid < *static_cast<const tuple_id*>(sub_block_memory_); ++tid, attr_location += tuple_length_bytes_) { if (comp(code, *reinterpret_cast<const uint8_t*>(attr_location))) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -647,7 +647,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesSatisfyin tid < *static_cast<const tuple_id*>(sub_block_memory_); ++tid, attr_location += tuple_length_bytes_) { if (comp(code, *reinterpret_cast<const uint16_t*>(attr_location))) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -656,7 +656,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesSatisfyin tid < *static_cast<const tuple_id*>(sub_block_memory_); ++tid, attr_location += tuple_length_bytes_) { if (comp(code, *reinterpret_cast<const uint32_t*>(attr_location))) { - matches->set(tid, true); + matches->set(tid); } } break; @@ -676,7 +676,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesSatisfyin ++filter_it) { const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if (comp(code, *reinterpret_cast<const uint8_t*>(local_attr_location))) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -686,7 +686,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesSatisfyin ++filter_it) { const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if (comp(code, *reinterpret_cast<const uint16_t*>(local_attr_location))) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; @@ -696,7 +696,7 @@ TupleIdSequence* CompressedPackedRowStoreTupleStorageSubBlock::getCodesSatisfyin ++filter_it) { const void *local_attr_location = attr_location + (*filter_it) * tuple_length_bytes_; if (comp(code, *reinterpret_cast<const uint32_t*>(local_attr_location))) { - matches->set(*filter_it, true); + matches->set(*filter_it); } } break; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/InsertDestination.hpp ---------------------------------------------------------------------- diff --git a/storage/InsertDestination.hpp b/storage/InsertDestination.hpp index a0a7bc2..ab791b1 100644 --- a/storage/InsertDestination.hpp +++ b/storage/InsertDestination.hpp @@ -646,7 +646,7 @@ class PartitionAwareInsertDestination : public InsertDestination { if (partition_attr_ids.empty()) { while (accessor->next()) { - (*partition_membership)[input_partition_id_]->set(accessor->getCurrentPosition(), true); + (*partition_membership)[input_partition_id_]->set(accessor->getCurrentPosition()); } } else { PartitionSchemeHeader::PartitionValues values(partition_attr_ids.size()); @@ -655,7 +655,7 @@ class PartitionAwareInsertDestination : public InsertDestination { values[i] = accessor->getTypedValue(partition_attr_ids[i]); } (*partition_membership)[partition_scheme_header_->getPartitionId(values)]->set( - accessor->getCurrentPosition(), true); + accessor->getCurrentPosition()); } } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/SMAIndexSubBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/SMAIndexSubBlock.cpp b/storage/SMAIndexSubBlock.cpp index 3b3b879..81cf6c0 100644 --- a/storage/SMAIndexSubBlock.cpp +++ b/storage/SMAIndexSubBlock.cpp @@ -685,7 +685,7 @@ TupleIdSequence* SMAIndexSubBlock::getMatchesForPredicate( } else { for (tuple_id tid = 0; tid <= tuple_store_.getMaxTupleID(); ++tid) { if (tuple_store_.hasTupleWithID(tid)) { - tidseq->set(tid, true); + tidseq->set(tid); } } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/StorageBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/StorageBlock.cpp b/storage/StorageBlock.cpp index 31f1db2..e3e47d1 100644 --- a/storage/StorageBlock.cpp +++ b/storage/StorageBlock.cpp @@ -347,8 +347,7 @@ void StorageBlock::sample(const bool is_block_sample, sequence_mask->set(tuple_index_mapping.find(random_number) == tuple_index_mapping.end() ? random_number - : tuple_index_mapping[random_number], - true); + : tuple_index_mapping[random_number]); tuple_index_mapping[random_number] = sequence->length() - (n + 1); } @@ -461,7 +460,7 @@ StorageBlock::UpdateResult StorageBlock::update( tuple_store_->setAttributeValueInPlaceTyped(*match_it, update_it->first, update_it->second); } - in_place_ids.set(*match_it, true); + in_place_ids.set(*match_it); } else { // Make a copy of the tuple with the updated values. std::vector<TypedValue> updated_tuple_values; @@ -479,7 +478,7 @@ StorageBlock::UpdateResult StorageBlock::update( } relocation_buffer.emplace_back(std::move(updated_tuple_values)); - relocate_ids.set(*match_it, true); + relocate_ids.set(*match_it); } } @@ -526,7 +525,7 @@ StorageBlock::UpdateResult StorageBlock::update( rebuild_all = true; } else { // Only bother adding 'reinsert_id' to 'in_place_ids' if not rebuilding. - in_place_ids.set(reinsert_result.inserted_id, true); + in_place_ids.set(reinsert_result.inserted_id); } } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/TupleIdSequence.hpp ---------------------------------------------------------------------- diff --git a/storage/TupleIdSequence.hpp b/storage/TupleIdSequence.hpp index 5047270..8c3a074 100644 --- a/storage/TupleIdSequence.hpp +++ b/storage/TupleIdSequence.hpp @@ -28,6 +28,8 @@ #include "utility/BitVector.hpp" #include "utility/Macros.hpp" +#include "glog/logging.h" + namespace quickstep { /** \addtogroup Storage @@ -155,6 +157,19 @@ class TupleIdSequence { } /** + * @brief Set a particular tuple ID as being on or off in this sequence. + * + * @param on If true, tuple should be part of this sequence. If false, + * remove tuple from this sequence (if it was present). + **/ + inline void set(const tuple_id tuple) { + DCHECK_GE(tuple, 0); + DCHECK_LT(static_cast<std::size_t>(tuple), internal_bitvector_.size()); + + internal_bitvector_.setBit(tuple); + } + + /** * @brief Set a range of tuple IDs all at once. * * @param first_tuple The first ID to set. http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/storage/TupleStorageSubBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/TupleStorageSubBlock.cpp b/storage/TupleStorageSubBlock.cpp index c5d482f..f2eef49 100644 --- a/storage/TupleStorageSubBlock.cpp +++ b/storage/TupleStorageSubBlock.cpp @@ -65,7 +65,7 @@ TupleIdSequence* TupleStorageSubBlock::getExistenceMap() const { } else { for (tuple_id tid = 0; tid <= max_tid; ++tid) { if (hasTupleWithID(tid)) { - existing_tuples->set(tid, true); + existing_tuples->set(tid); } } } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/utility/BitVector.hpp ---------------------------------------------------------------------- diff --git a/utility/BitVector.hpp b/utility/BitVector.hpp index c404b7e..4472407 100644 --- a/utility/BitVector.hpp +++ b/utility/BitVector.hpp @@ -279,6 +279,18 @@ class BitVector { } /** + * @brief Set the value of a single bit. + * + * @param bit_num The desired bit in this BitVector. + **/ + inline void setBit(const std::size_t bit_num) { + DCHECK(!short_version_) << "Not implemented."; + DCHECK_LT(bit_num, num_bits_); + + setBitRegularVersion(bit_num); + } + + /** * @brief Set the value of a range of bits simulaneously. * * @param start_bit_num The first bit whose value should be set. @@ -918,6 +930,10 @@ class BitVector { data_array_[index_pos_in_data_array] |= op_value; } + inline void setBitRegularVersion(const std::size_t bit_num) { + data_array_[bit_num >> kHigherOrderShift] |= (TopBit<std::size_t>() >> (bit_num & kLowerOrderMask)); + } + template <typename VectorType> inline void setBitShortVersion(const std::size_t bit_num, bool value) { if (value) { http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/utility/lip_filter/LIPFilterAdaptiveProber.hpp ---------------------------------------------------------------------- diff --git a/utility/lip_filter/LIPFilterAdaptiveProber.hpp b/utility/lip_filter/LIPFilterAdaptiveProber.hpp index e1a75d6..fb826da 100644 --- a/utility/lip_filter/LIPFilterAdaptiveProber.hpp +++ b/utility/lip_filter/LIPFilterAdaptiveProber.hpp @@ -147,7 +147,7 @@ class LIPFilterAdaptiveProber { const std::uint32_t num_hits = filterBatch(accessor, &batch, batch_size); for (std::uint32_t i = 0; i < num_hits; ++i) { - matches->set(batch[i], true); + matches->set(batch[i]); } batch_start += batch_size; @@ -181,7 +181,7 @@ class LIPFilterAdaptiveProber { const std::uint32_t num_hits = filterBatch(accessor, &batch, batch_size); for (std::uint32_t i = 0; i < num_hits; ++i) { - matches->set(batch[i], true); + matches->set(batch[i]); } num_tuples_left -= batch_size; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/69fd94b8/utility/tests/BitVector_unittest.cpp ---------------------------------------------------------------------- diff --git a/utility/tests/BitVector_unittest.cpp b/utility/tests/BitVector_unittest.cpp index 774b830..053f405 100644 --- a/utility/tests/BitVector_unittest.cpp +++ b/utility/tests/BitVector_unittest.cpp @@ -357,14 +357,14 @@ TYPED_TEST(BitVectorTest, SetAndGetTest) { big_bit_vector->clear(); // Set some bits, particularly around potential boundaries between size_t strides. - big_bit_vector->setBit(0, true); - big_bit_vector->setBit(5, true); - big_bit_vector->setBit(31, true); - big_bit_vector->setBit(32, true); - big_bit_vector->setBit(63, true); - big_bit_vector->setBit(64, true); - big_bit_vector->setBit(127, true); - big_bit_vector->setBit(128, true); + big_bit_vector->setBit(0); + big_bit_vector->setBit(5); + big_bit_vector->setBit(31); + big_bit_vector->setBit(32); + big_bit_vector->setBit(63); + big_bit_vector->setBit(64); + big_bit_vector->setBit(127); + big_bit_vector->setBit(128); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { if ((i == 0) || (i == 5) || (i == 31) || (i == 32) || (i == 63) || (i == 64) || (i == 127) || (i == 128)) { @@ -454,7 +454,7 @@ TYPED_TEST(BitVectorTest, SetAndGetTest) { // Set all the bits. for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { - big_bit_vector->setBit(i, true); + big_bit_vector->setBit(i); } EXPECT_EQ(TestFixture::kBigBitSize, big_bit_vector->onesCount()); EXPECT_EQ(TestFixture::kBigBitSize, big_bit_vector->firstZero()); @@ -487,10 +487,10 @@ TYPED_TEST(BitVectorTest, AssignFromTest) { std::unique_ptr<TypeParam> big_bit_vector(this->createBitVector(TestFixture::kBigBitSize)); big_bit_vector->clear(); - big_bit_vector->setBit(2, true); - big_bit_vector->setBit(4, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(77, true); + big_bit_vector->setBit(2); + big_bit_vector->setBit(4); + big_bit_vector->setBit(42); + big_bit_vector->setBit(77); std::unique_ptr<TypeParam> big_bit_vector_copy(this->createBitVector(TestFixture::kBigBitSize)); big_bit_vector_copy->assignFrom(*big_bit_vector); @@ -693,14 +693,14 @@ TYPED_TEST(BitVectorTest, ShiftTailForwardTest) { std::unique_ptr<TypeParam> big_bit_vector(this->createBitVector(TestFixture::kBigBitSize)); big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); big_bit_vector->shiftTailForward(15, 70); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -714,16 +714,16 @@ TYPED_TEST(BitVectorTest, ShiftTailForwardTest) { // Also try a relatively small shift within the same word. big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(45, true); - big_bit_vector->setBit(51, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(45); + big_bit_vector->setBit(51); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); big_bit_vector->shiftTailForward(43, 7); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -738,18 +738,18 @@ TYPED_TEST(BitVectorTest, ShiftTailForwardTest) { // Align the shift distance to size_t. big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(45, true); - big_bit_vector->setBit(51, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); - big_bit_vector->setBit(128, true); - big_bit_vector->setBit(137, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(45); + big_bit_vector->setBit(51); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); + big_bit_vector->setBit(128); + big_bit_vector->setBit(137); big_bit_vector->shiftTailForward(43, 64); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -764,18 +764,18 @@ TYPED_TEST(BitVectorTest, ShiftTailForwardTest) { // Exactly align both the tail start and the shift distance to size_t. big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(45, true); - big_bit_vector->setBit(51, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); - big_bit_vector->setBit(128, true); - big_bit_vector->setBit(137, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(45); + big_bit_vector->setBit(51); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); + big_bit_vector->setBit(128); + big_bit_vector->setBit(137); big_bit_vector->shiftTailForward(64, 64); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -867,14 +867,14 @@ TYPED_TEST(BitVectorTest, ShiftTailBackwardTest) { std::unique_ptr<TypeParam> big_bit_vector(this->createBitVector(TestFixture::kBigBitSize)); big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); big_bit_vector->shiftTailBackward(15, 70); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -889,16 +889,16 @@ TYPED_TEST(BitVectorTest, ShiftTailBackwardTest) { // Also try a relatively small shift within the same word. big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(45, true); - big_bit_vector->setBit(51, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(45); + big_bit_vector->setBit(51); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); big_bit_vector->shiftTailBackward(43, 7); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -913,18 +913,18 @@ TYPED_TEST(BitVectorTest, ShiftTailBackwardTest) { // Align the shift distance to size_t. big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(45, true); - big_bit_vector->setBit(51, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); - big_bit_vector->setBit(128, true); - big_bit_vector->setBit(137, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(45); + big_bit_vector->setBit(51); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); + big_bit_vector->setBit(128); + big_bit_vector->setBit(137); big_bit_vector->shiftTailBackward(43, 64); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -940,18 +940,18 @@ TYPED_TEST(BitVectorTest, ShiftTailBackwardTest) { // Exactly align both the tail start and the shift distance to size_t. big_bit_vector->clear(); - big_bit_vector->setBit(11, true); - big_bit_vector->setBit(13, true); - big_bit_vector->setBit(27, true); - big_bit_vector->setBit(42, true); - big_bit_vector->setBit(45, true); - big_bit_vector->setBit(51, true); - big_bit_vector->setBit(84, true); - big_bit_vector->setBit(88, true); - big_bit_vector->setBit(91, true); - big_bit_vector->setBit(123, true); - big_bit_vector->setBit(128, true); - big_bit_vector->setBit(137, true); + big_bit_vector->setBit(11); + big_bit_vector->setBit(13); + big_bit_vector->setBit(27); + big_bit_vector->setBit(42); + big_bit_vector->setBit(45); + big_bit_vector->setBit(51); + big_bit_vector->setBit(84); + big_bit_vector->setBit(88); + big_bit_vector->setBit(91); + big_bit_vector->setBit(123); + big_bit_vector->setBit(128); + big_bit_vector->setBit(137); big_bit_vector->shiftTailBackward(64, 64); for (size_t i = 0; i < TestFixture::kBigBitSize; ++i) { @@ -1027,14 +1027,14 @@ TYPED_TEST(BitVectorTest, RebindTest) { // Set some bits, particularly around potential boundaries between size_t // strides. - big_bit_vector->setBit(0, true); - big_bit_vector->setBit(5, true); - big_bit_vector->setBit(31, true); - big_bit_vector->setBit(32, true); - big_bit_vector->setBit(63, true); - big_bit_vector->setBit(64, true); - big_bit_vector->setBit(127, true); - big_bit_vector->setBit(128, true); + big_bit_vector->setBit(0); + big_bit_vector->setBit(5); + big_bit_vector->setBit(31); + big_bit_vector->setBit(32); + big_bit_vector->setBit(63); + big_bit_vector->setBit(64); + big_bit_vector->setBit(127); + big_bit_vector->setBit(128); // Destroy the old BitVector and create a new one bound to the same memory. ASSERT_EQ(1u, this->allocated_chunks_.size()); @@ -1093,19 +1093,19 @@ TYPED_TEST(BitVectorTest, AnyTest) { big_bit_vector->clear(); EXPECT_FALSE(big_bit_vector->any()); - big_bit_vector->setBit(0, true); + big_bit_vector->setBit(0); EXPECT_TRUE(big_bit_vector->any()); big_bit_vector->setBit(0, false); EXPECT_FALSE(big_bit_vector->any()); - big_bit_vector->setBit(TestFixture::kBigBitSize - 1, true); + big_bit_vector->setBit(TestFixture::kBigBitSize - 1); EXPECT_TRUE(big_bit_vector->any()); big_bit_vector->setBit(TestFixture::kBigBitSize - 1, false); EXPECT_FALSE(big_bit_vector->any()); - big_bit_vector->setBit(TestFixture::kBigBitSize / 2, true); + big_bit_vector->setBit(TestFixture::kBigBitSize / 2); EXPECT_TRUE(big_bit_vector->any()); - big_bit_vector->setBit(TestFixture::kBigBitSize / 2 + 1, true); + big_bit_vector->setBit(TestFixture::kBigBitSize / 2 + 1); EXPECT_TRUE(big_bit_vector->any()); big_bit_vector->setBit(TestFixture::kBigBitSize / 2, false); EXPECT_TRUE(big_bit_vector->any()); @@ -1150,21 +1150,21 @@ TYPED_TEST(BitVectorTest, AllTest) { big_bit_vector->setBit(0, false); EXPECT_FALSE(big_bit_vector->all()); - big_bit_vector->setBit(0, true); + big_bit_vector->setBit(0); EXPECT_TRUE(big_bit_vector->all()); big_bit_vector->setBit(TestFixture::kBigBitSize - 1, false); EXPECT_FALSE(big_bit_vector->all()); - big_bit_vector->setBit(TestFixture::kBigBitSize - 1, true); + big_bit_vector->setBit(TestFixture::kBigBitSize - 1); EXPECT_TRUE(big_bit_vector->all()); big_bit_vector->setBit(TestFixture::kBigBitSize / 2, false); EXPECT_FALSE(big_bit_vector->all()); big_bit_vector->setBit(TestFixture::kBigBitSize / 2 + 1, false); EXPECT_FALSE(big_bit_vector->all()); - big_bit_vector->setBit(TestFixture::kBigBitSize / 2, true); + big_bit_vector->setBit(TestFixture::kBigBitSize / 2); EXPECT_FALSE(big_bit_vector->all()); - big_bit_vector->setBit(TestFixture::kBigBitSize / 2 + 1, true); + big_bit_vector->setBit(TestFixture::kBigBitSize / 2 + 1); EXPECT_TRUE(big_bit_vector->all()); }
