rroonga 4.0.5 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/benchmark/common.rb +4 -4
- data/benchmark/create-wikipedia-database.rb +5 -5
- data/benchmark/read-write-many-small-items.rb +8 -8
- data/benchmark/repeat-load.rb +4 -4
- data/benchmark/select.rb +9 -9
- data/benchmark/write-many-small-items.rb +8 -8
- data/doc/images/sample-schema.png +0 -0
- data/doc/text/install.textile +2 -2
- data/doc/text/news.textile +41 -0
- data/doc/text/tutorial.textile +4 -4
- data/example/bookmark.rb +6 -7
- data/example/index-html.rb +6 -6
- data/ext/groonga/extconf.rb +23 -1
- data/ext/groonga/rb-grn-column.c +3 -2
- data/ext/groonga/rb-grn-context.c +20 -3
- data/ext/groonga/rb-grn-double-array-trie.c +11 -2
- data/ext/groonga/rb-grn-exception.c +28 -10
- data/ext/groonga/rb-grn-expression.c +78 -0
- data/ext/groonga/rb-grn-hash.c +10 -0
- data/ext/groonga/rb-grn-logger.c +7 -3
- data/ext/groonga/rb-grn-object.c +3 -2
- data/ext/groonga/rb-grn-patricia-trie.c +23 -20
- data/ext/groonga/rb-grn-table-key-support.c +92 -1
- data/ext/groonga/rb-grn-table.c +60 -17
- data/ext/groonga/rb-grn-utils.c +51 -2
- data/ext/groonga/rb-grn-variable-size-column.c +11 -7
- data/ext/groonga/rb-grn.h +11 -1
- data/lib/groonga/dumper.rb +23 -1
- data/lib/groonga/patricia-trie.rb +1 -1
- data/lib/groonga/schema.rb +190 -205
- data/misc/grnop2ruby.rb +1 -1
- data/rroonga-build.rb +3 -3
- data/rroonga.gemspec +1 -0
- data/test/groonga-test-utils.rb +2 -2
- data/test/test-column.rb +19 -0
- data/test/test-context.rb +5 -1
- data/test/test-double-array-trie.rb +19 -0
- data/test/test-exception.rb +7 -2
- data/test/test-expression.rb +19 -0
- data/test/test-fix-size-column.rb +49 -36
- data/test/test-hash.rb +22 -0
- data/test/test-patricia-trie.rb +26 -7
- data/test/test-schema-dumper.rb +65 -1
- data/test/test-schema.rb +13 -2
- data/test/test-variable-size-column.rb +6 -5
- metadata +47 -46
data/misc/grnop2ruby.rb
CHANGED
@@ -40,7 +40,7 @@ ARGF.each_line do |line|
|
|
40
40
|
case line
|
41
41
|
when /\A\s+(GRN_OP_\w+)/
|
42
42
|
operator = $1
|
43
|
-
rb_operator = operator.gsub(/\AGRN_OP_/, "").split("_").map{
|
43
|
+
rb_operator = operator.gsub(/\AGRN_OP_/, "").split("_").map {|word|
|
44
44
|
replace_dictionary[word] || word
|
45
45
|
}.join("_")
|
46
46
|
puts " rb_define_const(rb_mGrnOperation, \"%s\",
|
data/rroonga-build.rb
CHANGED
@@ -19,15 +19,15 @@ module RroongaBuild
|
|
19
19
|
module RequiredGroongaVersion
|
20
20
|
MAJOR = 4
|
21
21
|
MINOR = 0
|
22
|
-
MICRO =
|
22
|
+
MICRO = 7
|
23
23
|
VERSION = [MAJOR, MINOR, MICRO]
|
24
|
-
RELEASED_DATE = Time.utc(2014,
|
24
|
+
RELEASED_DATE = Time.utc(2014, 10, 29)
|
25
25
|
end
|
26
26
|
|
27
27
|
module LatestGroongaVersion
|
28
28
|
MAJOR = 4
|
29
29
|
MINOR = 0
|
30
|
-
MICRO =
|
30
|
+
MICRO = 7
|
31
31
|
VERSION = [MAJOR, MINOR, MICRO]
|
32
32
|
end
|
33
33
|
|
data/rroonga.gemspec
CHANGED
@@ -61,6 +61,7 @@ Gem::Specification.new do |s|
|
|
61
61
|
|
62
62
|
s.files = ["README.md", "AUTHORS", "Rakefile", "Gemfile", ".yardopts"]
|
63
63
|
s.files += Dir.glob("doc/text/*.textile")
|
64
|
+
s.files += Dir.glob("doc/images/*")
|
64
65
|
s.files += ["#{s.name}.gemspec"]
|
65
66
|
s.files += ["rroonga-build.rb", "extconf.rb"]
|
66
67
|
Dir.chdir(base_dir) do
|
data/test/groonga-test-utils.rb
CHANGED
@@ -103,8 +103,8 @@ module GroongaTestUtils
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def setup_logger
|
106
|
-
Groonga::Logger.register(:
|
107
|
-
p
|
106
|
+
Groonga::Logger.register(:max_level => :dump) do |*args|
|
107
|
+
p args
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
data/test/test-column.rb
CHANGED
@@ -461,4 +461,23 @@ class ColumnTest < Test::Unit::TestCase
|
|
461
461
|
@users_age_column.disk_usage)
|
462
462
|
end
|
463
463
|
end
|
464
|
+
|
465
|
+
class RenameTest < self
|
466
|
+
def setup
|
467
|
+
setup_database
|
468
|
+
|
469
|
+
Groonga::Schema.define do |schema|
|
470
|
+
schema.create_table("Users") do |table|
|
471
|
+
table.short_text("name")
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
475
|
+
@users = context["Users"]
|
476
|
+
end
|
477
|
+
|
478
|
+
def test_old_name_reference
|
479
|
+
@users.column("name").rename("nick")
|
480
|
+
assert_nil(@users.column("name"))
|
481
|
+
end
|
482
|
+
end
|
464
483
|
end
|
data/test/test-context.rb
CHANGED
@@ -115,7 +115,11 @@ class ContextTest < Test::Unit::TestCase
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def test_support_lzo?
|
118
|
-
|
118
|
+
assert_false(Groonga::Context.default.support_lzo?)
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_support_lz4?
|
122
|
+
assert_boolean(Groonga::Context.default.support_lz4?)
|
119
123
|
end
|
120
124
|
|
121
125
|
def test_match_escalation_threshold
|
@@ -55,6 +55,25 @@ class DoubleArrayTrieTest < Test::Unit::TestCase
|
|
55
55
|
trie.default_tokenizer)
|
56
56
|
end
|
57
57
|
|
58
|
+
class TokenFiltersTest < self
|
59
|
+
def test_accessor
|
60
|
+
context.register_plugin("token_filters/stop_word")
|
61
|
+
trie = Groonga::DoubleArrayTrie.create
|
62
|
+
assert_equal([], trie.token_filters)
|
63
|
+
trie.token_filters = ["TokenFilterStopWord"]
|
64
|
+
assert_equal([context["TokenFilterStopWord"]],
|
65
|
+
trie.token_filters)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_create
|
69
|
+
context.register_plugin("token_filters/stop_word")
|
70
|
+
token_filters = ["TokenFilterStopWord"]
|
71
|
+
trie = Groonga::DoubleArrayTrie.create(:token_filters => token_filters)
|
72
|
+
assert_equal([context["TokenFilterStopWord"]],
|
73
|
+
trie.token_filters)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
58
77
|
def test_search
|
59
78
|
users = Groonga::Array.create(:name => "Users")
|
60
79
|
users.define_column("name", "ShortText")
|
data/test/test-exception.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
# Copyright (C) 2009-
|
1
|
+
# Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
# Copyright (C) 2014 Masafumi Yokoyama <myokoym@gmail.com>
|
2
3
|
#
|
3
4
|
# This library is free software; you can redistribute it and/or
|
4
5
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -83,7 +84,7 @@ class ExceptionTest < Test::Unit::TestCase
|
|
83
84
|
assert_const_defined(Groonga, :OperationNotSupported)
|
84
85
|
assert_const_defined(Groonga, :AddressIsInUse)
|
85
86
|
assert_const_defined(Groonga, :ZLibError)
|
86
|
-
assert_const_defined(Groonga, :
|
87
|
+
assert_const_defined(Groonga, :LZ4Error)
|
87
88
|
assert_const_defined(Groonga, :StackOverFlow)
|
88
89
|
assert_const_defined(Groonga, :SyntaxError)
|
89
90
|
assert_const_defined(Groonga, :RetryMax)
|
@@ -92,6 +93,10 @@ class ExceptionTest < Test::Unit::TestCase
|
|
92
93
|
assert_const_defined(Groonga, :TooSmallOffset)
|
93
94
|
assert_const_defined(Groonga, :TooLargeOffset)
|
94
95
|
assert_const_defined(Groonga, :TooSmallLimit)
|
96
|
+
assert_const_defined(Groonga, :CASError)
|
97
|
+
assert_const_defined(Groonga, :UnsupportedCommandVersion)
|
98
|
+
assert_const_defined(Groonga, :NormalizerError)
|
99
|
+
assert_const_defined(Groonga, :TokenFilterError)
|
95
100
|
end
|
96
101
|
end
|
97
102
|
|
data/test/test-expression.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
#
|
3
3
|
# Copyright (C) 2009-2013 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
# Copyright (C) 2014 Masafumi Yokoyama <myokoym@gmail.com>
|
4
5
|
#
|
5
6
|
# This library is free software; you can redistribute it and/or
|
6
7
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -132,6 +133,24 @@ class ExpressionTest < Test::Unit::TestCase
|
|
132
133
|
snippet.close
|
133
134
|
end
|
134
135
|
|
136
|
+
def test_keywords
|
137
|
+
users = Groonga::Array.create(:name => "Users")
|
138
|
+
users.define_column("name", "ShortText")
|
139
|
+
|
140
|
+
expression = Groonga::Expression.new
|
141
|
+
variable = expression.define_variable(:domain => users)
|
142
|
+
expression.append_object(variable)
|
143
|
+
expression.parse("ラングバ OR Ruby OR groonga", :default_column => name)
|
144
|
+
expression.compile
|
145
|
+
|
146
|
+
assert_equal([
|
147
|
+
"Ruby",
|
148
|
+
"groonga",
|
149
|
+
"ラングバ",
|
150
|
+
],
|
151
|
+
expression.keywords.sort)
|
152
|
+
end
|
153
|
+
|
135
154
|
class AppendObjectTest < self
|
136
155
|
setup
|
137
156
|
def setup_expression
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
|
1
|
+
# Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -18,50 +18,63 @@ class FixSizeColumnTest < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
def setup
|
20
20
|
setup_database
|
21
|
-
|
22
|
-
setup_bookmarks_table
|
23
21
|
end
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
class OperationTest < self
|
24
|
+
def setup
|
25
|
+
super
|
26
|
+
setup_bookmarks_table
|
27
|
+
end
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
def setup_bookmarks_table
|
30
|
+
@bookmarks_path = @tables_dir + "bookmarks"
|
31
|
+
@bookmarks = Groonga::Array.create(:name => "Bookmarks",
|
32
|
+
:path => @bookmarks_path.to_s)
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
@n_viewed_column_path = @columns_dir + "n_viewed"
|
35
|
+
@n_viewed = @bookmarks.define_column("n_viewed", "Int32",
|
36
|
+
:path => @n_viewed_column_path.to_s)
|
37
|
+
end
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
def test_index?
|
40
|
+
assert_not_predicate(@n_viewed, :index?)
|
41
|
+
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
def test_vector?
|
44
|
+
assert_not_predicate(@n_viewed, :vector?)
|
45
|
+
end
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
"name: <Bookmarks.viewed>, " +
|
51
|
-
"path: <#{@viewed_column_path}>, " +
|
52
|
-
"domain: <Bookmarks>, " +
|
53
|
-
"range: <Int32>, " +
|
54
|
-
"flags: <KEY_INT>" +
|
55
|
-
">",
|
56
|
-
@viewed.inspect)
|
57
|
-
end
|
47
|
+
def test_scalar?
|
48
|
+
assert_predicate(@n_viewed, :scalar?)
|
49
|
+
end
|
58
50
|
|
59
|
-
|
60
|
-
|
61
|
-
|
51
|
+
def test_inspect
|
52
|
+
assert_equal("#<Groonga::FixSizeColumn " +
|
53
|
+
"id: <#{@n_viewed.id}>, " +
|
54
|
+
"name: <Bookmarks.n_viewed>, " +
|
55
|
+
"path: <#{@n_viewed_column_path}>, " +
|
56
|
+
"domain: <Bookmarks>, " +
|
57
|
+
"range: <Int32>, " +
|
58
|
+
"flags: <KEY_INT>" +
|
59
|
+
">",
|
60
|
+
@n_viewed.inspect)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_domain
|
64
|
+
assert_equal(@bookmarks, @n_viewed.domain)
|
65
|
+
end
|
62
66
|
|
63
|
-
|
64
|
-
|
67
|
+
def test_table
|
68
|
+
assert_equal(@bookmarks, @n_viewed.table)
|
69
|
+
end
|
70
|
+
|
71
|
+
class AssignTest < self
|
72
|
+
def test_different_types
|
73
|
+
@bookmarks.add(:n_viewed => "100")
|
74
|
+
record = @bookmarks.add(:n_viewed => 101)
|
75
|
+
assert_equal(101, record.n_viewed)
|
76
|
+
end
|
77
|
+
end
|
65
78
|
end
|
66
79
|
|
67
80
|
class TimeTest < self
|
data/test/test-hash.rb
CHANGED
@@ -129,6 +129,7 @@ class HashTest < Test::Unit::TestCase
|
|
129
129
|
"size: <0>, " +
|
130
130
|
"encoding: <#{encoding.inspect}>, " +
|
131
131
|
"default_tokenizer: (nil), " +
|
132
|
+
"token_filters: [], " +
|
132
133
|
"normalizer: (nil)>",
|
133
134
|
anonymous_table.inspect)
|
134
135
|
end
|
@@ -145,6 +146,7 @@ class HashTest < Test::Unit::TestCase
|
|
145
146
|
"size: <0>, " +
|
146
147
|
"encoding: <#{encoding.inspect}>, " +
|
147
148
|
"default_tokenizer: (nil), " +
|
149
|
+
"token_filters: [], " +
|
148
150
|
"normalizer: (nil)>",
|
149
151
|
anonymous_table.inspect)
|
150
152
|
end
|
@@ -162,6 +164,7 @@ class HashTest < Test::Unit::TestCase
|
|
162
164
|
"size: <0>, " +
|
163
165
|
"encoding: <#{encoding.inspect}>, " +
|
164
166
|
"default_tokenizer: (nil), " +
|
167
|
+
"token_filters: [], " +
|
165
168
|
"normalizer: (nil)>",
|
166
169
|
named_table.inspect)
|
167
170
|
end
|
@@ -178,6 +181,7 @@ class HashTest < Test::Unit::TestCase
|
|
178
181
|
"size: <0>, " +
|
179
182
|
"encoding: <#{encoding.inspect}>, " +
|
180
183
|
"default_tokenizer: (nil), " +
|
184
|
+
"token_filters: [], " +
|
181
185
|
"normalizer: (nil)>",
|
182
186
|
named_table.inspect)
|
183
187
|
end
|
@@ -195,6 +199,24 @@ class HashTest < Test::Unit::TestCase
|
|
195
199
|
hash.default_tokenizer)
|
196
200
|
end
|
197
201
|
|
202
|
+
class TokenFiltersTest < self
|
203
|
+
def test_accessor
|
204
|
+
context.register_plugin("token_filters/stop_word")
|
205
|
+
hash = Groonga::Hash.create
|
206
|
+
assert_equal([], hash.token_filters)
|
207
|
+
hash.token_filters = ["TokenFilterStopWord"]
|
208
|
+
assert_equal([context["TokenFilterStopWord"]],
|
209
|
+
hash.token_filters)
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_create
|
213
|
+
context.register_plugin("token_filters/stop_word")
|
214
|
+
hash = Groonga::Hash.create(:token_filters => ["TokenFilterStopWord"])
|
215
|
+
assert_equal([context["TokenFilterStopWord"]],
|
216
|
+
hash.token_filters)
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
198
220
|
def test_normalizer
|
199
221
|
hash = Groonga::Hash.create
|
200
222
|
assert_nil(hash.normalizer)
|
data/test/test-patricia-trie.rb
CHANGED
@@ -55,6 +55,25 @@ class PatriciaTrieTest < Test::Unit::TestCase
|
|
55
55
|
trie.default_tokenizer)
|
56
56
|
end
|
57
57
|
|
58
|
+
class TokenFiltersTest < self
|
59
|
+
def test_accessor
|
60
|
+
context.register_plugin("token_filters/stop_word")
|
61
|
+
trie = Groonga::PatriciaTrie.create
|
62
|
+
assert_equal([], trie.token_filters)
|
63
|
+
trie.token_filters = ["TokenFilterStopWord"]
|
64
|
+
assert_equal([context["TokenFilterStopWord"]],
|
65
|
+
trie.token_filters)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_create
|
69
|
+
context.register_plugin("token_filters/stop_word")
|
70
|
+
token_filters = ["TokenFilterStopWord"]
|
71
|
+
trie = Groonga::PatriciaTrie.create(:token_filters => token_filters)
|
72
|
+
assert_equal([context["TokenFilterStopWord"]],
|
73
|
+
trie.token_filters)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
58
77
|
def test_normalizer
|
59
78
|
trie = Groonga::PatriciaTrie.create
|
60
79
|
assert_nil(trie.normalizer)
|
@@ -368,16 +387,16 @@ class PatriciaTrieTest < Test::Unit::TestCase
|
|
368
387
|
points.add(point)
|
369
388
|
end
|
370
389
|
|
371
|
-
assert_near_cursor(["
|
372
|
-
"
|
373
|
-
"
|
390
|
+
assert_near_cursor(["129786048x504792049",
|
391
|
+
"129845056x504853081",
|
392
|
+
"129903045x504648034",
|
393
|
+
"129917001x504675017",
|
394
|
+
"129855010x504452003",
|
395
|
+
"129809022x504597055",
|
374
396
|
"129690039x504418033",
|
375
397
|
"129680021x504441006",
|
376
398
|
"129721099x504685024",
|
377
|
-
"
|
378
|
-
"129809022x504597055",
|
379
|
-
"129786048x504792049",
|
380
|
-
"129845056x504853081"],
|
399
|
+
"130019020x505027021"],
|
381
400
|
points,
|
382
401
|
"129786048x504792049",
|
383
402
|
{:limit => 10})
|
data/test/test-schema-dumper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
# Copyright (C) 2014 Masafumi Yokoyama <myokoym@gmail.com>
|
2
3
|
#
|
3
4
|
# This library is free software; you can redistribute it and/or
|
4
5
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -86,6 +87,7 @@ class SchemaDumperTest < Test::Unit::TestCase
|
|
86
87
|
end
|
87
88
|
|
88
89
|
def define_index_schema
|
90
|
+
context.register_plugin("token_filters/stop_word")
|
89
91
|
Groonga::Schema.define do |schema|
|
90
92
|
schema.create_table("Items",
|
91
93
|
:type => :hash,
|
@@ -97,6 +99,7 @@ class SchemaDumperTest < Test::Unit::TestCase
|
|
97
99
|
:type => :patricia_trie,
|
98
100
|
:key_type => "ShortText",
|
99
101
|
:default_tokenizer => "TokenBigram",
|
102
|
+
:token_filters => ["TokenFilterStopWord"],
|
100
103
|
:normalizer => "NormalizerAuto") do |table|
|
101
104
|
table.index("Items", "_key")
|
102
105
|
table.index("Items", "title")
|
@@ -221,6 +224,7 @@ create_table("Terms",
|
|
221
224
|
:type => :patricia_trie,
|
222
225
|
:key_type => "ShortText",
|
223
226
|
:default_tokenizer => "TokenBigram",
|
227
|
+
:token_filters => ["TokenFilterStopWord"],
|
224
228
|
:normalizer => "NormalizerAuto",
|
225
229
|
:force => true) do |table|
|
226
230
|
end
|
@@ -306,7 +310,7 @@ column_create Comments item COLUMN_SCALAR Items
|
|
306
310
|
table_create Items TABLE_HASH_KEY ShortText
|
307
311
|
column_create Items title COLUMN_SCALAR ShortText
|
308
312
|
|
309
|
-
table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto
|
313
|
+
table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --token_filters TokenFilterStopWord --normalizer NormalizerAuto
|
310
314
|
|
311
315
|
column_create Terms Items__key COLUMN_INDEX|WITH_POSITION Items _key
|
312
316
|
column_create Terms Items_title COLUMN_INDEX|WITH_POSITION Items title
|
@@ -329,6 +333,66 @@ column_create Accounts name COLUMN_SCALAR ShortText
|
|
329
333
|
SCHEMA
|
330
334
|
end
|
331
335
|
|
336
|
+
class ColumnCompressionTest < self
|
337
|
+
def test_zlib
|
338
|
+
define_column_compression_zlib_schema
|
339
|
+
flags = "COLUMN_SCALAR"
|
340
|
+
flags << "|COMPRESS_ZLIB" if context.support_zlib?
|
341
|
+
assert_equal(<<-SCHEMA, dump)
|
342
|
+
table_create Posts TABLE_NO_KEY
|
343
|
+
column_create Posts title #{flags} ShortText
|
344
|
+
SCHEMA
|
345
|
+
end
|
346
|
+
|
347
|
+
def test_lz4
|
348
|
+
define_column_compression_lz4_schema
|
349
|
+
flags = "COLUMN_SCALAR"
|
350
|
+
flags << "|COMPRESS_LZ4" if context.support_lz4?
|
351
|
+
assert_equal(<<-SCHEMA, dump)
|
352
|
+
table_create Posts TABLE_NO_KEY
|
353
|
+
column_create Posts title #{flags} ShortText
|
354
|
+
SCHEMA
|
355
|
+
end
|
356
|
+
|
357
|
+
def test_with_weight_vector
|
358
|
+
define_column_compression_with_weight_vector_schema
|
359
|
+
flags = "COLUMN_VECTOR|WITH_WEIGHT"
|
360
|
+
flags << "|COMPRESS_ZLIB" if context.support_zlib?
|
361
|
+
assert_equal(<<-SCHEMA, dump)
|
362
|
+
table_create Posts TABLE_NO_KEY
|
363
|
+
column_create Posts comments #{flags} ShortText
|
364
|
+
SCHEMA
|
365
|
+
end
|
366
|
+
|
367
|
+
private
|
368
|
+
def define_column_compression_zlib_schema
|
369
|
+
Groonga::Schema.define do |schema|
|
370
|
+
schema.create_table("Posts") do |table|
|
371
|
+
table.short_text("title", :compress => :zlib)
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
def define_column_compression_lz4_schema
|
377
|
+
Groonga::Schema.define do |schema|
|
378
|
+
schema.create_table("Posts") do |table|
|
379
|
+
table.short_text("title", :compress => :lz4)
|
380
|
+
end
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
def define_column_compression_with_weight_vector_schema
|
385
|
+
Groonga::Schema.define do |schema|
|
386
|
+
schema.create_table("Posts") do |table|
|
387
|
+
table.short_text("comments",
|
388
|
+
:type => :vector,
|
389
|
+
:with_weight => true,
|
390
|
+
:compress => :zlib)
|
391
|
+
end
|
392
|
+
end
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
332
396
|
private
|
333
397
|
def dump
|
334
398
|
Groonga::Schema.dump(:syntax => :command)
|