[Groonga-commit] groonga/grnxx at 0a932de [master] Add SorterBuilder.

Back to archive index

susumu.yata null+****@clear*****
Wed Jun 4 10:51:49 JST 2014


susumu.yata	2014-06-04 10:51:49 +0900 (Wed, 04 Jun 2014)

  New Revision: 0a932de76cb2e9e1a5d9094349d9e79f9763ae12
  https://github.com/groonga/grnxx/commit/0a932de76cb2e9e1a5d9094349d9e79f9763ae12

  Message:
    Add SorterBuilder.

  Copied files:
    new-interface/sorter-builder.hpp
      (from new-interface/sorter.hpp)
  Modified files:
    new-interface/sorter.hpp

  Copied: new-interface/sorter-builder.hpp (+7 -13) 74%
===================================================================
--- new-interface/sorter.hpp    2014-06-04 10:51:03 +0900 (03f60bc)
+++ new-interface/sorter-builder.hpp    2014-06-04 10:51:49 +0900 (94c94fc)
@@ -18,9 +18,6 @@ class Sorter {
   // 所属するテーブルを取得する.
   virtual Table *table() const = 0;
 
-  // TODO: 条件を一気に設定するようにした方が使いやすい可能性がある.
-  //       その場合, Table::create_sorter() で指定することも考慮すべきである.
-
   // 前提条件を追加する.
   // 成功すれば true を返す.
   // 失敗したときは *error にその内容を格納し, false を返す.
@@ -49,19 +46,16 @@ class Sorter {
                              SortOrder order,
                              Error *error) const = 0;
 
-  // 行の一覧を整列する.
-  // 成功すれば true を返す.
-  // 失敗したときは *error にその内容を格納し, false を返す.
-  //
-  // 整列の結果が保証されるのは [offset, offset + limit) の範囲である.
-  // なお,行 ID を整列条件に加えれば安定な整列になる.
+  // すべての条件を破棄する.
+  virtual void clear();
+
+  // 指定された条件に対応する整列器を作成する.
+  // 成功すれば有効なオブジェクトへのポインタを返す.
+  // 失敗したときは *error にその内容を格納し, nullptr を返す.
   //
   // 失敗する状況としては,以下のようなものが挙げられる.
-  // - 演算において例外が発生する.
   // - リソースを確保できない.
-  virtual bool sort(int64_t num_row_ids, RowID *row_ids,
-                    int64_t offset, int64_t limit,
-                    Error *error);
+  virtual std::unique_ptr<Sorter> create_sorter(Error *error) const;
 };
 
 }  // namespace grnxx

  Modified: new-interface/sorter.hpp (+0 -36)
===================================================================
--- new-interface/sorter.hpp    2014-06-04 10:51:03 +0900 (03f60bc)
+++ new-interface/sorter.hpp    2014-06-04 10:51:49 +0900 (4419c20)
@@ -5,11 +5,6 @@
 
 namespace grnxx {
 
-enum SortOrder {
-  ASCENDING_ORDER,
-  DESCENDING_ORDER
-};
-
 class Sorter {
  public:
   Sorter();
@@ -18,37 +13,6 @@ class Sorter {
   // 所属するテーブルを取得する.
   virtual Table *table() const = 0;
 
-  // TODO: 条件を一気に設定するようにした方が使いやすい可能性がある.
-  //       その場合, Table::create_sorter() で指定することも考慮すべきである.
-
-  // 前提条件を追加する.
-  // 成功すれば true を返す.
-  // 失敗したときは *error にその内容を格納し, false を返す.
-  //
-  // 何らかの条件にしたがって整列済みのときに指定する.
-  // 新しい条件は末尾に追加される.
-  //
-  // 失敗する状況としては,以下のようなものが挙げられる.
-  // - 式の評価結果が大小関係を持たない型になる.
-  // - リソースを確保できない.
-  virtual bool add_precondition(const Expression *expression,
-                                SortOrder order,
-                                Error *error) const = 0;
-
-  // 整列条件を追加する.
-  // 成功すれば true を返す.
-  // 失敗したときは *error にその内容を格納し, false を返す.
-  //
-  // 新しい条件は末尾に追加されるため,
-  // 優先順位の高い整列条件から順に追加しなければならない.
-  //
-  // 失敗する状況としては,以下のようなものが挙げられる.
-  // - 式の評価結果が大小関係を持たない型になる.
-  // - リソースを確保できない.
-  virtual bool add_condition(const Expression *expression,
-                             SortOrder order,
-                             Error *error) const = 0;
-
   // 行の一覧を整列する.
   // 成功すれば true を返す.
   // 失敗したときは *error にその内容を格納し, false を返す.
-------------- next part --------------
HTML����������������������������...
Download 



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