locomotive 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/locomotive.rb +6 -0
- data/lib/locomotive/core_extensions.rb +6 -0
- data/lib/locomotive/core_extensions/array.rb +22 -0
- data/lib/locomotive/core_extensions/class.rb +47 -0
- data/lib/locomotive/core_extensions/hash.rb +7 -0
- data/lib/locomotive/core_extensions/inflector.rb +29 -0
- data/lib/locomotive/core_extensions/module.rb +77 -0
- data/lib/locomotive/core_extensions/symbol.rb +17 -0
- data/lib/locomotive/misc.rb +1 -0
- data/lib/locomotive/misc/type_check.rb +129 -0
- data/lib/locomotive/relational_algebra.rb +8 -0
- data/lib/locomotive/relational_algebra/attributes.rb +171 -0
- data/lib/locomotive/relational_algebra/operators.rb +15 -0
- data/lib/locomotive/relational_algebra/operators/abstraction.rb +2 -0
- data/lib/locomotive/relational_algebra/operators/abstraction/lambda.rb +83 -0
- data/lib/locomotive/relational_algebra/operators/abstraction/variable.rb +65 -0
- data/lib/locomotive/relational_algebra/operators/aggregation.rb +2 -0
- data/lib/locomotive/relational_algebra/operators/aggregation/aggr_builtin.rb +26 -0
- data/lib/locomotive/relational_algebra/operators/aggregation/aggregation.rb +76 -0
- data/lib/locomotive/relational_algebra/operators/basic_operators.rb +144 -0
- data/lib/locomotive/relational_algebra/operators/boolean.rb +4 -0
- data/lib/locomotive/relational_algebra/operators/boolean/and.rb +9 -0
- data/lib/locomotive/relational_algebra/operators/boolean/basic_boolean.rb +66 -0
- data/lib/locomotive/relational_algebra/operators/boolean/not.rb +56 -0
- data/lib/locomotive/relational_algebra/operators/boolean/or.rb +9 -0
- data/lib/locomotive/relational_algebra/operators/builtins.rb +3 -0
- data/lib/locomotive/relational_algebra/operators/builtins/arith_builtin.rb +37 -0
- data/lib/locomotive/relational_algebra/operators/builtins/basic_builtin.rb +20 -0
- data/lib/locomotive/relational_algebra/operators/builtins/function.rb +69 -0
- data/lib/locomotive/relational_algebra/operators/comparisons.rb +6 -0
- data/lib/locomotive/relational_algebra/operators/comparisons/basic_comparison.rb +65 -0
- data/lib/locomotive/relational_algebra/operators/comparisons/equal.rb +13 -0
- data/lib/locomotive/relational_algebra/operators/comparisons/greater.rb +13 -0
- data/lib/locomotive/relational_algebra/operators/comparisons/greater_equal.rb +14 -0
- data/lib/locomotive/relational_algebra/operators/comparisons/less.rb +21 -0
- data/lib/locomotive/relational_algebra/operators/comparisons/less_equal.rb +13 -0
- data/lib/locomotive/relational_algebra/operators/error.rb +1 -0
- data/lib/locomotive/relational_algebra/operators/error/error.rb +52 -0
- data/lib/locomotive/relational_algebra/operators/filter.rb +1 -0
- data/lib/locomotive/relational_algebra/operators/filter/select.rb +50 -0
- data/lib/locomotive/relational_algebra/operators/join.rb +5 -0
- data/lib/locomotive/relational_algebra/operators/join/basic_join.rb +9 -0
- data/lib/locomotive/relational_algebra/operators/join/cross.rb +28 -0
- data/lib/locomotive/relational_algebra/operators/join/equi_join.rb +61 -0
- data/lib/locomotive/relational_algebra/operators/join/predicates.rb +95 -0
- data/lib/locomotive/relational_algebra/operators/join/theta_join.rb +53 -0
- data/lib/locomotive/relational_algebra/operators/projections.rb +2 -0
- data/lib/locomotive/relational_algebra/operators/projections/attach.rb +67 -0
- data/lib/locomotive/relational_algebra/operators/projections/projection.rb +106 -0
- data/lib/locomotive/relational_algebra/operators/ranking.rb +6 -0
- data/lib/locomotive/relational_algebra/operators/ranking/basic_ranking.rb +67 -0
- data/lib/locomotive/relational_algebra/operators/ranking/rank.rb +9 -0
- data/lib/locomotive/relational_algebra/operators/ranking/rank_lists.rb +45 -0
- data/lib/locomotive/relational_algebra/operators/ranking/row_id.rb +24 -0
- data/lib/locomotive/relational_algebra/operators/ranking/row_number.rb +55 -0
- data/lib/locomotive/relational_algebra/operators/ranking/row_rank.rb +9 -0
- data/lib/locomotive/relational_algebra/operators/serialization.rb +2 -0
- data/lib/locomotive/relational_algebra/operators/serialization/basic_serialize.rb +9 -0
- data/lib/locomotive/relational_algebra/operators/serialization/serialize_relation.rb +105 -0
- data/lib/locomotive/relational_algebra/operators/set.rb +4 -0
- data/lib/locomotive/relational_algebra/operators/set/basic_set.rb +24 -0
- data/lib/locomotive/relational_algebra/operators/set/difference.rb +11 -0
- data/lib/locomotive/relational_algebra/operators/set/distinct.rb +35 -0
- data/lib/locomotive/relational_algebra/operators/set/union.rb +11 -0
- data/lib/locomotive/relational_algebra/operators/tables.rb +3 -0
- data/lib/locomotive/relational_algebra/operators/tables/literal_table.rb +95 -0
- data/lib/locomotive/relational_algebra/operators/tables/nil.rb +13 -0
- data/lib/locomotive/relational_algebra/operators/tables/ref_table.rb +75 -0
- data/lib/locomotive/relational_algebra/operators/typeing.rb +1 -0
- data/lib/locomotive/relational_algebra/operators/typeing/cast.rb +59 -0
- data/lib/locomotive/relational_algebra/ordering.rb +30 -0
- data/lib/locomotive/relational_algebra/query_information.rb +666 -0
- data/lib/locomotive/relational_algebra/rel_alg_ast_node.rb +51 -0
- data/lib/locomotive/relational_algebra/rel_alg_exceptions.rb +15 -0
- data/lib/locomotive/relational_algebra/schema.rb +87 -0
- data/lib/locomotive/relational_algebra/types.rb +86 -0
- data/lib/locomotive/tree_helpers.rb +3 -0
- data/lib/locomotive/tree_helpers/annotations.rb +58 -0
- data/lib/locomotive/tree_helpers/ast.rb +99 -0
- data/lib/locomotive/tree_helpers/ast_traversal.rb +43 -0
- data/lib/locomotive/utils.rb +2 -0
- data/lib/locomotive/utils/relalg2xml.rb +239 -0
- data/lib/locomotive/utils/xml.rb +47 -0
- metadata +157 -0
@@ -0,0 +1,239 @@
|
|
1
|
+
module Locomotive
|
2
|
+
|
3
|
+
module Utilities
|
4
|
+
|
5
|
+
class RelAlg2XML
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def define_content_ranks(*mtds)
|
11
|
+
mtds.each do |mtd|
|
12
|
+
name = "content_#{mtd}".to_sym
|
13
|
+
define_method(name) do |ast|
|
14
|
+
cols = []
|
15
|
+
cols << column(nil, :name => ast.ann_res, :new => true)
|
16
|
+
pos = -1
|
17
|
+
ast.ann_order.keys.each do |ord|
|
18
|
+
cols << column(nil, :name => ord, :function => "sort",
|
19
|
+
:pos => pos += 1,
|
20
|
+
:direction => ast.ann_order[ord],
|
21
|
+
:new => false)
|
22
|
+
end
|
23
|
+
|
24
|
+
pos = -1
|
25
|
+
ast.ann_part.each do |part|
|
26
|
+
cols << column(nil, :name => part, :function => "part",
|
27
|
+
:pos => pos + 1,
|
28
|
+
:new => false)
|
29
|
+
end
|
30
|
+
|
31
|
+
cols.join("\n")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def define_content_cmp(*mtds)
|
37
|
+
mtds.each do |mtd|
|
38
|
+
name = "content_#{mtd}".to_sym
|
39
|
+
define_method(name) do |ast|
|
40
|
+
cols = []
|
41
|
+
cols << "<kind name=\"#{ast.ann_fun_kind}\"/>"
|
42
|
+
cols << column(nil, :name => ast.ann_result, :new => true)
|
43
|
+
cols << column(nil, :name => ast.ann_operands.first, :new => false, :position => 1)
|
44
|
+
cols << column(nil, :name => ast.ann_operands.last, :new => false, :position => 2)
|
45
|
+
cols.join("\n")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def edge(attrs)
|
53
|
+
attrlist = []
|
54
|
+
attrs.keys.each do |attr|
|
55
|
+
attrlist << "#{attr}=\"#{attrs[attr]}\""
|
56
|
+
end
|
57
|
+
|
58
|
+
"<edge #{attrlist.join(" ")}/>"
|
59
|
+
end
|
60
|
+
|
61
|
+
def schema(schema)
|
62
|
+
cols = []
|
63
|
+
schema.keys.each do |col|
|
64
|
+
cols << "<col name=\"#{col.to_s}\"" \
|
65
|
+
" types=\"#{schema[col].join(",")}\"/>"
|
66
|
+
end
|
67
|
+
cols.join("\n")
|
68
|
+
end
|
69
|
+
|
70
|
+
def value(inner_node, attrs)
|
71
|
+
attrlist = []
|
72
|
+
attrs.keys.each do |attr|
|
73
|
+
attrlist << "#{attr}=\"#{attrs[attr]}\""
|
74
|
+
end
|
75
|
+
|
76
|
+
"<value #{attrlist.join(" ")}#{inner_node ? ">" : "/>"}" \
|
77
|
+
"#{inner_node}#{inner_node ? "</value>" : ""}"
|
78
|
+
end
|
79
|
+
|
80
|
+
def column(inner_node, attrs)
|
81
|
+
attrlist = []
|
82
|
+
attrs.keys.each do |attr|
|
83
|
+
attrlist << "#{attr}=\"#{attrs[attr]}\""
|
84
|
+
end
|
85
|
+
|
86
|
+
"<column #{attrlist.join(" ")}#{inner_node ? ">\n" : "/>"}" \
|
87
|
+
"#{inner_node}#{inner_node ? "\n</column>" : ""}"
|
88
|
+
end
|
89
|
+
|
90
|
+
public
|
91
|
+
|
92
|
+
define_content_ranks :rowid, :rank, :rownum
|
93
|
+
define_content_cmp :eq, :lt, :gt, :leq, :geq
|
94
|
+
|
95
|
+
def initialize(ast)
|
96
|
+
@ast = ast
|
97
|
+
# create an identifier for each node by a preorder-traversal
|
98
|
+
# and enhance it by an xmlid-annotation
|
99
|
+
id = 0
|
100
|
+
@ast.traverse do |ast|
|
101
|
+
ast.ann_xmlid = (id += 1)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def content_table(ast)
|
106
|
+
cols = []
|
107
|
+
ast.ann_values.keys.each do |col|
|
108
|
+
cols << column(value(ast.ann_values[col], :type => ast.ann_schema[col].first),
|
109
|
+
:name => col, :new => true)
|
110
|
+
end
|
111
|
+
cols.join("\n")
|
112
|
+
end
|
113
|
+
|
114
|
+
def content_eqjoin(ast)
|
115
|
+
cols = []
|
116
|
+
cols << column(nil, :name => ast.ann_col1, :new => false, :position => 1)
|
117
|
+
cols << column(nil, :name => ast.ann_col2, :new => false, :position => 2)
|
118
|
+
cols.join("\n")
|
119
|
+
end
|
120
|
+
|
121
|
+
def content_project(ast)
|
122
|
+
cols = []
|
123
|
+
ast.ann_items.keys.each do |old|
|
124
|
+
ast.ann_items[old].each do |new|
|
125
|
+
cols << column(nil, :name => new, :old_name => old, :new => (new != old))
|
126
|
+
end
|
127
|
+
end
|
128
|
+
cols.join("\n")
|
129
|
+
end
|
130
|
+
|
131
|
+
def content_cross(ast)
|
132
|
+
end
|
133
|
+
|
134
|
+
def content_union(ast)
|
135
|
+
end
|
136
|
+
|
137
|
+
def content_serialize_relation(ast)
|
138
|
+
cols = []
|
139
|
+
cols << column(nil, :name => ast.ann_iter, :new => false, :function => :iter)
|
140
|
+
cols << column(nil, :name => ast.ann_pos, :new => false, :function => :pos)
|
141
|
+
pos = 0
|
142
|
+
ast.ann_items.each do |item|
|
143
|
+
cols << column(nil, :name => item, :new => false, :function => :item, :position => pos)
|
144
|
+
pos += 1
|
145
|
+
end
|
146
|
+
cols.join("\n")
|
147
|
+
end
|
148
|
+
|
149
|
+
def content_ref_tbl(ast)
|
150
|
+
cols = []
|
151
|
+
cols << "<table name=\"#{ast.value}\">"
|
152
|
+
ast.ann_items.keys.each do |col|
|
153
|
+
cols << column(nil, :name => col, :tname => ast.ann_items[col],
|
154
|
+
:type => ast.ann_schema[col].join(","))
|
155
|
+
end
|
156
|
+
cols << "</table>"
|
157
|
+
cols.join("\n")
|
158
|
+
end
|
159
|
+
|
160
|
+
def content_attach(ast)
|
161
|
+
cols = []
|
162
|
+
col = ast.value.first.first
|
163
|
+
cols << column(value(ast.value[col].first, :type => ast.ann_schema[col].first),
|
164
|
+
:name => col, :new => true)
|
165
|
+
cols.join("\n")
|
166
|
+
end
|
167
|
+
|
168
|
+
def content_nil(ast)
|
169
|
+
end
|
170
|
+
|
171
|
+
def content_fun(ast)
|
172
|
+
cols = []
|
173
|
+
cols << "<kind name=\"#{ast.ann_fun_kind}\"/>"
|
174
|
+
cols << column(nil, :name => ast.ann_result, :new => true)
|
175
|
+
cols << column(nil, :name => ast.ann_operands.first, :new => false, :position => 1)
|
176
|
+
cols << column(nil, :name => ast.ann_operands.last, :new => false, :position => 2)
|
177
|
+
cols.join("\n")
|
178
|
+
end
|
179
|
+
|
180
|
+
def to_xml_wrapper(ast)
|
181
|
+
#<schema>
|
182
|
+
#{schema ast.ann_schema}
|
183
|
+
#</schema>
|
184
|
+
<<XMLNODE
|
185
|
+
<node id=\"#{ast.ann_xmlid.to_s}\" kind=\"#{ast.kind.to_s}\">
|
186
|
+
<content>
|
187
|
+
#{ content_method = "content_#{->(kind) {
|
188
|
+
if kind == "serialize relation".to_sym then
|
189
|
+
:serialize_relation
|
190
|
+
else
|
191
|
+
kind
|
192
|
+
end }[ast.kind]}"
|
193
|
+
if !self.respond_to?(content_method) then
|
194
|
+
"<nocontent/>"
|
195
|
+
else
|
196
|
+
self.send(content_method, ast)
|
197
|
+
end}
|
198
|
+
</content>
|
199
|
+
#{edges = []
|
200
|
+
edges << edge(:to => ast.left_child.ann_xmlid) if ast.has_left_child?
|
201
|
+
edges << edge(:to => ast.right_child.ann_xmlid) if ast.has_right_child?
|
202
|
+
edges.join("\n")
|
203
|
+
}
|
204
|
+
</node>
|
205
|
+
XMLNODE
|
206
|
+
end
|
207
|
+
|
208
|
+
def to_xml
|
209
|
+
|
210
|
+
node_list = []
|
211
|
+
|
212
|
+
node_list << <<PROLOG
|
213
|
+
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
214
|
+
<query_plan_bundle>
|
215
|
+
<query_plan id=\"0\">
|
216
|
+
<properties>
|
217
|
+
<property name=\"overallResultType\" value=\"TUPLE\"/>
|
218
|
+
</properties>
|
219
|
+
<logical_query_plan unique_names=\"true\">
|
220
|
+
PROLOG
|
221
|
+
|
222
|
+
@ast.traverse_strategy = Locomotive::AstHelpers::PostOrderTraverse
|
223
|
+
@ast.traverse do |ast|
|
224
|
+
node_list << to_xml_wrapper(ast)
|
225
|
+
end
|
226
|
+
|
227
|
+
node_list << <<EPILOG
|
228
|
+
</logical_query_plan>
|
229
|
+
</query_plan>
|
230
|
+
</query_plan_bundle>
|
231
|
+
EPILOG
|
232
|
+
|
233
|
+
node_list.join("\n")
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
end
|
238
|
+
|
239
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Locomotive
|
2
|
+
|
3
|
+
module XML
|
4
|
+
|
5
|
+
def self.included(klass)
|
6
|
+
klass.extend ClassMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
|
11
|
+
def def_node(*mtds)
|
12
|
+
mtds.each do |mtd|
|
13
|
+
define_method(mtd) do |attrs={},&block|
|
14
|
+
attr_list = []
|
15
|
+
attrs.keys.each do |attr|
|
16
|
+
attr_list << "#{attr}=#{quote(attrs[attr])}"
|
17
|
+
end
|
18
|
+
mtd_name = mtd.to_s
|
19
|
+
if /^_?(?<name>[a-z]*)_?$/i =~ mtd_name.to_s
|
20
|
+
mtd_name = name
|
21
|
+
end
|
22
|
+
xml = "<#{mtd_name}"
|
23
|
+
xml += " " unless attr_list.empty?
|
24
|
+
if block.nil?
|
25
|
+
xml += "#{attr_list.join(" ")}/>\n"
|
26
|
+
else
|
27
|
+
content = block.call.to_s
|
28
|
+
xml += "#{attr_list.join(" ")}>#{content.length < 60 ? "" : "\n"}" \
|
29
|
+
"#{content}#{content.length < 60 ? "" : "\n"}" \
|
30
|
+
"</#{mtd_name}>\n"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def quote(val)
|
38
|
+
"\"#{val}\""
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_xml
|
42
|
+
"#{self.class.to_s.split("::").last.downcase}".to_sym
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
metadata
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: locomotive
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Manuel Mayr
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-06-30 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: |-
|
23
|
+
Ruby representation of the Pathfinder-Algebra
|
24
|
+
(http://www-db.informatik.uni-tuebingen.de/research/pathfinder).
|
25
|
+
|
26
|
+
This gem provides a Ruby interface to the Pathfinder-Algebra.
|
27
|
+
Taking an algebraic plan in XML, Pathfinder is able to generate
|
28
|
+
code for various database systems (SQL-99 conformant, MonetDB,
|
29
|
+
X100, ...). In order to generate efficient target code it also
|
30
|
+
does heavy optimization on the input plans.
|
31
|
+
email: mayr@informatik.uni-tuebingen.de
|
32
|
+
executables: []
|
33
|
+
|
34
|
+
extensions: []
|
35
|
+
|
36
|
+
extra_rdoc_files: []
|
37
|
+
|
38
|
+
files:
|
39
|
+
- lib/locomotive.rb
|
40
|
+
- lib/locomotive/misc.rb
|
41
|
+
- lib/locomotive/misc/type_check.rb
|
42
|
+
- lib/locomotive/core_extensions.rb
|
43
|
+
- lib/locomotive/core_extensions/class.rb
|
44
|
+
- lib/locomotive/core_extensions/module.rb
|
45
|
+
- lib/locomotive/core_extensions/array.rb
|
46
|
+
- lib/locomotive/core_extensions/hash.rb
|
47
|
+
- lib/locomotive/core_extensions/inflector.rb
|
48
|
+
- lib/locomotive/core_extensions/symbol.rb
|
49
|
+
- lib/locomotive/relational_algebra.rb
|
50
|
+
- lib/locomotive/relational_algebra/attributes.rb
|
51
|
+
- lib/locomotive/relational_algebra/operators.rb
|
52
|
+
- lib/locomotive/relational_algebra/operators/abstraction.rb
|
53
|
+
- lib/locomotive/relational_algebra/operators/abstraction/lambda.rb
|
54
|
+
- lib/locomotive/relational_algebra/operators/abstraction/variable.rb
|
55
|
+
- lib/locomotive/relational_algebra/operators/aggregation.rb
|
56
|
+
- lib/locomotive/relational_algebra/operators/aggregation/aggr_builtin.rb
|
57
|
+
- lib/locomotive/relational_algebra/operators/aggregation/aggregation.rb
|
58
|
+
- lib/locomotive/relational_algebra/operators/basic_operators.rb
|
59
|
+
- lib/locomotive/relational_algebra/operators/boolean.rb
|
60
|
+
- lib/locomotive/relational_algebra/operators/boolean/and.rb
|
61
|
+
- lib/locomotive/relational_algebra/operators/boolean/basic_boolean.rb
|
62
|
+
- lib/locomotive/relational_algebra/operators/boolean/or.rb
|
63
|
+
- lib/locomotive/relational_algebra/operators/boolean/not.rb
|
64
|
+
- lib/locomotive/relational_algebra/operators/builtins.rb
|
65
|
+
- lib/locomotive/relational_algebra/operators/builtins/arith_builtin.rb
|
66
|
+
- lib/locomotive/relational_algebra/operators/builtins/basic_builtin.rb
|
67
|
+
- lib/locomotive/relational_algebra/operators/builtins/function.rb
|
68
|
+
- lib/locomotive/relational_algebra/operators/comparisons.rb
|
69
|
+
- lib/locomotive/relational_algebra/operators/comparisons/basic_comparison.rb
|
70
|
+
- lib/locomotive/relational_algebra/operators/comparisons/equal.rb
|
71
|
+
- lib/locomotive/relational_algebra/operators/comparisons/greater.rb
|
72
|
+
- lib/locomotive/relational_algebra/operators/comparisons/greater_equal.rb
|
73
|
+
- lib/locomotive/relational_algebra/operators/comparisons/less.rb
|
74
|
+
- lib/locomotive/relational_algebra/operators/comparisons/less_equal.rb
|
75
|
+
- lib/locomotive/relational_algebra/operators/filter.rb
|
76
|
+
- lib/locomotive/relational_algebra/operators/filter/select.rb
|
77
|
+
- lib/locomotive/relational_algebra/operators/join.rb
|
78
|
+
- lib/locomotive/relational_algebra/operators/join/basic_join.rb
|
79
|
+
- lib/locomotive/relational_algebra/operators/join/cross.rb
|
80
|
+
- lib/locomotive/relational_algebra/operators/join/equi_join.rb
|
81
|
+
- lib/locomotive/relational_algebra/operators/join/predicates.rb
|
82
|
+
- lib/locomotive/relational_algebra/operators/join/theta_join.rb
|
83
|
+
- lib/locomotive/relational_algebra/operators/projections.rb
|
84
|
+
- lib/locomotive/relational_algebra/operators/projections/attach.rb
|
85
|
+
- lib/locomotive/relational_algebra/operators/projections/projection.rb
|
86
|
+
- lib/locomotive/relational_algebra/operators/ranking.rb
|
87
|
+
- lib/locomotive/relational_algebra/operators/ranking/basic_ranking.rb
|
88
|
+
- lib/locomotive/relational_algebra/operators/ranking/rank.rb
|
89
|
+
- lib/locomotive/relational_algebra/operators/ranking/rank_lists.rb
|
90
|
+
- lib/locomotive/relational_algebra/operators/ranking/row_id.rb
|
91
|
+
- lib/locomotive/relational_algebra/operators/ranking/row_number.rb
|
92
|
+
- lib/locomotive/relational_algebra/operators/ranking/row_rank.rb
|
93
|
+
- lib/locomotive/relational_algebra/operators/serialization.rb
|
94
|
+
- lib/locomotive/relational_algebra/operators/serialization/basic_serialize.rb
|
95
|
+
- lib/locomotive/relational_algebra/operators/serialization/serialize_relation.rb
|
96
|
+
- lib/locomotive/relational_algebra/operators/set.rb
|
97
|
+
- lib/locomotive/relational_algebra/operators/set/basic_set.rb
|
98
|
+
- lib/locomotive/relational_algebra/operators/set/difference.rb
|
99
|
+
- lib/locomotive/relational_algebra/operators/set/union.rb
|
100
|
+
- lib/locomotive/relational_algebra/operators/set/distinct.rb
|
101
|
+
- lib/locomotive/relational_algebra/operators/tables.rb
|
102
|
+
- lib/locomotive/relational_algebra/operators/tables/literal_table.rb
|
103
|
+
- lib/locomotive/relational_algebra/operators/tables/nil.rb
|
104
|
+
- lib/locomotive/relational_algebra/operators/tables/ref_table.rb
|
105
|
+
- lib/locomotive/relational_algebra/operators/typeing.rb
|
106
|
+
- lib/locomotive/relational_algebra/operators/typeing/cast.rb
|
107
|
+
- lib/locomotive/relational_algebra/operators/error.rb
|
108
|
+
- lib/locomotive/relational_algebra/operators/error/error.rb
|
109
|
+
- lib/locomotive/relational_algebra/ordering.rb
|
110
|
+
- lib/locomotive/relational_algebra/query_information.rb
|
111
|
+
- lib/locomotive/relational_algebra/rel_alg_ast_node.rb
|
112
|
+
- lib/locomotive/relational_algebra/rel_alg_exceptions.rb
|
113
|
+
- lib/locomotive/relational_algebra/schema.rb
|
114
|
+
- lib/locomotive/relational_algebra/types.rb
|
115
|
+
- lib/locomotive/tree_helpers.rb
|
116
|
+
- lib/locomotive/tree_helpers/annotations.rb
|
117
|
+
- lib/locomotive/tree_helpers/ast.rb
|
118
|
+
- lib/locomotive/tree_helpers/ast_traversal.rb
|
119
|
+
- lib/locomotive/utils.rb
|
120
|
+
- lib/locomotive/utils/relalg2xml.rb
|
121
|
+
- lib/locomotive/utils/xml.rb
|
122
|
+
has_rdoc: true
|
123
|
+
homepage: http://www-db.informatik.uni-tuebingen.de/research/pathfinder
|
124
|
+
licenses: []
|
125
|
+
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
hash: 3
|
137
|
+
segments:
|
138
|
+
- 0
|
139
|
+
version: "0"
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
hash: 3
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
version: "0"
|
149
|
+
requirements: []
|
150
|
+
|
151
|
+
rubyforge_project:
|
152
|
+
rubygems_version: 1.3.7
|
153
|
+
signing_key:
|
154
|
+
specification_version: 3
|
155
|
+
summary: ""
|
156
|
+
test_files: []
|
157
|
+
|