Kouhei Sutou
kou****@clear*****
2015年 9月 16日 (水) 00:22:50 JST
須藤です。 森さんに相談です。 一時テーブルにカラムを追加できるようにする機能は、森さんもあ るといいなぁと言っていたと思いますが、こんな実装はどうでしょ うか? https://github.com/groonga/groonga/pull/401 森さんは、今のDBがカラムも管理している方式よりも、テーブルが カラムを管理する方式がいいんじゃないかと言っていた気がします が、この実装はgrn_ctxがカラムを管理する方式です。。。なので、 DBが管理している方式と同じ方針ということになります。 grn_idに1ビット余っていたのでGRN_OBJ_TMP_COLUMNフラグに使っ て一時カラム(一時テーブルのカラム)というのを表すことにして います。 永続テーブルはdb、 一時オブジェクトはctx->impl->valuesで管理していますが、 一時カラムはctx->impl->temporary_columnsで管理することにしま した。 db.cの変更点が多いのは、idから情報を取得する関数をもろもろ一 時カラムに対応させてみたからです。 基本的には (id & GRN_OBJ_TMP_OBJECT) && (id & GRN_OBJ_TMP_COLUMN) ならctx->impl->temporary_columnsから情報を取得するというコー ドを入れているだけです。 この実装、どう思いますか? -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/