[Groonga-commit] groonga/grnxx at f8f2fb9 [master] Fix a bug that an indexes column cannot find N/A with find_one(). (#135)

Back to archive index

susumu.yata null+****@clear*****
Thu Dec 25 16:48:52 JST 2014


susumu.yata	2014-12-25 16:48:52 +0900 (Thu, 25 Dec 2014)

  New Revision: f8f2fb993d5469ea2b6ea3a1574be82dd3ed5159
  https://github.com/groonga/grnxx/commit/f8f2fb993d5469ea2b6ea3a1574be82dd3ed5159

  Message:
    Fix a bug that an indexes column cannot find N/A with find_one(). (#135)

  Modified files:
    lib/grnxx/impl/column/scalar/float.cpp
    lib/grnxx/impl/column/scalar/int.cpp
    lib/grnxx/impl/column/scalar/text.cpp

  Modified: lib/grnxx/impl/column/scalar/float.cpp (+3 -2)
===================================================================
--- lib/grnxx/impl/column/scalar/float.cpp    2014-12-25 16:48:31 +0900 (dd92ed3)
+++ lib/grnxx/impl/column/scalar/float.cpp    2014-12-25 16:48:52 +0900 (653de66)
@@ -72,10 +72,11 @@ bool Column<Float>::contains(const Datum &datum) const {
 
 Int Column<Float>::find_one(const Datum &datum) const {
   // TODO: Choose the best index.
-  if (!indexes_.is_empty()) {
+  Float value = parse_datum(datum);
+  if (!value.is_na() && !indexes_.is_empty()) {
     return indexes_[0]->find_one(datum);
   }
-  return scan(parse_datum(datum));
+  return scan(value);
 }
 
 void Column<Float>::unset(Int row_id) {

  Modified: lib/grnxx/impl/column/scalar/int.cpp (+2 -1)
===================================================================
--- lib/grnxx/impl/column/scalar/int.cpp    2014-12-25 16:48:31 +0900 (2a4d1cf)
+++ lib/grnxx/impl/column/scalar/int.cpp    2014-12-25 16:48:52 +0900 (2fc1be0)
@@ -111,7 +111,8 @@ bool Column<Int>::contains(const Datum &datum) const {
 
 Int Column<Int>::find_one(const Datum &datum) const {
   // TODO: Choose the best index.
-  if (!indexes_.is_empty()) {
+  Int value = parse_datum(datum);
+  if (!value.is_na() && !indexes_.is_empty()) {
     return indexes_[0]->find_one(datum);
   }
   return scan(parse_datum(datum));

  Modified: lib/grnxx/impl/column/scalar/text.cpp (+2 -2)
===================================================================
--- lib/grnxx/impl/column/scalar/text.cpp    2014-12-25 16:48:31 +0900 (2524567)
+++ lib/grnxx/impl/column/scalar/text.cpp    2014-12-25 16:48:52 +0900 (cc8855e)
@@ -171,10 +171,10 @@ bool Column<Text>::contains(const Datum &datum) const {
 
 Int Column<Text>::find_one(const Datum &datum) const {
   // TODO: Choose the best index.
-  if (!indexes_.is_empty()) {
+  Text value = parse_datum(datum);
+  if (!value.is_na() && !indexes_.is_empty()) {
     return indexes_[0]->find_one(datum);
   }
-  Text value = parse_datum(datum);
   size_t valid_size = get_valid_size();
   if (value.is_na()) {
     for (size_t i = 0; i < valid_size; ++i) {
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index