rroonga 2.0.5 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/Rakefile +5 -1
  2. data/ext/groonga/extconf.rb +36 -4
  3. data/ext/groonga/rb-grn-accessor.c +8 -10
  4. data/ext/groonga/rb-grn-array-cursor.c +2 -2
  5. data/ext/groonga/rb-grn-array.c +35 -59
  6. data/ext/groonga/rb-grn-column.c +105 -192
  7. data/ext/groonga/rb-grn-context.c +60 -63
  8. data/ext/groonga/rb-grn-database.c +27 -37
  9. data/ext/groonga/rb-grn-double-array-trie-cursor.c +3 -3
  10. data/ext/groonga/rb-grn-double-array-trie.c +75 -126
  11. data/ext/groonga/rb-grn-encoding.c +27 -27
  12. data/ext/groonga/rb-grn-expression.c +29 -24
  13. data/ext/groonga/rb-grn-fix-size-column.c +7 -9
  14. data/ext/groonga/rb-grn-hash-cursor.c +3 -3
  15. data/ext/groonga/rb-grn-hash.c +57 -108
  16. data/ext/groonga/rb-grn-index-column.c +17 -29
  17. data/ext/groonga/rb-grn-logger.c +11 -14
  18. data/ext/groonga/rb-grn-object.c +51 -94
  19. data/ext/groonga/rb-grn-patricia-trie-cursor.c +2 -2
  20. data/ext/groonga/rb-grn-patricia-trie.c +161 -276
  21. data/ext/groonga/rb-grn-plugin.c +6 -10
  22. data/ext/groonga/rb-grn-table-cursor.c +14 -21
  23. data/ext/groonga/rb-grn-table-key-support.c +32 -35
  24. data/ext/groonga/rb-grn-table.c +149 -252
  25. data/ext/groonga/rb-grn-variable.c +6 -7
  26. data/ext/groonga/rb-grn-view-accessor.c +1 -1
  27. data/ext/groonga/rb-grn-view-cursor.c +2 -2
  28. data/ext/groonga/rb-grn-view.c +28 -45
  29. data/ext/groonga/rb-grn.h +1 -1
  30. data/ext/groonga/rb-groonga.c +6 -6
  31. data/lib/groonga/database.rb +1 -1
  32. data/lib/groonga/dumper.rb +109 -33
  33. data/lib/groonga/expression-builder.rb +24 -0
  34. data/lib/groonga/pagination.rb +30 -24
  35. data/lib/groonga/record.rb +21 -18
  36. data/lib/groonga/schema.rb +156 -140
  37. data/test/test-command-select.rb +66 -1
  38. data/test/test-database-dumper.rb +50 -10
  39. data/test/test-expression-builder.rb +41 -0
  40. metadata +4 -4
data/Rakefile CHANGED
@@ -164,7 +164,11 @@ Rake::ExtensionTask.new("groonga", spec) do |ext|
164
164
  end
165
165
 
166
166
  file "Makefile" => ["extconf.rb", "ext/groonga/extconf.rb"] do
167
- ruby("extconf.rb")
167
+ extconf_args = []
168
+ if ENV["TRAVIS"]
169
+ extconf_args << "--enable-debug-build"
170
+ end
171
+ ruby("extconf.rb", *extconf_args)
168
172
  end
169
173
 
170
174
  desc "Configure"
@@ -215,13 +215,45 @@ have_header("ruby/st.h") unless have_macro("HAVE_RUBY_ST_H", "ruby.h")
215
215
  have_func("rb_errinfo", "ruby.h")
216
216
  have_type("enum ruby_value_type", "ruby.h")
217
217
 
218
- checking_for(checking_message("debug flag")) do
219
- debug = with_config("debug")
220
- if debug
218
+ checking_for(checking_message("--enable-debug-log option")) do
219
+ enable_debug_log = enable_config("debug-log", false)
220
+ if enable_debug_log
221
221
  debug_flag = "-DRB_GRN_DEBUG"
222
222
  $defs << debug_flag unless $defs.include?(debug_flag)
223
223
  end
