rroonga 0.9.2-x86-mingw32
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.
- data/AUTHORS +5 -0
- data/NEWS.ja.rdoc +114 -0
- data/NEWS.rdoc +116 -0
- data/README.ja.rdoc +65 -0
- data/README.rdoc +66 -0
- data/Rakefile +206 -0
- data/benchmark/common.rb +49 -0
- data/benchmark/read-write-many-small-items.rb +144 -0
- data/benchmark/write-many-small-items.rb +135 -0
- data/example/bookmark.rb +161 -0
- data/example/index-html.rb +89 -0
- data/example/search/config.ru +230 -0
- data/example/search/public/css/groonga.css +122 -0
- data/ext/.gitignore +2 -0
- data/ext/groonga/extconf.rb +93 -0
- data/ext/groonga/rb-grn-accessor.c +52 -0
- data/ext/groonga/rb-grn-array-cursor.c +36 -0
- data/ext/groonga/rb-grn-array.c +210 -0
- data/ext/groonga/rb-grn-column.c +573 -0
- data/ext/groonga/rb-grn-context.c +662 -0
- data/ext/groonga/rb-grn-database.c +472 -0
- data/ext/groonga/rb-grn-encoding-support.c +64 -0
- data/ext/groonga/rb-grn-encoding.c +257 -0
- data/ext/groonga/rb-grn-exception.c +1110 -0
- data/ext/groonga/rb-grn-expression-builder.c +75 -0
- data/ext/groonga/rb-grn-expression.c +731 -0
- data/ext/groonga/rb-grn-fix-size-column.c +166 -0
- data/ext/groonga/rb-grn-hash-cursor.c +38 -0
- data/ext/groonga/rb-grn-hash.c +294 -0
- data/ext/groonga/rb-grn-index-column.c +488 -0
- data/ext/groonga/rb-grn-logger.c +504 -0
- data/ext/groonga/rb-grn-object.c +1369 -0
- data/ext/groonga/rb-grn-operation.c +198 -0
- data/ext/groonga/rb-grn-patricia-trie-cursor.c +39 -0
- data/ext/groonga/rb-grn-patricia-trie.c +488 -0
- data/ext/groonga/rb-grn-procedure.c +52 -0
- data/ext/groonga/rb-grn-query.c +260 -0
- data/ext/groonga/rb-grn-record.c +40 -0
- data/ext/groonga/rb-grn-snippet.c +334 -0
- data/ext/groonga/rb-grn-table-cursor-key-support.c +69 -0
- data/ext/groonga/rb-grn-table-cursor.c +247 -0
- data/ext/groonga/rb-grn-table-key-support.c +714 -0
- data/ext/groonga/rb-grn-table.c +1977 -0
- data/ext/groonga/rb-grn-type.c +181 -0
- data/ext/groonga/rb-grn-utils.c +769 -0
- data/ext/groonga/rb-grn-variable-size-column.c +36 -0
- data/ext/groonga/rb-grn-variable.c +108 -0
- data/ext/groonga/rb-grn-view-accessor.c +53 -0
- data/ext/groonga/rb-grn-view-cursor.c +35 -0
- data/ext/groonga/rb-grn-view-record.c +41 -0
- data/ext/groonga/rb-grn-view.c +421 -0
- data/ext/groonga/rb-grn.h +698 -0
- data/ext/groonga/rb-groonga.c +107 -0
- data/extconf.rb +130 -0
- data/html/bar.svg +153 -0
- data/html/developer.html +117 -0
- data/html/developer.svg +469 -0
- data/html/download.svg +253 -0
- data/html/favicon.ico +0 -0
- data/html/favicon.xcf +0 -0
- data/html/footer.html.erb +28 -0
- data/html/head.html.erb +4 -0
- data/html/header.html.erb +17 -0
- data/html/index.html +147 -0
- data/html/install.svg +636 -0
- data/html/logo.xcf +0 -0
- data/html/ranguba.css +250 -0
- data/html/tutorial.svg +559 -0
- data/lib/1.8/groonga.so +0 -0
- data/lib/1.9/groonga.so +0 -0
- data/lib/groonga.rb +90 -0
- data/lib/groonga/context.rb +184 -0
- data/lib/groonga/expression-builder.rb +324 -0
- data/lib/groonga/patricia-trie.rb +85 -0
- data/lib/groonga/record.rb +311 -0
- data/lib/groonga/schema.rb +1191 -0
- data/lib/groonga/view-record.rb +56 -0
- data/license/GPL +340 -0
- data/license/LGPL +504 -0
- data/license/RUBY +59 -0
- data/misc/grnop2ruby.rb +49 -0
- data/pkg-config.rb +333 -0
- data/rroonga-build.rb +57 -0
- data/test-unit/Rakefile +40 -0
- data/test-unit/TODO +5 -0
- data/test-unit/bin/testrb +5 -0
- data/test-unit/html/classic.html +15 -0
- data/test-unit/html/index.html +25 -0
- data/test-unit/html/index.html.ja +27 -0
- data/test-unit/lib/test/unit.rb +323 -0
- data/test-unit/lib/test/unit/assertionfailederror.rb +25 -0
- data/test-unit/lib/test/unit/assertions.rb +1230 -0
- data/test-unit/lib/test/unit/attribute.rb +125 -0
- data/test-unit/lib/test/unit/autorunner.rb +360 -0
- data/test-unit/lib/test/unit/collector.rb +36 -0
- data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
- data/test-unit/lib/test/unit/collector/dir.rb +108 -0
- data/test-unit/lib/test/unit/collector/load.rb +144 -0
- data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
- data/test-unit/lib/test/unit/color-scheme.rb +102 -0
- data/test-unit/lib/test/unit/color.rb +96 -0
- data/test-unit/lib/test/unit/diff.rb +724 -0
- data/test-unit/lib/test/unit/error.rb +130 -0
- data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
- data/test-unit/lib/test/unit/failure.rb +136 -0
- data/test-unit/lib/test/unit/fixture.rb +176 -0
- data/test-unit/lib/test/unit/notification.rb +129 -0
- data/test-unit/lib/test/unit/omission.rb +191 -0
- data/test-unit/lib/test/unit/pending.rb +150 -0
- data/test-unit/lib/test/unit/priority.rb +180 -0
- data/test-unit/lib/test/unit/runner/console.rb +52 -0
- data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
- data/test-unit/lib/test/unit/runner/tap.rb +8 -0
- data/test-unit/lib/test/unit/testcase.rb +476 -0
- data/test-unit/lib/test/unit/testresult.rb +89 -0
- data/test-unit/lib/test/unit/testsuite.rb +110 -0
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +466 -0
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +63 -0
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +92 -0
- data/test-unit/lib/test/unit/ui/testrunner.rb +28 -0
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
- data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
- data/test-unit/lib/test/unit/util/observable.rb +90 -0
- data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
- data/test-unit/lib/test/unit/version.rb +7 -0
- data/test-unit/sample/adder.rb +13 -0
- data/test-unit/sample/subtracter.rb +12 -0
- data/test-unit/sample/test_adder.rb +20 -0
- data/test-unit/sample/test_subtracter.rb +20 -0
- data/test-unit/sample/test_user.rb +23 -0
- data/test-unit/test/collector/test-descendant.rb +133 -0
- data/test-unit/test/collector/test-load.rb +442 -0
- data/test-unit/test/collector/test_dir.rb +406 -0
- data/test-unit/test/collector/test_objectspace.rb +100 -0
- data/test-unit/test/run-test.rb +15 -0
- data/test-unit/test/test-attribute.rb +86 -0
- data/test-unit/test/test-color-scheme.rb +67 -0
- data/test-unit/test/test-color.rb +47 -0
- data/test-unit/test/test-diff.rb +518 -0
- data/test-unit/test/test-emacs-runner.rb +60 -0
- data/test-unit/test/test-fixture.rb +287 -0
- data/test-unit/test/test-notification.rb +33 -0
- data/test-unit/test/test-omission.rb +81 -0
- data/test-unit/test/test-pending.rb +70 -0
- data/test-unit/test/test-priority.rb +119 -0
- data/test-unit/test/test-testcase.rb +544 -0
- data/test-unit/test/test_assertions.rb +1151 -0
- data/test-unit/test/test_error.rb +26 -0
- data/test-unit/test/test_failure.rb +33 -0
- data/test-unit/test/test_testresult.rb +113 -0
- data/test-unit/test/test_testsuite.rb +129 -0
- data/test-unit/test/testunit-test-util.rb +14 -0
- data/test-unit/test/ui/test_testrunmediator.rb +20 -0
- data/test-unit/test/util/test-method-owner-finder.rb +38 -0
- data/test-unit/test/util/test_backtracefilter.rb +41 -0
- data/test-unit/test/util/test_observable.rb +102 -0
- data/test-unit/test/util/test_procwrapper.rb +36 -0
- data/test/.gitignore +1 -0
- data/test/groonga-test-utils.rb +134 -0
- data/test/run-test.rb +58 -0
- data/test/test-array.rb +90 -0
- data/test/test-column.rb +316 -0
- data/test/test-context-select.rb +93 -0
- data/test/test-context.rb +73 -0
- data/test/test-database.rb +113 -0
- data/test/test-encoding.rb +33 -0
- data/test/test-exception.rb +93 -0
- data/test/test-expression-builder.rb +217 -0
- data/test/test-expression.rb +134 -0
- data/test/test-fix-size-column.rb +65 -0
- data/test/test-gqtp.rb +72 -0
- data/test/test-hash.rb +305 -0
- data/test/test-index-column.rb +81 -0
- data/test/test-logger.rb +37 -0
- data/test/test-patricia-trie.rb +205 -0
- data/test/test-procedure.rb +37 -0
- data/test/test-query.rb +22 -0
- data/test/test-record.rb +243 -0
- data/test/test-remote.rb +54 -0
- data/test/test-schema-view.rb +90 -0
- data/test/test-schema.rb +459 -0
- data/test/test-snippet.rb +130 -0
- data/test/test-table-cursor.rb +153 -0
- data/test/test-table-offset-and-limit.rb +102 -0
- data/test/test-table-select-normalize.rb +53 -0
- data/test/test-table-select.rb +150 -0
- data/test/test-table.rb +594 -0
- data/test/test-type.rb +71 -0
- data/test/test-variable-size-column.rb +98 -0
- data/test/test-variable.rb +28 -0
- data/test/test-vector-column.rb +76 -0
- data/test/test-version.rb +31 -0
- data/test/test-view.rb +72 -0
- data/text/TUTORIAL.ja.rdoc +392 -0
- data/text/expression.rdoc +284 -0
- metadata +276 -0
data/test/test-remote.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# Copyright (C) 2009-2010 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License version 2.1 as published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This library is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
+
# Lesser General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU Lesser General Public
|
13
|
+
# License along with this library; if not, write to the Free Software
|
14
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
+
|
16
|
+
class RemoteTest < Test::Unit::TestCase
|
17
|
+
include GroongaTestUtils
|
18
|
+
|
19
|
+
setup :before => :append
|
20
|
+
def setup_remote_connection
|
21
|
+
@process_id = nil
|
22
|
+
|
23
|
+
package_config = PKGConfig.package_config("groonga")
|
24
|
+
groonga = package_config.variable("groonga")
|
25
|
+
|
26
|
+
@host = "127.0.0.1"
|
27
|
+
@port = 12345
|
28
|
+
@remote_database_path = @tmp_dir + "remote-database"
|
29
|
+
@process_id = Process.fork do
|
30
|
+
exec(groonga,
|
31
|
+
"-i", @host,
|
32
|
+
"-p", @port.to_s,
|
33
|
+
"-s", "-n", @remote_database_path.to_s)
|
34
|
+
end
|
35
|
+
sleep(1)
|
36
|
+
end
|
37
|
+
|
38
|
+
teardown
|
39
|
+
def teardown_remote_connection
|
40
|
+
Process.kill(:TERM, @process_id) if @process_id
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_send
|
44
|
+
_context = Groonga::Context.new
|
45
|
+
_context.connect(:host => @host, :port => @port)
|
46
|
+
assert_equal(0, _context.send("status"))
|
47
|
+
id, result = _context.receive
|
48
|
+
assert_equal(0, id)
|
49
|
+
status, values = JSON.load(result)
|
50
|
+
return_code, start_time, elapsed, = status
|
51
|
+
assert_equal([0, ["alloc_count", "starttime", "uptime", "version"]],
|
52
|
+
[return_code, values.keys.sort])
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License version 2.1 as published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This library is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
+
# Lesser General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU Lesser General Public
|
13
|
+
# License along with this library; if not, write to the Free Software
|
14
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
+
|
16
|
+
class SchemaViewTest < Test::Unit::TestCase
|
17
|
+
include GroongaTestUtils
|
18
|
+
|
19
|
+
setup :setup_database
|
20
|
+
|
21
|
+
def test_create_view
|
22
|
+
assert_nil(context["Entries"])
|
23
|
+
Groonga::Schema.create_view("Entries") do |view|
|
24
|
+
end
|
25
|
+
assert_not_nil(context["Entries"])
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_create_view_force
|
29
|
+
Groonga::Schema.create_table("People") do |table|
|
30
|
+
table.string("name")
|
31
|
+
end
|
32
|
+
context["People"].add(:name => "morita")
|
33
|
+
|
34
|
+
Groonga::Schema.create_view("Entries") do |view|
|
35
|
+
view.add("People")
|
36
|
+
end
|
37
|
+
assert_equal(["morita"],
|
38
|
+
context["Entries"].collect {|entry| entry["name"]})
|
39
|
+
|
40
|
+
Groonga::Schema.create_view("People") do |view|
|
41
|
+
end
|
42
|
+
assert_equal(["morita"],
|
43
|
+
context["Entries"].collect {|entry| entry["name"]})
|
44
|
+
|
45
|
+
Groonga::Schema.create_view("Entries", :force => true) do |view|
|
46
|
+
end
|
47
|
+
assert_equal([],
|
48
|
+
context["Entries"].collect {|entry| entry["name"]})
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_remove_view
|
52
|
+
Groonga::View.create(:name => "Entries")
|
53
|
+
assert_not_nil(context["Entries"])
|
54
|
+
Groonga::Schema.remove_view("Entries")
|
55
|
+
assert_nil(context["Entries"])
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_add
|
59
|
+
Groonga::Schema.create_table("People") do |table|
|
60
|
+
table.string("name")
|
61
|
+
end
|
62
|
+
context["People"].add(:name => "morita")
|
63
|
+
|
64
|
+
Groonga::Schema.create_table("Dogs") do |table|
|
65
|
+
table.string("name")
|
66
|
+
end
|
67
|
+
context["Dogs"].add(:name => "pochi")
|
68
|
+
|
69
|
+
Groonga::Schema.create_view("Entries") do |view|
|
70
|
+
view.add("People")
|
71
|
+
view.add("Dogs")
|
72
|
+
end
|
73
|
+
assert_equal(["morita", "pochi"],
|
74
|
+
context["Entries"].collect {|entry| entry["name"]})
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_define_lazy
|
78
|
+
assert_nothing_raised do
|
79
|
+
Groonga::Schema.define do |schema|
|
80
|
+
schema.create_table("People") do |table|
|
81
|
+
table.string("name")
|
82
|
+
end
|
83
|
+
|
84
|
+
schema.create_view("Entries") do |view|
|
85
|
+
view.add("People")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/test/test-schema.rb
ADDED
@@ -0,0 +1,459 @@
|
|
1
|
+
# Copyright (C) 2009-2010 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License version 2.1 as published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This library is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
+
# Lesser General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU Lesser General Public
|
13
|
+
# License along with this library; if not, write to the Free Software
|
14
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
+
|
16
|
+
class SchemaTest < Test::Unit::TestCase
|
17
|
+
include GroongaTestUtils
|
18
|
+
|
19
|
+
setup :setup_database
|
20
|
+
|
21
|
+
def test_create_table
|
22
|
+
assert_nil(context["Posts"])
|
23
|
+
Groonga::Schema.create_table("Posts") do |table|
|
24
|
+
end
|
25
|
+
assert_not_nil(context["Posts"])
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_create_table_force
|
29
|
+
Groonga::Schema.create_table("Posts") do |table|
|
30
|
+
table.string("name")
|
31
|
+
end
|
32
|
+
assert_not_nil(context["Posts.name"])
|
33
|
+
|
34
|
+
Groonga::Schema.create_table("Posts") do |table|
|
35
|
+
end
|
36
|
+
assert_not_nil(context["Posts.name"])
|
37
|
+
|
38
|
+
Groonga::Schema.create_table("Posts", :force => true) do |table|
|
39
|
+
end
|
40
|
+
assert_nil(context["Posts.name"])
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_remove_table
|
44
|
+
Groonga::Array.create(:name => "Posts")
|
45
|
+
assert_not_nil(context["Posts"])
|
46
|
+
Groonga::Schema.remove_table("Posts")
|
47
|
+
assert_nil(context["Posts"])
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_define_hash
|
51
|
+
Groonga::Schema.create_table("Posts", :type => :hash) do |table|
|
52
|
+
end
|
53
|
+
assert_kind_of(Groonga::Hash, context["Posts"])
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_define_hash_with_full_option
|
57
|
+
path = @tmp_dir + "hash.groonga"
|
58
|
+
tokenizer = context["TokenTrigram"]
|
59
|
+
Groonga::Schema.create_table("Posts",
|
60
|
+
:type => :hash,
|
61
|
+
:key_type => "integer",
|
62
|
+
:path => path.to_s,
|
63
|
+
:value_type => "UInt32",
|
64
|
+
:default_tokenizer => tokenizer) do |table|
|
65
|
+
end
|
66
|
+
table = context["Posts"]
|
67
|
+
assert_equal("#<Groonga::Hash " +
|
68
|
+
"id: <#{table.id}>, " +
|
69
|
+
"name: <Posts>, " +
|
70
|
+
"path: <#{path}>, " +
|
71
|
+
"domain: <Int32>, " +
|
72
|
+
"range: <UInt32>, " +
|
73
|
+
"flags: <>, " +
|
74
|
+
"encoding: <#{Groonga::Encoding.default.inspect}>, " +
|
75
|
+
"size: <0>>",
|
76
|
+
table.inspect)
|
77
|
+
assert_equal(tokenizer, table.default_tokenizer)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_define_patricia_trie
|
81
|
+
Groonga::Schema.create_table("Posts", :type => :patricia_trie) do |table|
|
82
|
+
end
|
83
|
+
assert_kind_of(Groonga::PatriciaTrie, context["Posts"])
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_define_patricia_trie_with_full_option
|
87
|
+
path = @tmp_dir + "patricia-trie.groonga"
|
88
|
+
Groonga::Schema.create_table("Posts",
|
89
|
+
:type => :patricia_trie,
|
90
|
+
:key_type => "integer",
|
91
|
+
:path => path.to_s,
|
92
|
+
:value_type => "Float",
|
93
|
+
:default_tokenizer => "TokenBigram",
|
94
|
+
:key_normalize => true,
|
95
|
+
:key_with_sis => true) do |table|
|
96
|
+
end
|
97
|
+
table = context["Posts"]
|
98
|
+
assert_equal("#<Groonga::PatriciaTrie " +
|
99
|
+
"id: <#{table.id}>, " +
|
100
|
+
"name: <Posts>, " +
|
101
|
+
"path: <#{path}>, " +
|
102
|
+
"domain: <Int32>, " +
|
103
|
+
"range: <Float>, " +
|
104
|
+
"flags: <KEY_WITH_SIS|KEY_NORMALIZE|WITH_SECTION>, " +
|
105
|
+
"encoding: <#{Groonga::Encoding.default.inspect}>, " +
|
106
|
+
"size: <0>>",
|
107
|
+
table.inspect)
|
108
|
+
assert_equal(context["TokenBigram"], table.default_tokenizer)
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_define_array
|
112
|
+
Groonga::Schema.create_table("Posts", :type => :array) do |table|
|
113
|
+
end
|
114
|
+
assert_kind_of(Groonga::Array, context["Posts"])
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_define_array_with_full_option
|
118
|
+
path = @tmp_dir + "array.groonga"
|
119
|
+
Groonga::Schema.create_table("Posts",
|
120
|
+
:type => :array,
|
121
|
+
:path => path.to_s,
|
122
|
+
:value_type => "Int32") do |table|
|
123
|
+
end
|
124
|
+
table = context["Posts"]
|
125
|
+
assert_equal("#<Groonga::Array " +
|
126
|
+
"id: <#{table.id}>, " +
|
127
|
+
"name: <Posts>, " +
|
128
|
+
"path: <#{path}>, " +
|
129
|
+
"domain: <Int32>, " +
|
130
|
+
"range: <Int32>, " +
|
131
|
+
"flags: <>, " +
|
132
|
+
"size: <0>>",
|
133
|
+
table.inspect)
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_column_with_full_option
|
137
|
+
path = @tmp_dir + "column.groonga"
|
138
|
+
type = Groonga::Type.new("Niku", :size => 29)
|
139
|
+
Groonga::Schema.create_table("Posts") do |table|
|
140
|
+
table.column("rate",
|
141
|
+
type,
|
142
|
+
:path => path.to_s,
|
143
|
+
:persistent => true,
|
144
|
+
:type => :vector,
|
145
|
+
:compress => :lzo)
|
146
|
+
end
|
147
|
+
|
148
|
+
column_name = "Posts.rate"
|
149
|
+
column = context[column_name]
|
150
|
+
assert_equal("#<Groonga::VariableSizeColumn " +
|
151
|
+
"id: <#{column.id}>, " +
|
152
|
+
"name: <#{column_name}>, " +
|
153
|
+
"path: <#{path}>, " +
|
154
|
+
"domain: <Posts>, " +
|
155
|
+
"range: <Niku>, " +
|
156
|
+
"flags: <COMPRESS_LZO>>",
|
157
|
+
column.inspect)
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_integer32_column
|
161
|
+
assert_nil(context["Posts.rate"])
|
162
|
+
Groonga::Schema.create_table("Posts") do |table|
|
163
|
+
table.integer32 :rate
|
164
|
+
end
|
165
|
+
assert_equal(context["Int32"], context["Posts.rate"].range)
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_integer64_column
|
169
|
+
assert_nil(context["Posts.rate"])
|
170
|
+
Groonga::Schema.create_table("Posts") do |table|
|
171
|
+
table.integer64 :rate
|
172
|
+
end
|
173
|
+
assert_equal(context["Int64"], context["Posts.rate"].range)
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_unsigned_integer32_column
|
177
|
+
assert_nil(context["Posts.n_viewed"])
|
178
|
+
Groonga::Schema.create_table("Posts") do |table|
|
179
|
+
table.unsigned_integer32 :n_viewed
|
180
|
+
end
|
181
|
+
assert_equal(context["UInt32"], context["Posts.n_viewed"].range)
|
182
|
+
end
|
183
|
+
|
184
|
+
def test_unsigned_integer64_column
|
185
|
+
assert_nil(context["Posts.n_viewed"])
|
186
|
+
Groonga::Schema.create_table("Posts") do |table|
|
187
|
+
table.unsigned_integer64 :n_viewed
|
188
|
+
end
|
189
|
+
assert_equal(context["UInt64"], context["Posts.n_viewed"].range)
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_float_column
|
193
|
+
assert_nil(context["Posts.rate"])
|
194
|
+
Groonga::Schema.create_table("Posts") do |table|
|
195
|
+
table.float :rate
|
196
|
+
end
|
197
|
+
assert_equal(context["Float"], context["Posts.rate"].range)
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_time_column
|
201
|
+
assert_nil(context["Posts.last_modified"])
|
202
|
+
Groonga::Schema.create_table("Posts") do |table|
|
203
|
+
table.time :last_modified
|
204
|
+
end
|
205
|
+
assert_equal(context["Time"], context["Posts.last_modified"].range)
|
206
|
+
end
|
207
|
+
|
208
|
+
def test_short_text_column
|
209
|
+
assert_nil(context["Posts.title"])
|
210
|
+
Groonga::Schema.create_table("Posts") do |table|
|
211
|
+
table.short_text :title
|
212
|
+
end
|
213
|
+
assert_equal(context["ShortText"], context["Posts.title"].range)
|
214
|
+
end
|
215
|
+
|
216
|
+
def test_text_column
|
217
|
+
assert_nil(context["Posts.comment"])
|
218
|
+
Groonga::Schema.create_table("Posts") do |table|
|
219
|
+
table.text :comment
|
220
|
+
end
|
221
|
+
assert_equal(context["Text"], context["Posts.comment"].range)
|
222
|
+
end
|
223
|
+
|
224
|
+
def test_long_text_column
|
225
|
+
assert_nil(context["Posts.content"])
|
226
|
+
Groonga::Schema.create_table("Posts") do |table|
|
227
|
+
table.long_text :content
|
228
|
+
end
|
229
|
+
assert_equal(context["LongText"], context["Posts.content"].range)
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_boolean_column
|
233
|
+
assert_nil(context["Posts.public"])
|
234
|
+
Groonga::Schema.create_table("Posts") do |table|
|
235
|
+
table.boolean :public
|
236
|
+
end
|
237
|
+
assert_equal(context["Bool"], context["Posts.public"].range)
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_remove_column
|
241
|
+
Groonga::Schema.create_table("Posts") do |table|
|
242
|
+
table.long_text :content
|
243
|
+
end
|
244
|
+
assert_not_nil(context["Posts.content"])
|
245
|
+
|
246
|
+
Groonga::Schema.change_table("Posts") do |table|
|
247
|
+
table.remove_column("content")
|
248
|
+
end
|
249
|
+
assert_nil(context["Posts.content"])
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_column_again
|
253
|
+
Groonga::Schema.create_table("Posts") do |table|
|
254
|
+
table.text :content
|
255
|
+
end
|
256
|
+
|
257
|
+
assert_nothing_raised do
|
258
|
+
Groonga::Schema.create_table("Posts") do |table|
|
259
|
+
table.text :content
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
def test_column_again_with_difference_type
|
265
|
+
Groonga::Schema.create_table("Posts") do |table|
|
266
|
+
table.text :content
|
267
|
+
end
|
268
|
+
|
269
|
+
assert_raise(ArgumentError) do
|
270
|
+
Groonga::Schema.create_table("Posts") do |table|
|
271
|
+
table.integer :content
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
def test_index
|
277
|
+
assert_nil(context["Terms.content"])
|
278
|
+
Groonga::Schema.create_table("Posts") do |table|
|
279
|
+
table.long_text :content
|
280
|
+
end
|
281
|
+
Groonga::Schema.create_table("Terms") do |table|
|
282
|
+
table.index "Posts.content"
|
283
|
+
end
|
284
|
+
assert_equal([context["Posts.content"]],
|
285
|
+
context["Terms.Posts_content"].sources)
|
286
|
+
end
|
287
|
+
|
288
|
+
def test_index_with_full_option
|
289
|
+
path = @tmp_dir + "index-column.groonga"
|
290
|
+
assert_nil(context["Terms.content"])
|
291
|
+
index_column_name = "Posts_index"
|
292
|
+
|
293
|
+
Groonga::Schema.create_table("Posts") do |table|
|
294
|
+
table.long_text :content
|
295
|
+
end
|
296
|
+
Groonga::Schema.create_table("Terms") do |table|
|
297
|
+
table.index("Posts.content",
|
298
|
+
:name => index_column_name,
|
299
|
+
:path => path.to_s,
|
300
|
+
:persistent => true,
|
301
|
+
:with_section => true,
|
302
|
+
:with_weight => true,
|
303
|
+
:with_position => true)
|
304
|
+
end
|
305
|
+
|
306
|
+
posts = context["Posts"]
|
307
|
+
terms = context["Terms"]
|
308
|
+
full_index_column_name = "Terms.#{index_column_name}"
|
309
|
+
index_column = context[full_index_column_name]
|
310
|
+
assert_equal("#<Groonga::IndexColumn " +
|
311
|
+
"id: <#{index_column.id}>, " +
|
312
|
+
"name: <#{full_index_column_name}>, " +
|
313
|
+
"path: <#{path}>, " +
|
314
|
+
"domain: <Terms>, " +
|
315
|
+
"range: <Posts>, " +
|
316
|
+
"flags: <WITH_SECTION|WITH_WEIGHT|WITH_POSITION>>",
|
317
|
+
index_column.inspect)
|
318
|
+
end
|
319
|
+
|
320
|
+
def test_index_again
|
321
|
+
Groonga::Schema.create_table("Posts") do |table|
|
322
|
+
table.long_text :content
|
323
|
+
end
|
324
|
+
Groonga::Schema.create_table("Terms") do |table|
|
325
|
+
table.index "Posts.content"
|
326
|
+
end
|
327
|
+
|
328
|
+
assert_nothing_raised do
|
329
|
+
Groonga::Schema.create_table("Terms") do |table|
|
330
|
+
table.index "Posts.content"
|
331
|
+
end
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
def test_index_again_with_difference_source
|
336
|
+
Groonga::Schema.create_table("Posts") do |table|
|
337
|
+
table.long_text :content
|
338
|
+
table.short_text :name
|
339
|
+
end
|
340
|
+
Groonga::Schema.create_table("Terms") do |table|
|
341
|
+
table.index "Posts.content"
|
342
|
+
end
|
343
|
+
|
344
|
+
assert_raise(ArgumentError) do
|
345
|
+
Groonga::Schema.create_table("Terms") do |table|
|
346
|
+
table.index "Posts.name", :name => "Posts_content"
|
347
|
+
end
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
def test_index_key
|
352
|
+
Groonga::Schema.create_table("Posts",
|
353
|
+
:type => :hash,
|
354
|
+
:key_type => "ShortText") do |table|
|
355
|
+
end
|
356
|
+
Groonga::Schema.create_table("Terms") do |table|
|
357
|
+
table.index "Posts._key", :with_position => true
|
358
|
+
end
|
359
|
+
|
360
|
+
full_index_column_name = "Terms.Posts__key"
|
361
|
+
index_column = context[full_index_column_name]
|
362
|
+
assert_equal("#<Groonga::IndexColumn " +
|
363
|
+
"id: <#{index_column.id}>, " +
|
364
|
+
"name: <#{full_index_column_name}>, " +
|
365
|
+
"path: <#{index_column.path}>, " +
|
366
|
+
"domain: <Terms>, " +
|
367
|
+
"range: <Posts>, " +
|
368
|
+
"flags: <WITH_POSITION>>",
|
369
|
+
index_column.inspect)
|
370
|
+
end
|
371
|
+
|
372
|
+
def test_index_key_again
|
373
|
+
Groonga::Schema.create_table("Posts",
|
374
|
+
:type => :hash,
|
375
|
+
:key_type => "ShortText") do |table|
|
376
|
+
end
|
377
|
+
Groonga::Schema.create_table("Terms") do |table|
|
378
|
+
table.index "Posts._key", :with_position => true
|
379
|
+
end
|
380
|
+
|
381
|
+
assert_nothing_raised do
|
382
|
+
Groonga::Schema.create_table("Terms") do |table|
|
383
|
+
table.index "Posts._key"
|
384
|
+
end
|
385
|
+
end
|
386
|
+
end
|
387
|
+
|
388
|
+
def test_dump
|
389
|
+
Groonga::Schema.define do |schema|
|
390
|
+
schema.create_table("Posts") do |table|
|
391
|
+
table.short_text :title
|
392
|
+
end
|
393
|
+
end
|
394
|
+
assert_equal(<<-EOS, Groonga::Schema.dump)
|
395
|
+
create_table("Posts") do |table|
|
396
|
+
table.short_text("title")
|
397
|
+
end
|
398
|
+
EOS
|
399
|
+
end
|
400
|
+
|
401
|
+
def test_reference_dump
|
402
|
+
Groonga::Schema.define do |schema|
|
403
|
+
schema.create_table("Items") do |table|
|
404
|
+
table.short_text("title")
|
405
|
+
end
|
406
|
+
|
407
|
+
schema.create_table("Users") do |table|
|
408
|
+
table.short_text("name")
|
409
|
+
end
|
410
|
+
|
411
|
+
schema.create_table("Comments") do |table|
|
412
|
+
table.reference("item", "Items")
|
413
|
+
table.reference("author", "Users")
|
414
|
+
table.text("content")
|
415
|
+
table.time("issued")
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
assert_equal(<<-EOS, Groonga::Schema.dump)
|
420
|
+
create_table("Comments") do |table|
|
421
|
+
table.text("content")
|
422
|
+
table.time("issued")
|
423
|
+
end
|
424
|
+
|
425
|
+
create_table("Items") do |table|
|
426
|
+
table.short_text("title")
|
427
|
+
end
|
428
|
+
|
429
|
+
create_table("Users") do |table|
|
430
|
+
table.short_text("name")
|
431
|
+
end
|
432
|
+
|
433
|
+
change_table("Comments") do |table|
|
434
|
+
table.reference("author", "Users")
|
435
|
+
table.reference("item", "Items")
|
436
|
+
end
|
437
|
+
EOS
|
438
|
+
end
|
439
|
+
|
440
|
+
def test_explicit_context_create_table
|
441
|
+
context = Groonga::Context.default
|
442
|
+
Groonga::Context.default = nil
|
443
|
+
|
444
|
+
Groonga::Schema.define(:context => context) do |schema|
|
445
|
+
schema.create_table('Items', :type => :hash) do |table|
|
446
|
+
table.text("text")
|
447
|
+
end
|
448
|
+
schema.create_table("TermsText",
|
449
|
+
:type => :patricia_trie,
|
450
|
+
:key_normalize => true,
|
451
|
+
:default_tokenizer => "TokenBigram") do |table|
|
452
|
+
table.index('Items.text')
|
453
|
+
end
|
454
|
+
end
|
455
|
+
|
456
|
+
assert_not_nil(context["Items.text"])
|
457
|
+
assert_not_nil(context["TermsText.Items_text"])
|
458
|
+
end
|
459
|
+
end
|