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����������������������������...Download