224
- debug
224
+ enable_debug_log
225
+ end
226
+
227
+ def gcc?
228
+ CONFIG["GCC"] == "yes"
229
+ end
230
+
231
+ def disable_optimization_build_flag(flags)
232
+ if gcc?
233
+ flags.gsub(/(^|\s)?-O\d(\s|$)?/, '\\1-O0\\2')
234
+ else
235
+ flags
236
+ end
237
+ end
238
+
239
+ def enable_debug_build_flag(flags)
240
+ if gcc?
241
+ flags.gsub(/(^|\s)?-g\d?(\s|$)?/, '\\1-ggdb3\\2')
242
+ else
243
+ flags
244
+ end
245
+ end
246
+
247
+ checking_for(checking_message("--enable-debug-build option")) do
248
+ enable_debug_build = enable_config("debug-build", false)
249
+ if enable_debug_build
250
+ $CFLAGS = disable_optimization_build_flag($CFLAGS)
251
+ $CFLAGS = enable_debug_build_flag($CFLAGS)
252
+
253
+ CONFIG["CXXFLAGS"] = disable_optimization_build_flag(CONFIG["CXXFLAGS"])
254
+ CONFIG["CXXFLAGS"] = enable_debug_build_flag(CONFIG["CXXFLAGS"])
255
+ end
256
+ enable_debug_build
225
257
  end
226
258
 
227
259
  if ENV["INSTALL_RB"] == "yes"
@@ -74,17 +74,15 @@ rb_grn_accessor_finalizer (grn_ctx *context, grn_obj *grn_object,
74
74
  }
75
75
 
76
76
  /*
77
- * call-seq:
78
- * accessor.local_name
79
- *
80
77
  * アクセサ名を返す。
81
78
  *
82
- * <pre>
83
- * items = Groonga::Array.create(:name => "Items")
84
- * id = items.column("_id")
85
- * id.name # => nil
86
- * id.local_name # => "_id"
87
- * </pre>
79
+ * @overload local_name
80
+ *
81
+ * @example
82
+ * items = Groonga::Array.create(:name => "Items")
83
+ * id = items.column("_id")
84
+ * id.name # => nil
85
+ * id.local_name # => "_id"
88
86
  */
89
87
  static VALUE
90
88
  rb_grn_accessor_get_local_name (VALUE self)
@@ -105,7 +103,7 @@ rb_grn_accessor_get_local_name (VALUE self)
105
103
  * Document-class: Groonga::Accessor < Groonga::Object
106
104
  *
107
105
  * キー、値、スコアなど種々の値へのアクセスをカプセル化した
