Skip to content

Commit

Permalink
Reduce the scan range of Column<Int>::contains/find_one().
Browse files Browse the repository at this point in the history
  • Loading branch information
s-yata committed Dec 4, 2014
1 parent 96ad811 commit 033f33a
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions lib/grnxx/impl/column/scalar/int.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,15 @@ bool Column<Int>::contains(const Datum &datum) const {
return indexes_[0]->contains(datum);
}
Int value = parse_datum(datum);
size_t valid_size = get_valid_size();
if (value.is_na()) {
for (size_t i = 0; i < values_.size(); ++i) {
for (size_t i = 0; i < valid_size; ++i) {
if (values_[i].is_na() && table_->_test_row(i)) {
return true;
}
}
} else {
for (size_t i = 0; i < values_.size(); ++i) {
for (size_t i = 0; i < valid_size; ++i) {
if (values_[i].match(value)) {
return true;
}
Expand All @@ -109,14 +110,15 @@ Int Column<Int>::find_one(const Datum &datum) const {
return indexes_[0]->find_one(datum);
}
Int value = parse_datum(datum);
size_t valid_size = get_valid_size();
if (value.is_na()) {
for (size_t i = 0; i < values_.size(); ++i) {
for (size_t i = 0; i < valid_size; ++i) {
if (values_[i].is_na() && table_->_test_row(i)) {
return Int(i);
}
}
} else {
for (size_t i = 0; i < values_.size(); ++i) {
for (size_t i = 0; i < valid_size; ++i) {
if (values_[i].match(value)) {
return Int(i);
}
Expand Down

0 comments on commit 033f33a

Please sign in to comment.