susumu.yata
null+****@clear*****
Fri Dec 26 17:23:47 JST 2014
susumu.yata 2014-12-26 17:23:47 +0900 (Fri, 26 Dec 2014) New Revision: 8639b9e47495fd8bf135d04b9fb21aabd46b797b https://github.com/groonga/grnxx/commit/8639b9e47495fd8bf135d04b9fb21aabd46b797b Message: Skip test_row() if a table does not contain invalid rows. (#136) Modified files: lib/grnxx/impl/column/scalar/bool.cpp lib/grnxx/impl/column/scalar/float.cpp lib/grnxx/impl/column/scalar/geo_point.cpp lib/grnxx/impl/column/scalar/int.cpp lib/grnxx/impl/column/scalar/text.cpp lib/grnxx/impl/column/vector/bool.cpp lib/grnxx/impl/column/vector/float.cpp lib/grnxx/impl/column/vector/geo_point.cpp lib/grnxx/impl/column/vector/int.cpp lib/grnxx/impl/column/vector/text.cpp Modified: lib/grnxx/impl/column/scalar/bool.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/scalar/bool.cpp 2014-12-26 16:27:55 +0900 (06caf10) +++ lib/grnxx/impl/column/scalar/bool.cpp 2014-12-26 17:23:47 +0900 (0e8155c) @@ -96,8 +96,9 @@ Int Column<Bool>::scan(Bool value) const { if (values_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (values_[i].is_na() && table_->_test_row(i)) { + if (values_[i].is_na() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/scalar/float.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/scalar/float.cpp 2014-12-26 16:27:55 +0900 (653de66) +++ lib/grnxx/impl/column/scalar/float.cpp 2014-12-26 17:23:47 +0900 (cb0a515) @@ -111,8 +111,9 @@ Int Column<Float>::scan(Float value) const { if (values_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (values_[i].is_na() && table_->_test_row(i)) { + if (values_[i].is_na() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/scalar/geo_point.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/scalar/geo_point.cpp 2014-12-26 16:27:55 +0900 (498b138) +++ lib/grnxx/impl/column/scalar/geo_point.cpp 2014-12-26 17:23:47 +0900 (c246711) @@ -100,8 +100,9 @@ Int Column<GeoPoint>::scan(GeoPoint value) const { if (values_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (values_[i].is_na() && table_->_test_row(i)) { + if (values_[i].is_na() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/scalar/int.cpp (+8 -4) =================================================================== --- lib/grnxx/impl/column/scalar/int.cpp 2014-12-26 16:27:55 +0900 (2fc1be0) +++ lib/grnxx/impl/column/scalar/int.cpp 2014-12-26 17:23:47 +0900 (a0b4cdf) @@ -329,10 +329,12 @@ Int Column<Int>::scan(Int value) const { if (size_ < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); switch (value_size_) { case 8: { for (size_t i = 0; i < valid_size; ++i) { - if ((values_8_[i] == na_value_8()) && table_->_test_row(i)) { + if ((values_8_[i] == na_value_8()) && + (is_full || table_->_test_row(i))) { return Int(i); } } @@ -340,7 +342,8 @@ Int Column<Int>::scan(Int value) const { } case 16: { for (size_t i = 0; i < valid_size; ++i) { - if ((values_16_[i] == na_value_16()) && table_->_test_row(i)) { + if ((values_16_[i] == na_value_16()) && + (is_full || table_->_test_row(i))) { return Int(i); } } @@ -348,7 +351,8 @@ Int Column<Int>::scan(Int value) const { } case 32: { for (size_t i = 0; i < valid_size; ++i) { - if ((values_32_[i] == na_value_32()) && table_->_test_row(i)) { + if ((values_32_[i] == na_value_32()) && + (is_full || table_->_test_row(i))) { return Int(i); } } @@ -356,7 +360,7 @@ Int Column<Int>::scan(Int value) const { } default: { for (size_t i = 0; i < valid_size; ++i) { - if (values_64_[i].is_na() && table_->_test_row(i)) { + if (values_64_[i].is_na() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/scalar/text.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/scalar/text.cpp 2014-12-26 16:27:55 +0900 (062b332) +++ lib/grnxx/impl/column/scalar/text.cpp 2014-12-26 17:23:47 +0900 (636015e) @@ -328,8 +328,9 @@ Int Column<Text>::scan(const Text &value) const { if (headers_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (headers_[i] == na_header() && table_->_test_row(i)) { + if (headers_[i] == na_header() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/vector/bool.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/vector/bool.cpp 2014-12-26 16:27:55 +0900 (75ba880) +++ lib/grnxx/impl/column/vector/bool.cpp 2014-12-26 17:23:47 +0900 (09eed45) @@ -114,8 +114,9 @@ Int Column<Vector<Bool>>::scan(const Vector<Bool> &value) const { if (headers_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (headers_[i] == na_header() && table_->_test_row(i)) { + if (headers_[i] == na_header() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/vector/float.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/vector/float.cpp 2014-12-26 16:27:55 +0900 (8f2488b) +++ lib/grnxx/impl/column/vector/float.cpp 2014-12-26 17:23:47 +0900 (c9dded3) @@ -124,8 +124,9 @@ Int Column<Vector<Float>>::scan(const Vector<Float> &value) const { if (headers_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (headers_[i] == na_header() && table_->_test_row(i)) { + if (headers_[i] == na_header() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/vector/geo_point.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/vector/geo_point.cpp 2014-12-26 16:27:55 +0900 (c8190fd) +++ lib/grnxx/impl/column/vector/geo_point.cpp 2014-12-26 17:23:47 +0900 (14cefef) @@ -125,8 +125,9 @@ Int Column<Vector<GeoPoint>>::scan(const Vector<GeoPoint> &value) const { if (headers_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (headers_[i] == na_header() && table_->_test_row(i)) { + if (headers_[i] == na_header() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/vector/int.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/vector/int.cpp 2014-12-26 16:27:55 +0900 (a529efa) +++ lib/grnxx/impl/column/vector/int.cpp 2014-12-26 17:23:47 +0900 (14b76c0) @@ -139,8 +139,9 @@ Int Column<Vector<Int>>::scan(const Vector<Int> &value) const { if (headers_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (headers_[i] == na_header() && table_->_test_row(i)) { + if (headers_[i] == na_header() && (is_full || table_->_test_row(i))) { return Int(i); } } Modified: lib/grnxx/impl/column/vector/text.cpp (+2 -1) =================================================================== --- lib/grnxx/impl/column/vector/text.cpp 2014-12-26 16:27:55 +0900 (facc8c7) +++ lib/grnxx/impl/column/vector/text.cpp 2014-12-26 17:23:47 +0900 (3f986cf) @@ -126,8 +126,9 @@ Int Column<Vector<Text>>::scan(const Vector<Text> &value) const { if (headers_.size() < table_size) { return table_->max_row_id(); } + bool is_full = table_->is_full(); for (size_t i = 0; i < valid_size; ++i) { - if (headers_[i].size.is_na() && table_->_test_row(i)) { + if (headers_[i].size.is_na() && (is_full || table_->_test_row(i))) { return Int(i); } } -------------- next part -------------- HTML����������������������������...ダウンロード