[Groonga-commit] groonga/grnxx at caa4b3d [new_data_types] Enable Index. (#121)

Back to archive index

susumu.yata null+****@clear*****
Fri Nov 28 15:59:44 JST 2014


susumu.yata	2014-11-28 15:59:44 +0900 (Fri, 28 Nov 2014)

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

  Message:
    Enable Index. (#121)

  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 (+17 -17)
===================================================================
--- lib/grnxx/impl/column/scalar/float.cpp    2014-11-28 15:12:10 +0900 (1cac125)
+++ lib/grnxx/impl/column/scalar/float.cpp    2014-11-28 15:59:44 +0900 (3ecb23c)
@@ -28,24 +28,24 @@ void Column<Float>::set(Int row_id, const Datum &datum) {
     return;
   }
   if (!old_value.is_na()) {
-    // TODO: Remove the old value from indexes.
-//    for (size_t i = 0; i < num_indexes(); ++i) {
-//      indexes_[i]->remove(row_id, old_value);
-//    }
+    // Remove the old value from indexes.
+    for (size_t i = 0; i < num_indexes(); ++i) {
+      indexes_[i]->remove(row_id, old_value);
+    }
   }
   size_t value_id = row_id.raw();
   if (value_id >= values_.size()) {
     values_.resize(value_id + 1, Float::na());
   }
-  // TODO: Insert the new value into indexes.
-//  for (size_t i = 0; i < num_indexes(); ++i) try {
-//    indexes_[i]->insert(row_id, datum)) {
-//  } catch (...) {
-//    for (size_t j = 0; j < i; ++i) {
-//      indexes_[j]->remove(row_id, datum);
-//    }
-//    throw;
-//  }
+  // Insert the new value into indexes.
+  for (size_t i = 0; i < num_indexes(); ++i) try {
+    indexes_[i]->insert(row_id, datum);
+  } catch (...) {
+    for (size_t j = 0; j < i; ++i) {
+      indexes_[j]->remove(row_id, datum);
+    }
+    throw;
+  }
   values_[value_id] = new_value;
 }
 
@@ -101,10 +101,10 @@ Int Column<Float>::find_one(const Datum &datum) const {
 void Column<Float>::unset(Int row_id) {
   Float value = get(row_id);
   if (!value.is_na()) {
-    // TODO: Update indexes if exist.
-//    for (size_t i = 0; i < num_indexes(); ++i) {
-//      indexes_[i]->remove(row_id, value);
-//    }
+    // Update indexes if exist.
+    for (size_t i = 0; i < num_indexes(); ++i) {
+      indexes_[i]->remove(row_id, value);
+    }
     values_[row_id.raw()] = Float::na();
   }
 }

  Modified: lib/grnxx/impl/column/scalar/int.cpp (+26 -27)
===================================================================
--- lib/grnxx/impl/column/scalar/int.cpp    2014-11-28 15:12:10 +0900 (b4afacc)
+++ lib/grnxx/impl/column/scalar/int.cpp    2014-11-28 15:59:44 +0900 (a000dbd)
@@ -51,24 +51,24 @@ void Column<Int>::set(Int row_id, const Datum &datum) {
     throw "Key already exists";  // TODO
   }
   if (!old_value.is_na()) {
-    // TODO: Remove the old value from indexes.
-//    for (size_t i = 0; i < num_indexes(); ++i) {
-//      indexes_[i]->remove(row_id, old_value);
-//    }
+    // Remove the old value from indexes.
+    for (size_t i = 0; i < num_indexes(); ++i) {
+      indexes_[i]->remove(row_id, old_value);
+    }
   }
   size_t value_id = row_id.raw();
   if (value_id >= values_.size()) {
     values_.resize(value_id + 1, Int::na());
   }
-  // TODO: Insert the new value into indexes.
-//  for (size_t i = 0; i < num_indexes(); ++i) try {
-//    indexes_[i]->insert(row_id, datum)) {
-//  } catch (...) {
-//    for (size_t j = 0; j < i; ++i) {
-//      indexes_[j]->remove(row_id, datum);
-//    }
-//    throw;
-//  }
+  // Insert the new value into indexes.
+  for (size_t i = 0; i < num_indexes(); ++i) try {
+    indexes_[i]->insert(row_id, datum);
+  } catch (...) {
+    for (size_t j = 0; j < i; ++i) {
+      indexes_[j]->remove(row_id, datum);
+    }
+    throw;
+  }
   values_[value_id] = new_value;
 }
 
@@ -193,27 +193,26 @@ void Column<Int>::set_key(Int row_id, const Datum &key) {
   if (value_id >= values_.size()) {
     values_.resize(value_id + 1, Int::na());
   }
-  // TODO: N/A is not available.
   Int value = parse_datum(key);
-  // TODO: Update indexes if exist.
-//  for (size_t i = 0; i < num_indexes(); ++i) try {
-//    indexes_[i]->insert(row_id, value);
-//  } catch (...) {
-//    for (size_t j = 0; j < i; ++j) {
-//      indexes_[j]->remove(row_id, value);
-//    }
-//    throw;
-//  }
+  // Update indexes if exist.
+  for (size_t i = 0; i < num_indexes(); ++i) try {
+    indexes_[i]->insert(row_id, value);
+  } catch (...) {
+    for (size_t j = 0; j < i; ++j) {
+      indexes_[j]->remove(row_id, value);
+    }
+    throw;
+  }
   values_[value_id] = value;
 }
 
 void Column<Int>::unset(Int row_id) {
   Int value = get(row_id);
   if (!value.is_na()) {
-    // TODO: Update indexes if exist.
-//    for (size_t i = 0; i < num_indexes(); ++i) {
-//      indexes_[i]->remove(row_id, value);
-//    }
+    // Update indexes if exist.
+    for (size_t i = 0; i < num_indexes(); ++i) {
+      indexes_[i]->remove(row_id, value);
+    }
     values_[row_id.raw()] = Int::na();
   }
 }

  Modified: lib/grnxx/impl/column/scalar/text.cpp (+26 -27)
===================================================================
--- lib/grnxx/impl/column/scalar/text.cpp    2014-11-28 15:12:10 +0900 (ac142af)
+++ lib/grnxx/impl/column/scalar/text.cpp    2014-11-28 15:59:44 +0900 (07dd118)
@@ -41,24 +41,24 @@ void Column<Text>::set(Int row_id, const Datum &datum) {
     throw "Key already exists";  // TODO
   }
   if (!old_value.is_na()) {
-    // TODO: Remove the old value from indexes.
-//    for (size_t i = 0; i < num_indexes(); ++i) {
-//      indexes_[i]->remove(row_id, old_value);
-//    }
+    // Remove the old value from indexes.
+    for (size_t i = 0; i < num_indexes(); ++i) {
+      indexes_[i]->remove(row_id, old_value);
+    }
   }
   size_t value_id = row_id.raw();
   if (value_id >= headers_.size()) {
     headers_.resize(value_id + 1, na_header());
   }
-  // TODO: Insert the new value into indexes.
-//  for (size_t i = 0; i < num_indexes(); ++i) try {
-//    indexes_[i]->insert(row_id, datum)) {
-//  } catch (...) {
-//    for (size_t j = 0; j < i; ++i) {
-//      indexes_[j]->remove(row_id, datum);
-//    }
-//    throw;
-//  }
+  // Insert the new value into indexes.
+  for (size_t i = 0; i < num_indexes(); ++i) try {
+    indexes_[i]->insert(row_id, datum);
+  } catch (...) {
+    for (size_t j = 0; j < i; ++i) {
+      indexes_[j]->remove(row_id, datum);
+    }
+    throw;
+  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
   size_t size = new_value.raw_size();
@@ -303,17 +303,16 @@ void Column<Text>::set_key(Int row_id, const Datum &key) {
   if (value_id >= headers_.size()) {
     headers_.resize(value_id + 1, na_header());
   }
-  // TODO: N/A is not available.
   Text value = parse_datum(key);
-  // TODO: Update indexes if exist.
-//  for (size_t i = 0; i < num_indexes(); ++i) try {
-//    indexes_[i]->insert(row_id, value);
-//  } catch (...) {
-//    for (size_t j = 0; j < i; ++j) {
-//      indexes_[j]->remove(row_id, value);
-//    }
-//    throw;
-//  }
+  // Update indexes if exist.
+  for (size_t i = 0; i < num_indexes(); ++i) try {
+    indexes_[i]->insert(row_id, value);
+  } catch (...) {
+    for (size_t j = 0; j < i; ++j) {
+      indexes_[j]->remove(row_id, value);
+    }
+    throw;
+  }
   // TODO: Error handling.
   size_t offset = bodies_.size();
   size_t size = value.raw_size();
@@ -388,10 +387,10 @@ void Column<Text>::set_key(Int row_id, const Datum &key) {
 void Column<Text>::unset(Int row_id) {
   Text value = get(row_id);
   if (!value.is_na()) {
-    // TODO: Update indexes if exist.
-//    for (size_t i = 0; i < num_indexes(); ++i) {
-//      indexes_[i]->remove(row_id, value);
-//    }
+    // Update indexes if exist.
+    for (size_t i = 0; i < num_indexes(); ++i) {
+      indexes_[i]->remove(row_id, value);
+    }
     headers_[row_id.raw()] = na_header();
   }
 }
-------------- next part --------------
HTML����������������������������...
下載 



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