[Groonga-commit] groonga/grnxx at 11a7187 [master] Add methods to set sort conditions.

Back to archive index

susumu.yata null+****@clear*****
Wed May 28 15:58:55 JST 2014


susumu.yata	2014-05-28 15:58:55 +0900 (Wed, 28 May 2014)

  New Revision: 11a71875c31566df07087a03f950b117d82987e4
  https://github.com/groonga/grnxx/commit/11a71875c31566df07087a03f950b117d82987e4

  Message:
    Add methods to set sort conditions.

  Modified files:
    new-interface/sorter.hpp

  Modified: new-interface/sorter.hpp (+35 -3)
===================================================================
--- new-interface/sorter.hpp    2014-05-28 15:52:55 +0900 (dd3185d)
+++ new-interface/sorter.hpp    2014-05-28 15:58:55 +0900 (28329e9)
@@ -13,14 +13,46 @@ class Sorter {
   // 所属するテーブルを取得する.
   virtual Table *table() const = 0;
 
+  // TODO: 条件を一気に設定するようにした方が使いやすい可能性がある.
+  //       その場合, Table::create_sorter() で指定することも考慮すべきである.
+
+  // TODO: reverse_order を bool で受け取るよりは,
+  //       enum で受け取る方がわかりやすい.
+
+  // 前提条件を追加する.
+  // 成功すれば true を返す.
+  // 失敗したときは *error にその内容を格納し, false を返す.
+  //
+  // 何らかの条件にしたがって整列済みのときに指定する.
+  // 新しい条件は末尾に追加される.
+  //
+  // 失敗する状況としては,以下のようなものが挙げられる.
+  // - 式の評価結果が大小関係を持たない型になる.
+  // - リソースを確保できない.
+  virtual bool add_precondition(const Expression *expression,
+                                bool reverse_order,
+                                Error *error) const = 0;
+
+  // 整列条件を追加する.
+  // 成功すれば true を返す.
+  // 失敗したときは *error にその内容を格納し, false を返す.
+  //
+  // 新しい条件は末尾に追加されるため,
+  // 優先順位の高い整列条件から順に追加しなければならない.
+  //
+  // 失敗する状況としては,以下のようなものが挙げられる.
+  // - 式の評価結果が大小関係を持たない型になる.
+  // - リソースを確保できない.
+  virtual bool add_condition(const Expression *expression,
+                             bool reverse_order,
+                             Error *error) const = 0;
+
   // 行の一覧を整列する.
   // 成功すれば true を返す.
   // 失敗したときは *error にその内容を格納し, false を返す.
   //
   // 整列の結果が保証されるのは [offset, offset + limit) の範囲である.
-  //
-  // TODO: offset, limit により与えられる境界をまたいで同値が並ぶ場合,
-  //       同値が続く範囲を適切に返すべきである.
+  // なお,行 ID を整列条件に加えれば安定な整列になる.
   //
   // 失敗する状況としては,以下のようなものが挙げられる.
   // - 演算において例外が発生する.
-------------- next part --------------
HTML����������������������������...
Télécharger 



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