[Groonga-commit] groonga/grnxx at 65127ae [master] Add TODOs.

Back to archive index

susumu.yata null+****@clear*****
Tue May 27 16:24:57 JST 2014


susumu.yata	2014-05-27 16:24:57 +0900 (Tue, 27 May 2014)

  New Revision: 65127aefebf3c55a8980795ea22921a20ddf7a57
  https://github.com/groonga/grnxx/commit/65127aefebf3c55a8980795ea22921a20ddf7a57

  Message:
    Add TODOs.

  Modified files:
    new-interface/column.hpp
    new-interface/expression.hpp
    new-interface/table.hpp

  Modified: new-interface/column.hpp (+2 -0)
===================================================================
--- new-interface/column.hpp    2014-05-27 13:53:46 +0900 (2de98f7)
+++ new-interface/column.hpp    2014-05-27 16:24:57 +0900 (8307cfc)
@@ -109,6 +109,8 @@ class Column {
   //       入力はできなくなってしまう.
   //       何か良い解決法がないか検討する.
   //
+  // TODO: Datum が行 ID と整数を別の型として扱えないか検討する.
+  //
   // 失敗する状況としては,以下のようなものが挙げられる.
   // - 指定された行 ID が有効でない.
   // - 指定された値をカラムの型に変換できない.

  Modified: new-interface/expression.hpp (+4 -4)
===================================================================
--- new-interface/expression.hpp    2014-05-27 13:53:46 +0900 (2392390)
+++ new-interface/expression.hpp    2014-05-27 16:24:57 +0900 (65813b1)
@@ -47,7 +47,7 @@ class Expression {
   // - リソースを確保できない.
   virtual ExpressionNode *create_operator_node(OperatorType operator_type,
                                                Int64 num_args,
-                                               ExpressionNode *args,
+                                               ExpressionNode **args,
                                                Error *error) = 0;
 
   // 行の一覧をフィルタにかける.
@@ -66,9 +66,9 @@ class Expression {
   //  - ゼロによる除算が発生する.
   //  - NaN が発生する.
   //   - TODO: これらの取り扱いについては検討の余地がある.
-  virtual Int64 filter(Int64 num_row_ids,
-                       RowID *row_ids,
-                       Error *error) = 0;
+  virtual int64_t filter(Int64 num_row_ids,
+                         RowID *row_ids,
+                         Error *error) = 0;
 
   // 行の一覧に対する評価結果を取得する.
   // 成功すれば true を返す.

  Modified: new-interface/table.hpp (+25 -2)
===================================================================
--- new-interface/table.hpp    2014-05-27 13:53:46 +0900 (f293583)
+++ new-interface/table.hpp    2014-05-27 16:24:57 +0900 (f57c1d6)
@@ -136,6 +136,11 @@ class Table {
   //       行 ID を降順に取り出すだけで新しい行から順に走査することができる.
   //       時刻カラムに対する索引で対応するより,ずっと効率的である.
   //       ただし,頻繁に削除すると隙間だらけになって効率が落ちる.
+  //       オプションとしてはよさそう.
+  //
+  // TODO: 削除によって行 ID に空きができたとき,前方へと詰めるという案がある.
+  //       ただし,参照されているテーブルについては参照元の修正が必要になる.
+  //       また,行 ID に特別な意味を持たせている場合は問題になる.
   //
   // 失敗する状況としては,以下のようなものが挙げられる.
   // - 指定された ID が行 ID の最小値より小さいか最大値 + 1 より大きい.
@@ -226,8 +231,6 @@ class Table {
   // 返り値は std::unique_ptr なので自動的に delete される.
   // 自動で delete されて困るときは release() で生のポインタを取り出す必要がある.
   //
-  // TODO: Expression のインタフェースを決める.
-  //
   // TODO: 簡易なものでかまわないので,クエリ文字列をパースして式を構築してくれる
   //       インタフェースがあれば何かと便利かもしれない.
   //       テスト用と考えれば,最適化などは一切せず,
@@ -250,6 +253,26 @@ class Table {
   virtual std::unique_ptr<Sorter> create_sorter(
       const SorterOptions &options) const = 0;
 
+  // TODO: Grouper
+  //
+  // 時刻のカラムについて,月や曜日によるグループ化ができると便利である.
+  // 同様に値の範囲(たとえば 100 ずつ)でグループ化ができると便利である.
+  //
+  // グループ単位の集計操作は個別に実装を検討する.
+
+  // TODO: 検索結果の型を決める.
+  //
+  // 行 ID の配列とスコアの配列に分けるのと,
+  // 行 ID とスコアをメンバとする構造体の配列にする案がある.
+
+  // TODO: 検索結果のマージ方法を検討する.
+  //
+  // 全文検索や全走査を使えば行 ID 順となるが,ほかの索引を使ったときは
+  // 別の順序になるかもしれないため,そういうケースへの対策が必要である.
+  // 行 ID 順についても,昇順と降順があることに注意が必要である.
+  //
+  // スコアの合成方法(正規化や加算など)を検討する.
+
  protected:
   Table();
   virtual ~Table();
-------------- next part --------------
HTML����������������������������...
下載 



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