108
- * オブジェクト。Groonga::Table#columnで取得できる。
106
+ * オブジェクト。 {Groonga::Table#column} で取得できる。
109
107
  */
110
108
  void
111
109
  rb_grn_init_accessor (VALUE mGrn)
@@ -23,8 +23,8 @@ VALUE rb_cGrnArrayCursor;
23
23
  /*
24
24
  * Document-class: Groonga::ArrayCursor < Groonga::TableCursor
25
25
  *
26
- * Groonga::Arrayに登録されているレコードを順番に取り出すため
27
- * のオブジェクト。利用できるメソッドはGroonga::TableCursorを
26
+ * {Groonga::Array} に登録されているレコードを順番に取り出すため
27
+ * のオブジェクト。利用できるメソッドは {Groonga::TableCursor}
28
28
  * 参照。
29
29
  */
30
30
 
@@ -50,62 +50,38 @@ VALUE rb_cGrnArray;
50
50
  *
51
51
  * @overload create(options={})
52
52
  * @return [Groonga::Array]
53
- * @param [::Hash] options The name and value
54
- * pairs. Omitted names are initialized as the default value.
55
- * @option options [Groonga::Context] :context (Groonga::Context.default)
56
- * テーブルが利用するGroonga::Context
57
- * @option options :name The name
58
- * テーブルの名前。名前をつけると、Groonga::Context#[]に名
59
- * 前を指定してテーブルを取得することができる。省略すると
60
- * 無名テーブルになり、テーブルIDでのみ取得できる。
61
- * @option options :path
62
- * テーブルを保存するパス。パスを指定すると永続テーブルとな
63
- * り、プロセス終了後もレコードは保持される。次回起動時に
64
- * Groonga::Context#[]で保存されたレコードを利用することが
65
- * できる。省略すると一時テーブルになり、プロセスが終了する
66
- * とレコードは破棄される。
67
- * @option options :persistent
68
- * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
69
- * 場合は自動的にパスが付加される。 +:context+ で指定した
70
- * Groonga::Contextに結びついているデータベースが一時デー
71
- * タベースの場合は例外が発生する。
72
- * @option options :value_type (nil)
73
- * 値の型を指定する。省略すると値のための領域を確保しない。
74
- * 値を保存したい場合は必ず指定すること。
75
- * 参考: Groonga::Type.new
76
- * @option options [Groonga::Record#n_sub_records] :sub_records
77
- * +true+ を指定すると#groupでグループ化したときに、
78
- * Groonga::Record#n_sub_recordsでグループに含まれるレコー
79
- * ドの件数を取得できる。
53
+ * @!macro [new] array.create.options
54
+ * @param [::Hash] options The name and value
55
+ * pairs. Omitted names are initialized as the default value.
56
+ * @option options [Groonga::Context] :context (Groonga::Context.default)
57
+ * テーブルが利用する {Groonga::Context}
58
+ * @option options :name The name
59
+ * テーブルの名前。名前をつけると、 {Groonga::Context#[]} に名
60
+ * 前を指定してテーブルを取得することができる。省略すると
61
+ * 無名テーブルになり、テーブルIDでのみ取得できる。
62
+ * @option options :path
63
+ * テーブルを保存するパス。パスを指定すると永続テーブルとな
64
+ * り、プロセス終了後もレコードは保持される。次回起動時に
65
+ * {Groonga::Context#[]} で保存されたレコードを利用することが
66
+ * できる。省略すると一時テーブルになり、プロセスが終了する
67
+ * とレコードは破棄される。
68
+ * @option options :persistent
69
+ * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
70
+ * 場合は自動的にパスが付加される。 +:context+ で指定した
71
+ * {Groonga::Context} に結びついているデータベースが一時デー
72
+ * タベースの場合は例外が発生する。
73
+ * @option options :value_type (nil)
74
+ * 値の型を指定する。省略すると値のための領域を確保しない。
75
+ * 値を保存したい場合は必ず指定すること。
76
+ * 参考: {Groonga::Type.new}
77
+ * @option options [Groonga::Record#n_sub_records] :sub_records
78
+ * +true+ を指定すると {#group} でグループ化したときに、
79
+ * {Groonga::Record#n_sub_records} でグループに含まれるレコー
80
+ * ドの件数を取得できる。
81
+ * @!macro array.create.options
80
82
  * @overload create(options={})
81
83
  * @yield [table] 生成されたテーブル。ブロックを抜けると破棄される。
82
- * @param [::Hash] options The name and value
83
- * pairs. Omitted names are initialized as the default value.
84
- * @option options [Groonga::Context] :context (Groonga::Context.default)
85
- * テーブルが利用するGroonga::Context
86
- * @option options :name
87
- * テーブルの名前。名前をつけると、Groonga::Context#[]に名
88
- * 前を指定してテーブルを取得することができる。省略すると
89
- * 無名テーブルになり、テーブルIDでのみ取得できる。
90
- * @option options :path
91
- * テーブルを保存するパス。パスを指定すると永続テーブルとな
92
- * り、プロセス終了後もレコードは保持される。次回起動時に
93
- * Groonga::Context#[]で保存されたレコードを利用することが
94
- * できる。省略すると一時テーブルになり、プロセスが終了する
95
- * とレコードは破棄される。
96
- * @option options :persistent
97
- * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
98
- * 場合は自動的にパスが付加される。 +:context+ で指定した
99
- * Groonga::Contextに結びついているデータベースが一時デー
100
- * タベースの場合は例外が発生する。
101
- * @option options :value_type (nil)
102
- * 値の型を指定する。省略すると値のための領域を確保しない。
103
- * 値を保存したい場合は必ず指定すること。
104
- * 参考: Groonga::Type.new
105
- * @option options [Groonga::Record#n_sub_records] :sub_records
106
- * +true+ を指定すると#groupでグループ化したときに、
107
- * Groonga::Record#n_sub_recordsでグループに含まれるレコー
108
- * ドの件数を取得できる。
84
+ * @!macro array.create.options
109
85
  */
110
86
  static VALUE
111
87
  rb_grn_array_s_create (int argc, VALUE *argv, VALUE klass)
@@ -167,16 +143,13 @@ rb_grn_array_s_create (int argc, VALUE *argv, VALUE klass)
167
143
  }
168
144
 
169
145
  /*
170
- * call-seq:
171
- * array.add(values=nil) -> Groonga::Recordまたはnil
172
- *
173
146
  * レコード追加し、追加したレコードを返す。レコードの追加に失
174
147
  * 敗した場合は +nil+ を返す。
175
148
  *
176
149
  * _values_ にはレコードのカラムに設定する値を指定する。省略
177
150
  * した場合または +nil+ を指定した場合はカラムは設定しない。カ
178
- * ラムの値は<tt>{:カラム名1 => 値1, :カラム名2 => 値2,
179
- * ...}</tt>と指定する。
151
+ * ラムの値は @{:カラム名1 => 値1, :カラム名2 => 値2,
152
+ * ...}@ と指定する。
180
153
  *
181
154
  * @example
182
155
  * #以下のようなユーザを格納するGroonga::Arrayが
@@ -193,6 +166,9 @@ rb_grn_array_s_create (int argc, VALUE *argv, VALUE klass)
193
166
  * #gunyara-kunユーザを追加する。
194
167
  * gunyara_kun = users.add(:name => "gunyara-kun",
195
168
  * :uri => "http://d.hatena.ne.jp/tasukuchan/")
169
+ * @overload add(values=nil)
170
+ * @return [Groonga::Recordまたはnil]
171
+ *
196
172
  */
197
173
  static VALUE
198
174
  rb_grn_array_add (int argc, VALUE *argv, VALUE self)
@@ -31,13 +31,14 @@ VALUE rb_cGrnColumn;
31
31
  * 加することができる。
32
32
  *
33
33
  * カラムには大きく分けて3種類ある。
34
- * [Groonga::FixSizeColumn]
35
- * 固定長のデータを格納するカラム。
36
- * [Groonga::VariableSizeColumn]
37
- * 可変長のデータを格納するカラム。
38
- * [Groonga::IndexColumn]
34
+ *
35
+ * - {Groonga::FixSizeColumn} :=
36
+ * 固定長のデータを格納するカラム。 =:
37
+ * - {Groonga::VariableSizeColumn} :=
38
+ * 可変長のデータを格納するカラム。 =:
39
+ * - {Groonga::IndexColumn} :=
39
40
  * 転置インデックスを格納するカラム。全文検索や参照元レコー
40
- * ドの検索を行う場合はこのカラムを使用する。
41
+ * ドの検索を行う場合はこのカラムを使用する。 =:
41
42
  *
42
43
  * 固定長データ用カラム・可変長データ用カラムは1つのデータだ
43
44
  * けを格納するか複数のデータを格納するかを選ぶことができる。
@@ -110,10 +111,10 @@ rb_grn_column_deconstruct (RbGrnColumn *rb_column,
110
111
  }
111
112
 
112
113
  /*
113
- * call-seq:
114
- * column.table -> Groonga::Table
115
- *
116
114
  * カラムが所属するテーブルを返す。
115
+ *
116
+ * @overload table
117
+ * @return [Groonga::Table]
117
118
  */
118
119
  static VALUE
119
120
  rb_grn_column_get_table (VALUE self)
@@ -132,14 +133,14 @@ rb_grn_column_get_table (VALUE self)
132
133
  }
133
134
 
134
135
  /*
135
- * call-seq:
136
- * column.local_name
137
- *
138
- * @example テーブル名を除いたカラム名を返す。
136
+ * テーブル名を除いたカラム名を返す。
137
+ * @example
139
138
  * items = Groonga::Array.create(:name => "Items")
140
139
  * title = items.define_column("title", "ShortText")
141
140
  * title.name # => "Items.title"
142
141
  * title.local_name # => "title"
142
+ *
143
+ * @overload local_name
143
144
  */
144
145
  static VALUE
145
146
  rb_grn_column_get_local_name (VALUE self)
@@ -171,8 +172,8 @@ rb_grn_column_get_local_name (VALUE self)
171
172
  * カラムが所属するテーブルからブロックまたは文字列で指定し
172
173
  * た条件にマッチするレコードを返す。返されたテーブルには
173
174
  * +expression+ という特異メソッドがあり、指定した条件を表し
174
- * ているGroonga::Expressionを取得できる。
175
- * Groonga::Expression#snippetを使うことにより、指定した条件
175
+ * ている {Groonga::Expression} を取得できる。
176
+ * {Groonga::Expression#snippet} を使うことにより、指定した条件
176
177
  * 用のスニペットを簡単に生成できる。
177
178
  *
178
179
  * bc. !!!ruby
@@ -190,62 +191,85 @@ rb_grn_column_get_local_name (VALUE self)
190
191
  * end
191
192
  *
192
193
  * 出力例
194
+ *
193
195
  * <pre>
194
- * rroongaの説明文の中で「groonga」が含まれる部分
195
- * ---
196
- * rroongaは<em>groonga</em>のいわゆるDB-APIの層の...
197
- * ---
196
+ * !!!text
197
+ * rroongaの説明文の中で「groonga」が含まれる部分
198
+ * ---
199
+ * rroongaは<em>groonga</em>のいわゆるDB-APIの層の...
200
+ * ---
201
+ * </pre>
198
202
  *
199
203
  * @return [Groonga::Hash] 検索結果
200
204
  * @overload select(options)
201
205
  * @yieldparam [Groonga::Record] record
202
- * @param [::Hash] options The name and value
203
- * pairs. Omitted names are initialized as the default value.
204
- * @option options :operator (Groonga::Operator::OR)
205
- * マッチしたレコードをどのように扱うか。指定可能な値は以
206
- * 下の通り。
206
+ * 検索条件を指定するのに、 _record_ に対して次のメソッドを使って検索条
207
+ * 件を指定できます。
208
+ *
209
+ * @==@ 、 @=~@ 、 @<@ 、 @<=@ 、 @>@ 、 @>=@ 、 @+@ 、 @-@ 、
210
+ * @*@ 、 @/@ 、 @%@ 、
211
+ * @match(query, :syntax => :query/:script, &block)@
212
+ * ( _query_ に指定した
213
+ * "grn_expr":http://groonga.org/ja/docs/reference/grn_expr.html
214
+ * とのマッチ)、
215
+ * @similar_search(text)@ ( _text_ との類似文書探索)、
216
+ * @term_extract(text)@ ( _text_ 内から _record_ の単語を抽出)
207
217
  *
208
- * [Groonga::Operator::OR]
209
- * マッチしたレコードを追加。すでにレコードが追加され
210
- * ている場合は何もしない。
211
- * [Groonga::Operator::AND]
212
- * マッチしたレコードのスコアを増加。マッチしなかった
213
- * レコードを削除。
214
- * [Groonga::Operator::BUT]
215
- * マッチしたレコードを削除。
216
- * [Groonga::Operator::ADJUST]
217
- * マッチしたレコードのスコアを増加。
218
+ * @!macro [new] column.select.options
219
+ * @param [::Hash] options The name and value
220
+ * pairs. Omitted names are initialized as the default value.
221
+ * @option options :operator (Groonga::Operator::OR)
222
+ * マッチしたレコードをどのように扱うか。指定可能な値は以
223
+ * 下の通り。
218
224
  *
219
- * @option options :result
220
- * 検索結果を格納するテーブル。マッチしたレコードが追加さ
221
- * れていく。省略した場合は新しくテーブルを作成して返す。
225
+ * - Groonga::Operator::OR :=
226
+ * マッチしたレコードを追加。すでにレコードが追加され
227
+ * ている場合は何もしない。 =:
228
+ * - Groonga::Operator::AND :=
229
+ * マッチしたレコードのスコアを増加。マッチしなかった
230
+ * レコードを削除。 =:
231
+ * - Groonga::Operator::BUT :=
232
+ * マッチしたレコードを削除。 =:
233
+ * - Groonga::Operator::ADJUST :=
234
+ * マッチしたレコードのスコアを増加。 =:
222
235
  *
223
- * @option options :name
224
- * 条件の名前。省略した場合は名前を付けない。
236
+ * @option options :result
237
+ * 検索結果を格納するテーブル。マッチしたレコードが追加さ
238
+ * れていく。省略した場合は新しくテーブルを作成して返す。
225
239
  *
226
- * @option options :syntax (:query)
227
- * _query_ の構文。
240
+ * @option options :name
241
+ * 条件の名前。省略した場合は名前を付けない。
228
242
  *
229
- * 参考: Groonga::Expression#parse.
243
+ * @option options :syntax (:query)
244
+ * _query_ の構文。
230
245
  *
231
- * @option options :allow_pragma
232
- * query構文時にプラグマを利用するかどうか。省略した場合は
233
- * 利用する。
246
+ * 参考: {Groonga::Expression#parse} .
234
247
  *
235
- * 参考: Groonga::Expression#parse.
248
+ * @option options :allow_pragma
249
+ * query構文時にプラグマを利用するかどうか。省略した場合は
250
+ * 利用する。
236
251
  *
237
- * @option options :allow_column The allow_column
238
- * query構文時にカラム指定を利用するかどうか。省略した場合
239
- * は利用する。
252
+ * 参考: {Groonga::Expression#parse} .
240
253
  *
241
- * 参考: Groonga::Expression#parse.
254
+ * @option options :allow_column The allow_column
255
+ * query構文時にカラム指定を利用するかどうか。省略した場合
256
+ * は利用する。
242
257
  *
243
- * @option options :allow_update
244
- * script構文時に更新操作を利用するかどうか。省略した場合
245
- * は利用する。
258
+ * 参考: {Groonga::Expression#parse} .
246
259
  *
247
- * 参考: Groonga::Expression#parse.
260
+ * @option options :allow_update
261
+ * script構文時に更新操作を利用するかどうか。省略した場合
262
+ * は利用する。
248
263
  *
264
+ * 参考: {Groonga::Expression#parse} .
265
+ *
266
+ * @option options :allow_leading_not
267
+ * 指定語句の先頭に-を付けることで指定した語句を含まないレコードの
268
+ * 検索を有効にするかどうかを指定する。省略した場合は無効にする。
269
+ *
270
+ * 参考: {Groonga::Expression#parse} .
271
+ *
272
+ * @!macro column.select.options
249
273
  * @overload select(query, options)
250
274
  * @param [String] query 条件の指定
251
275
  * _query_ には「[カラム名]:[演算子][値]」という書式で条件を
@@ -269,107 +293,11 @@ rb_grn_column_get_local_name (VALUE self)
269
293
  * _column_ カラムが属しているテーブルの @"description"@ カラムが
270
294
  * @"groonga"@ を含んでいるレコードにマッチ =:
271
295
  *
272
- * @param [::Hash] options The name and value
273
- * pairs. Omitted names are initialized as the default value.
274
- * @option options :operator (Groonga::Operator::OR)
275
- * マッチしたレコードをどのように扱うか。指定可能な値は以
276
- * 下の通り。
277
- *
278
- * [Groonga::Operator::OR]
279
- * マッチしたレコードを追加。すでにレコードが追加され
280
- * ている場合は何もしない。
281
- * [Groonga::Operator::AND]
282
- * マッチしたレコードのスコアを増加。マッチしなかった
283
- * レコードを削除。
284
- * [Groonga::Operator::BUT]
285
- * マッチしたレコードを削除。
286
- * [Groonga::Operator::ADJUST]
287
- * マッチしたレコードのスコアを増加。
288
- *
289
- * @option options :result
290
- * 検索結果を格納するテーブル。マッチしたレコードが追加さ
291
- * れていく。省略した場合は新しくテーブルを作成して返す。
292
- *
293
- * @option options :name
294
- * 条件の名前。省略した場合は名前を付けない。
295
- *
296
- * @option options :syntax (:query)
297
- * _query_ の構文。
298
- *
299
- * 参考: Groonga::Expression#parse.
300
- *
301
- * @option options :allow_pragma
302
- * query構文時にプラグマを利用するかどうか。省略した場合は
303
- * 利用する。
304
- *
305
- * 参考: Groonga::Expression#parse.
306
- *
307
- * @option options :allow_column The allow_column
308
- * query構文時にカラム指定を利用するかどうか。省略した場合
309
- * は利用する。
310
- *
311
- * 参考: Groonga::Expression#parse.
312
- *
313
- * @option options :allow_update
314
- * script構文時に更新操作を利用するかどうか。省略した場合
315
- * は利用する。
316
- *
317
- * 参考: Groonga::Expression#parse.
318
- *
296
+ * @!macro column.select.options
319
297
  * @overload select(expression, options)
320
298
  * @param [Groonga::Expression] expression 条件を表すオブジェクト
321
- * _expression_ には既に作成済みのGroonga::Expressionを渡す
322
- *
323
- * ブロックで条件を指定する場合は
324
- * {Groonga::ColumnExpressionBuilder} を参照。
325
- *
326
- * @param [::Hash] options The name and value
327
- * pairs. Omitted names are initialized as the default value.
328
- * @option options :operator (Groonga::Operator::OR)
329
- * マッチしたレコードをどのように扱うか。指定可能な値は以
330
- * 下の通り。
331
- *
332
- * [Groonga::Operator::OR]
333
- * マッチしたレコードを追加。すでにレコードが追加され
334
- * ている場合は何もしない。
335
- * [Groonga::Operator::AND]
336
- * マッチしたレコードのスコアを増加。マッチしなかった
337
- * レコードを削除。
338
- * [Groonga::Operator::BUT]
339
- * マッチしたレコードを削除。
340
- * [Groonga::Operator::ADJUST]
341
- * マッチしたレコードのスコアを増加。
342
- *
343
- * @option options :result
344
- * 検索結果を格納するテーブル。マッチしたレコードが追加さ
345
- * れていく。省略した場合は新しくテーブルを作成して返す。
346
- *
347
- * @option options :name
348
- * 条件の名前。省略した場合は名前を付けない。
349
- *
350
- * @option options :syntax (:query)
351
- * _query_ の構文。
352
- *
353
- * 参考: Groonga::Expression#parse.
354
- *
355
- * @option options :allow_pragma
356
- * query構文時にプラグマを利用するかどうか。省略した場合は
357
- * 利用する。
358
- *
359
- * 参考: Groonga::Expression#parse.
360
- *
361
- * @option options :allow_column The allow_column
362
- * query構文時にカラム指定を利用するかどうか。省略した場合
363
- * は利用する。
364
- *
365
- * 参考: Groonga::Expression#parse.
366
- *
367
- * @option options :allow_update
368
- * script構文時に更新操作を利用するかどうか。省略した場合
369
- * は利用する。
370
- *
371
- * 参考: Groonga::Expression#parse.
372
- *
299
+ * _expression_ には既に作成済みの {Groonga::Expression} を渡す。
300
+ * @!macro column.select.options
373
301
  */
374
302
  static VALUE
375
303
  rb_grn_column_select (int argc, VALUE *argv, VALUE self)
@@ -380,7 +308,7 @@ rb_grn_column_select (int argc, VALUE *argv, VALUE self)
380
308
  VALUE options;
381
309
  VALUE rb_query, condition_or_options;
382
310
  VALUE rb_name, rb_operator, rb_result, rb_syntax;
383
- VALUE rb_allow_pragma, rb_allow_column, rb_allow_update;
311
+ VALUE rb_allow_pragma, rb_allow_column, rb_allow_update, rb_allow_leading_not;
384
312
  VALUE builder;
385
313
  VALUE rb_expression = Qnil;
386
314
 
@@ -416,6 +344,7 @@ rb_grn_column_select (int argc, VALUE *argv, VALUE self)
416
344
  "allow_pragma", &rb_allow_pragma,
417
345
  "allow_column", &rb_allow_column,
418
346
  "allow_update", &rb_allow_update,
347
+ "allow_leading_not", &rb_allow_leading_not,
419
348
  NULL);
420
349
 
421
350
  if (!NIL_P(rb_operator))
@@ -437,6 +366,7 @@ rb_grn_column_select (int argc, VALUE *argv, VALUE self)
437
366
  rb_funcall(builder, rb_intern("allow_pragma="), 1, rb_allow_pragma);
438
367
  rb_funcall(builder, rb_intern("allow_column="), 1, rb_allow_column);
439
368
  rb_funcall(builder, rb_intern("allow_update="), 1, rb_allow_update);
369
+ rb_funcall(builder, rb_intern("allow_leading_not="), 1, rb_allow_leading_not);
440
370
  rb_expression = rb_grn_column_expression_builder_build(builder);
441
371
  }
442
372
  rb_grn_object_deconstruct(RB_GRN_OBJECT(DATA_PTR(rb_expression)),
@@ -499,27 +429,22 @@ rb_grn_column_unlock_ensure (VALUE self)
499
429
 
500
430
  /*
501
431
  * _column_ をロックする。ロックに失敗した場合は
502
- * Groonga::ResourceDeadlockAvoided例外が発生する。
432
+ * {Groonga::ResourceDeadlockAvoided} 例外が発生する。
503
433
  *
504
434
  * @overload lock(options={})
505
- * @param [::Hash] options 利用可能なオプションは以下の通り。
506
- * @option options :timeout
507
- * ロックを獲得できなかった場合は _:timeout_ 秒間ロックの獲
508
- * 得を試みる。 _:timeout_ 秒以内にロックを獲得できなかった
509
- * 場合は例外が発生する。
510
- * @option options :id
511
- * _:id_で指定したレコードをロックする。(注: groonga側が
512
- * 未実装のため、現在は無視される)
435
+ * @!macro [new] column.lock.options
436
+ * @param [::Hash] options 利用可能なオプションは以下の通り。
437
+ * @option options :timeout
438
+ * ロックを獲得できなかった場合は _:timeout_ 秒間ロックの獲
439
+ * 得を試みる。 _:timeout_ 秒以内にロックを獲得できなかった
440
+ * 場合は例外が発生する。
441
+ * @option options :id
442
+ * _:id_で指定したレコードをロックする。(注: groonga側が
443
+ * 未実装のため、現在は無視される)
444
+ * @!macro column.lock.options
513
445
  * @overload lock(options={})
514
446
  * @yield ブロックを指定した場合はブロックを抜けたときにunlockする。
515
- * @param [::Hash] options 利用可能なオプションは以下の通り。
516
- * @option options :timeout
517
- * ロックを獲得できなかった場合は _:timeout_秒間ロックの獲
518
- * 得を試みる。 _:timeout_秒以内にロックを獲得できなかった
519
- * 場合は例外が発生する。
520
- * @option options :id
521
- * _:id_で指定したレコードをロックする。(注: groonga側が
522
- * 未実装のため、現在は無視される)
447
+ * @!macro column.lock.options
523
448
  */
524
449
  static VALUE
525
450
  rb_grn_column_lock (int argc, VALUE *argv, VALUE self)
@@ -630,15 +555,12 @@ rb_grn_column_is_locked (int argc, VALUE *argv, VALUE self)
630
555
  }
631
556
 
632
557
  /*
633
- * Document-method: reference?
634
- *
635
- * call-seq:
636
- * column.reference? -> true/false
637
- *
638
558
  * _column_ の値がテーブルのレコードとなる場合は +true+ を返し、
639
559
  * そうでない場合は +false+ を返す。
640
560
  *
641
561
  * @since 1.0.5
562
+ *
563
+ * @overload reference?
642
564
  */
643
565
  static VALUE
644
566
  rb_grn_column_reference_p (VALUE self)
@@ -668,15 +590,12 @@ rb_grn_column_reference_p (VALUE self)
668
590
  }
669
591
 
670
592
  /*
671
- * Document-method: index?
672
- *
673
- * call-seq:
674
- * column.index? -> true/false
675
- *
676
- * _column_ がGroonga::IndexColumnの場合は +true+ を返し、
593
+ * _column_ が {Groonga::IndexColumn} の場合は +true+ を返し、
677
594
  * そうでない場合は +false+ を返す。
678
595
  *
679
596
  * @since 1.0.5
597
+ *
598
+ * @overload index?
680
599
  */
681
600
  static VALUE
682
601
  rb_grn_column_index_p (VALUE self)
@@ -696,15 +615,12 @@ rb_grn_column_index_p (VALUE self)
696
615
  }
697
616
 
698
617
  /*
699
- * Document-method: vector?
700
- *
701
- * call-seq:
702
- * column.vector? -> true/false
703
- *
704
618
  * _column_ がベクターカラムの場合は +true+ を返し、
705
619
  * そうでない場合は +false+ を返す。
706
620
  *
707
621
  * @since 1.0.5
622
+ *
623
+ * @overload vector?
708
624
  */
709
625
  static VALUE
710
626
  rb_grn_column_vector_p (VALUE self)
@@ -726,15 +642,12 @@ rb_grn_column_vector_p (VALUE self)
726
642
  }
727
643
 
728
644
  /*
729
- * Document-method: scalar?
730
- *
731
- * call-seq:
732
- * column.scalar? -> true/false
733
- *
734
645
  * _column_ がスカラーカラムの場合は +true+ を返し、
735
646
  * そうでない場合は +false+ を返す。
736
647
  *
737
648
  * @since 1.0.5
649
+ *
650
+ * @overload scalar?
738
651
  */
739
652
  static VALUE
740
653
  rb_grn_column_scalar_p (VALUE self)