arel 0.4.0 → 1.0.0.rc1

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.
Files changed (86) hide show
  1. data/README.markdown +24 -0
  2. data/lib/arel.rb +3 -1
  3. data/lib/arel/algebra/attributes/attribute.rb +175 -141
  4. data/lib/arel/algebra/core_extensions.rb +0 -1
  5. data/lib/arel/algebra/core_extensions/hash.rb +5 -9
  6. data/lib/arel/algebra/core_extensions/object.rb +0 -4
  7. data/lib/arel/algebra/expression.rb +37 -24
  8. data/lib/arel/algebra/header.rb +5 -6
  9. data/lib/arel/algebra/ordering.rb +13 -5
  10. data/lib/arel/algebra/predicates.rb +143 -27
  11. data/lib/arel/algebra/relations.rb +0 -1
  12. data/lib/arel/algebra/relations/operations/from.rb +10 -2
  13. data/lib/arel/algebra/relations/operations/group.rb +8 -6
  14. data/lib/arel/algebra/relations/operations/having.rb +3 -6
  15. data/lib/arel/algebra/relations/operations/join.rb +52 -18
  16. data/lib/arel/algebra/relations/operations/lock.rb +4 -6
  17. data/lib/arel/algebra/relations/operations/order.rb +11 -7
  18. data/lib/arel/algebra/relations/operations/project.rb +10 -10
  19. data/lib/arel/algebra/relations/operations/skip.rb +10 -3
  20. data/lib/arel/algebra/relations/operations/take.rb +10 -3
  21. data/lib/arel/algebra/relations/operations/where.rb +12 -6
  22. data/lib/arel/algebra/relations/relation.rb +161 -92
  23. data/lib/arel/algebra/relations/row.rb +8 -5
  24. data/lib/arel/algebra/relations/utilities/compound.rb +34 -33
  25. data/lib/arel/algebra/relations/utilities/externalization.rb +10 -8
  26. data/lib/arel/algebra/relations/writes.rb +24 -13
  27. data/lib/arel/algebra/value.rb +41 -2
  28. data/lib/arel/engines/memory.rb +0 -2
  29. data/lib/arel/engines/memory/engine.rb +3 -9
  30. data/lib/arel/engines/memory/relations.rb +0 -3
  31. data/lib/arel/engines/memory/relations/array.rb +5 -3
  32. data/lib/arel/engines/memory/relations/operations.rb +2 -60
  33. data/lib/arel/engines/sql.rb +0 -2
  34. data/lib/arel/engines/sql/christener.rb +12 -6
  35. data/lib/arel/engines/sql/compilers/oracle_compiler.rb +34 -23
  36. data/lib/arel/engines/sql/compilers/postgresql_compiler.rb +23 -15
  37. data/lib/arel/engines/sql/engine.rb +19 -27
  38. data/lib/arel/engines/sql/formatters.rb +26 -10
  39. data/lib/arel/engines/sql/relations.rb +0 -7
  40. data/lib/arel/engines/sql/relations/compiler.rb +70 -35
  41. data/lib/arel/engines/sql/relations/table.rb +44 -32
  42. data/lib/arel/{engines/sql/relations/utilities/recursion.rb → recursion/base_case.rb} +0 -0
  43. data/lib/arel/session.rb +24 -40
  44. data/lib/arel/sql_literal.rb +13 -0
  45. data/lib/arel/version.rb +1 -1
  46. data/spec/algebra/unit/predicates/inequality_spec.rb +32 -0
  47. data/spec/algebra/unit/predicates/predicate_spec.rb +22 -0
  48. data/spec/algebra/unit/primitives/attribute_spec.rb +3 -9
  49. data/spec/algebra/unit/primitives/expression_spec.rb +1 -7
  50. data/spec/algebra/unit/relations/join_spec.rb +0 -7
  51. data/spec/algebra/unit/relations/project_spec.rb +3 -3
  52. data/spec/algebra/unit/relations/relation_spec.rb +74 -25
  53. data/spec/algebra/unit/session/session_spec.rb +7 -7
  54. data/spec/engines/memory/integration/joins/cross_engine_spec.rb +20 -10
  55. data/spec/engines/memory/unit/relations/array_spec.rb +6 -5
  56. data/spec/engines/memory/unit/relations/join_spec.rb +7 -6
  57. data/spec/engines/memory/unit/relations/order_spec.rb +7 -6
  58. data/spec/engines/memory/unit/relations/project_spec.rb +6 -6
  59. data/spec/engines/memory/unit/relations/skip_spec.rb +10 -5
  60. data/spec/engines/memory/unit/relations/take_spec.rb +7 -5
  61. data/spec/engines/memory/unit/relations/where_spec.rb +13 -9
  62. data/spec/engines/sql/unit/engine_spec.rb +20 -0
  63. data/spec/engines/sql/unit/relations/group_spec.rb +2 -2
  64. data/spec/engines/sql/unit/relations/order_spec.rb +5 -5
  65. data/spec/engines/sql/unit/relations/project_spec.rb +4 -4
  66. data/spec/engines/sql/unit/relations/table_spec.rb +0 -7
  67. data/spec/engines/sql/unit/relations/take_spec.rb +26 -0
  68. data/spec/engines/sql/unit/relations/where_spec.rb +1 -1
  69. data/spec/spec_helper.rb +1 -4
  70. data/spec/sql/christener_spec.rb +70 -0
  71. data/spec/support/model.rb +7 -2
  72. metadata +109 -23
  73. data/lib/arel/algebra/core_extensions/class.rb +0 -32
  74. data/lib/arel/algebra/relations/operations/alias.rb +0 -7
  75. data/lib/arel/engines/memory/predicates.rb +0 -99
  76. data/lib/arel/engines/memory/primitives.rb +0 -27
  77. data/lib/arel/engines/memory/relations/compound.rb +0 -9
  78. data/lib/arel/engines/memory/relations/writes.rb +0 -7
  79. data/lib/arel/engines/sql/predicates.rb +0 -103
  80. data/lib/arel/engines/sql/primitives.rb +0 -97
  81. data/lib/arel/engines/sql/relations/operations/alias.rb +0 -5
  82. data/lib/arel/engines/sql/relations/operations/join.rb +0 -33
  83. data/lib/arel/engines/sql/relations/relation.rb +0 -65
  84. data/lib/arel/engines/sql/relations/utilities/compound.rb +0 -10
  85. data/lib/arel/engines/sql/relations/utilities/externalization.rb +0 -14
  86. data/lib/arel/engines/sql/relations/writes.rb +0 -19
@@ -1,6 +1,6 @@
1
1
  module Arel
2
2
  module Testing
3
- class Engine
3
+ class Engine < Arel::Memory::Engine
4
4
  attr_reader :rows
5
5
 
6
6
  def initialize
@@ -12,7 +12,12 @@ module Arel
12
12
  end
13
13
 
14
14
  def read(relation)
15
- @rows.dup.map { |r| Row.new(relation, r) }
15
+ case relation
16
+ when Arel::Take, Arel::Order, Arel::Skip, Arel::Where
17
+ relation.eval
18
+ else
19
+ @rows.dup.map { |r| Row.new(relation, r) }
20
+ end
16
21
  end
17
22
 
18
23
  def create(insert)
metadata CHANGED
@@ -1,12 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 977940574
5
+ prerelease: true
5
6
  segments:
7
+ - 1
6
8
  - 0
7
- - 4
8
9
  - 0
9
- version: 0.4.0
10
+ - rc1
11
+ version: 1.0.0.rc1
10
12
  platform: ruby
11
13
  authors:
12
14
  - Bryan Helmkamp
@@ -16,16 +18,18 @@ autorequire:
16
18
  bindir: bin
17
19
  cert_chain: []
18
20
 
19
- date: 2010-06-08 00:00:00 -04:00
21
+ date: 2010-06-08 00:00:00 -07:00
20
22
  default_executable:
21
23
  dependencies:
22
24
  - !ruby/object:Gem::Dependency
23
25
  name: activesupport
24
26
  prerelease: false
25
27
  requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
26
29
  requirements:
27
30
  - - ">="
28
31
  - !ruby/object:Gem::Version
32
+ hash: 31098225
29
33
  segments:
30
34
  - 3
31
35
  - 0
@@ -57,7 +61,6 @@ files:
57
61
  - lib/arel/algebra/attributes/string.rb
58
62
  - lib/arel/algebra/attributes/time.rb
59
63
  - lib/arel/algebra/attributes.rb
60
- - lib/arel/algebra/core_extensions/class.rb
61
64
  - lib/arel/algebra/core_extensions/hash.rb
62
65
  - lib/arel/algebra/core_extensions/object.rb
63
66
  - lib/arel/algebra/core_extensions/symbol.rb
@@ -66,7 +69,6 @@ files:
66
69
  - lib/arel/algebra/header.rb
67
70
  - lib/arel/algebra/ordering.rb
68
71
  - lib/arel/algebra/predicates.rb
69
- - lib/arel/algebra/relations/operations/alias.rb
70
72
  - lib/arel/algebra/relations/operations/from.rb
71
73
  - lib/arel/algebra/relations/operations/group.rb
72
74
  - lib/arel/algebra/relations/operations/having.rb
@@ -87,12 +89,8 @@ files:
87
89
  - lib/arel/algebra/value.rb
88
90
  - lib/arel/algebra.rb
89
91
  - lib/arel/engines/memory/engine.rb
90
- - lib/arel/engines/memory/predicates.rb
91
- - lib/arel/engines/memory/primitives.rb
92
92
  - lib/arel/engines/memory/relations/array.rb
93
- - lib/arel/engines/memory/relations/compound.rb
94
93
  - lib/arel/engines/memory/relations/operations.rb
95
- - lib/arel/engines/memory/relations/writes.rb
96
94
  - lib/arel/engines/memory/relations.rb
97
95
  - lib/arel/engines/memory.rb
98
96
  - lib/arel/engines/sql/attributes.rb
@@ -109,26 +107,105 @@ files:
109
107
  - lib/arel/engines/sql/core_extensions.rb
110
108
  - lib/arel/engines/sql/engine.rb
111
109
  - lib/arel/engines/sql/formatters.rb
112
- - lib/arel/engines/sql/predicates.rb
113
- - lib/arel/engines/sql/primitives.rb
114
110
  - lib/arel/engines/sql/relations/compiler.rb
115
- - lib/arel/engines/sql/relations/operations/alias.rb
116
- - lib/arel/engines/sql/relations/operations/join.rb
117
- - lib/arel/engines/sql/relations/relation.rb
118
111
  - lib/arel/engines/sql/relations/table.rb
119
- - lib/arel/engines/sql/relations/utilities/compound.rb
120
- - lib/arel/engines/sql/relations/utilities/externalization.rb
121
112
  - lib/arel/engines/sql/relations/utilities/nil.rb
122
- - lib/arel/engines/sql/relations/utilities/recursion.rb
123
- - lib/arel/engines/sql/relations/writes.rb
124
113
  - lib/arel/engines/sql/relations.rb
125
114
  - lib/arel/engines/sql.rb
126
115
  - lib/arel/engines.rb
116
+ - lib/arel/recursion/base_case.rb
127
117
  - lib/arel/session.rb
118
+ - lib/arel/sql_literal.rb
128
119
  - lib/arel/version.rb
129
120
  - lib/arel.rb
130
121
  - History.txt
131
122
  - README.markdown
123
+ - spec/algebra/unit/predicates/binary_spec.rb
124
+ - spec/algebra/unit/predicates/equality_spec.rb
125
+ - spec/algebra/unit/predicates/in_spec.rb
126
+ - spec/algebra/unit/predicates/inequality_spec.rb
127
+ - spec/algebra/unit/predicates/predicate_spec.rb
128
+ - spec/algebra/unit/primitives/attribute_spec.rb
129
+ - spec/algebra/unit/primitives/expression_spec.rb
130
+ - spec/algebra/unit/primitives/value_spec.rb
131
+ - spec/algebra/unit/relations/alias_spec.rb
132
+ - spec/algebra/unit/relations/delete_spec.rb
133
+ - spec/algebra/unit/relations/group_spec.rb
134
+ - spec/algebra/unit/relations/insert_spec.rb
135
+ - spec/algebra/unit/relations/join_spec.rb
136
+ - spec/algebra/unit/relations/order_spec.rb
137
+ - spec/algebra/unit/relations/project_spec.rb
138
+ - spec/algebra/unit/relations/relation_spec.rb
139
+ - spec/algebra/unit/relations/skip_spec.rb
140
+ - spec/algebra/unit/relations/table_spec.rb
141
+ - spec/algebra/unit/relations/take_spec.rb
142
+ - spec/algebra/unit/relations/update_spec.rb
143
+ - spec/algebra/unit/relations/where_spec.rb
144
+ - spec/algebra/unit/session/session_spec.rb
145
+ - spec/attributes/boolean_spec.rb
146
+ - spec/attributes/float_spec.rb
147
+ - spec/attributes/header_spec.rb
148
+ - spec/attributes/integer_spec.rb
149
+ - spec/attributes/string_spec.rb
150
+ - spec/attributes/time_spec.rb
151
+ - spec/engines/memory/integration/joins/cross_engine_spec.rb
152
+ - spec/engines/memory/unit/relations/array_spec.rb
153
+ - spec/engines/memory/unit/relations/insert_spec.rb
154
+ - spec/engines/memory/unit/relations/join_spec.rb
155
+ - spec/engines/memory/unit/relations/order_spec.rb
156
+ - spec/engines/memory/unit/relations/project_spec.rb
157
+ - spec/engines/memory/unit/relations/skip_spec.rb
158
+ - spec/engines/memory/unit/relations/take_spec.rb
159
+ - spec/engines/memory/unit/relations/where_spec.rb
160
+ - spec/engines/sql/integration/joins/with_adjacency_spec.rb
161
+ - spec/engines/sql/integration/joins/with_aggregations_spec.rb
162
+ - spec/engines/sql/integration/joins/with_compounds_spec.rb
163
+ - spec/engines/sql/unit/engine_spec.rb
164
+ - spec/engines/sql/unit/predicates/binary_spec.rb
165
+ - spec/engines/sql/unit/predicates/equality_spec.rb
166
+ - spec/engines/sql/unit/predicates/in_spec.rb
167
+ - spec/engines/sql/unit/predicates/noteq_spec.rb
168
+ - spec/engines/sql/unit/predicates/predicates_spec.rb
169
+ - spec/engines/sql/unit/primitives/attribute_spec.rb
170
+ - spec/engines/sql/unit/primitives/expression_spec.rb
171
+ - spec/engines/sql/unit/primitives/literal_spec.rb
172
+ - spec/engines/sql/unit/primitives/value_spec.rb
173
+ - spec/engines/sql/unit/relations/alias_spec.rb
174
+ - spec/engines/sql/unit/relations/delete_spec.rb
175
+ - spec/engines/sql/unit/relations/from_spec.rb
176
+ - spec/engines/sql/unit/relations/group_spec.rb
177
+ - spec/engines/sql/unit/relations/having_spec.rb
178
+ - spec/engines/sql/unit/relations/insert_spec.rb
179
+ - spec/engines/sql/unit/relations/join_spec.rb
180
+ - spec/engines/sql/unit/relations/lock_spec.rb
181
+ - spec/engines/sql/unit/relations/order_spec.rb
182
+ - spec/engines/sql/unit/relations/project_spec.rb
183
+ - spec/engines/sql/unit/relations/skip_spec.rb
184
+ - spec/engines/sql/unit/relations/table_spec.rb
185
+ - spec/engines/sql/unit/relations/take_spec.rb
186
+ - spec/engines/sql/unit/relations/update_spec.rb
187
+ - spec/engines/sql/unit/relations/where_spec.rb
188
+ - spec/relations/join_spec.rb
189
+ - spec/relations/relation_spec.rb
190
+ - spec/shared/relation_spec.rb
191
+ - spec/spec_helper.rb
192
+ - spec/sql/christener_spec.rb
193
+ - spec/support/check.rb
194
+ - spec/support/connections/mysql_connection.rb
195
+ - spec/support/connections/oracle_connection.rb
196
+ - spec/support/connections/postgresql_connection.rb
197
+ - spec/support/connections/sqlite3_connection.rb
198
+ - spec/support/guards.rb
199
+ - spec/support/matchers/be_like.rb
200
+ - spec/support/matchers/disambiguate_attributes.rb
201
+ - spec/support/matchers/hash_the_same_as.rb
202
+ - spec/support/matchers/have_rows.rb
203
+ - spec/support/matchers.rb
204
+ - spec/support/model.rb
205
+ - spec/support/schemas/mysql_schema.rb
206
+ - spec/support/schemas/oracle_schema.rb
207
+ - spec/support/schemas/postgresql_schema.rb
208
+ - spec/support/schemas/sqlite3_schema.rb
132
209
  has_rdoc: true
133
210
  homepage: http://github.com/brynary/arel
134
211
  licenses: []
@@ -139,23 +216,29 @@ rdoc_options: []
139
216
  require_paths:
140
217
  - lib
141
218
  required_ruby_version: !ruby/object:Gem::Requirement
219
+ none: false
142
220
  requirements:
143
221
  - - ">="
144
222
  - !ruby/object:Gem::Version
223
+ hash: 3
145
224
  segments:
146
225
  - 0
147
226
  version: "0"
148
227
  required_rubygems_version: !ruby/object:Gem::Requirement
228
+ none: false
149
229
  requirements:
150
- - - ">="
230
+ - - ">"
151
231
  - !ruby/object:Gem::Version
232
+ hash: 25
152
233
  segments:
153
- - 0
154
- version: "0"
234
+ - 1
235
+ - 3
236
+ - 1
237
+ version: 1.3.1
155
238
  requirements: []
156
239
 
157
240
  rubyforge_project: arel
158
- rubygems_version: 1.3.6
241
+ rubygems_version: 1.3.7
159
242
  signing_key:
160
243
  specification_version: 3
161
244
  summary: Arel is a relational algebra engine for Ruby
@@ -163,6 +246,8 @@ test_files:
163
246
  - spec/algebra/unit/predicates/binary_spec.rb
164
247
  - spec/algebra/unit/predicates/equality_spec.rb
165
248
  - spec/algebra/unit/predicates/in_spec.rb
249
+ - spec/algebra/unit/predicates/inequality_spec.rb
250
+ - spec/algebra/unit/predicates/predicate_spec.rb
166
251
  - spec/algebra/unit/primitives/attribute_spec.rb
167
252
  - spec/algebra/unit/primitives/expression_spec.rb
168
253
  - spec/algebra/unit/primitives/value_spec.rb
@@ -227,6 +312,7 @@ test_files:
227
312
  - spec/relations/relation_spec.rb
228
313
  - spec/shared/relation_spec.rb
229
314
  - spec/spec_helper.rb
315
+ - spec/sql/christener_spec.rb
230
316
  - spec/support/check.rb
231
317
  - spec/support/connections/mysql_connection.rb
232
318
  - spec/support/connections/oracle_connection.rb
@@ -1,32 +0,0 @@
1
- module Arel
2
- module ClassExtensions
3
- def attributes(*attrs)
4
- @attributes = attrs
5
- attr_reader(*attrs)
6
- end
7
-
8
- def deriving(*methods)
9
- methods.each { |m| derive m }
10
- end
11
-
12
- def derive(method_name)
13
- methods = {
14
- :initialize => "
15
- def #{method_name}(#{@attributes.join(',')})
16
- #{@attributes.collect { |a| "@#{a} = #{a}" }.join("\n")}
17
- end
18
- ",
19
- :== => "
20
- def ==(other)
21
- #{name} === other &&
22
- #{@attributes.collect { |a| "@#{a} == other.#{a}" }.join(" &&\n")}
23
- end
24
- "
25
- }
26
- class_eval methods[method_name], __FILE__, __LINE__
27
- end
28
-
29
- Class.send(:include, self)
30
- end
31
- end
32
-
@@ -1,7 +0,0 @@
1
- module Arel
2
- class Alias < Compound
3
- attributes :relation
4
- deriving :initialize
5
- alias_method :==, :equal?
6
- end
7
- end
@@ -1,99 +0,0 @@
1
- module Arel
2
- module Predicates
3
- class Binary < Predicate
4
- def eval(row)
5
- operand1.eval(row).send(operator, operand2.eval(row))
6
- end
7
- end
8
-
9
- class Unary < Predicate
10
- def eval(row)
11
- operand.eval(row).send(operator)
12
- end
13
- end
14
-
15
- class Not < Unary
16
- def eval(row)
17
- !operand.eval(row)
18
- end
19
- end
20
-
21
- class Polyadic < Predicate
22
- def eval(row)
23
- predicates.send(compounder) do |operation|
24
- operation.eval(row)
25
- end
26
- end
27
- end
28
-
29
- class Any < Polyadic
30
- def compounder; :any? end
31
- end
32
-
33
- class All < Polyadic
34
- def compounder; :all? end
35
- end
36
-
37
- class CompoundPredicate < Binary
38
- def eval(row)
39
- eval "operand1.eval(row) #{operator} operand2.eval(row)"
40
- end
41
- end
42
-
43
- class Or < CompoundPredicate
44
- def operator; :or end
45
- end
46
-
47
- class And < CompoundPredicate
48
- def operator; :and end
49
- end
50
-
51
- class Equality < Binary
52
- def operator; :== end
53
- end
54
-
55
- class Inequality < Binary
56
- def eval(row)
57
- operand1.eval(row) != operand2.eval(row)
58
- end
59
- end
60
-
61
- class GreaterThanOrEqualTo < Binary
62
- def operator; :>= end
63
- end
64
-
65
- class GreaterThan < Binary
66
- def operator; :> end
67
- end
68
-
69
- class LessThanOrEqualTo < Binary
70
- def operator; :<= end
71
- end
72
-
73
- class LessThan < Binary
74
- def operator; :< end
75
- end
76
-
77
- class Match < Binary
78
- def operator; :=~ end
79
- end
80
-
81
- class NotMatch < Binary
82
- def eval(row)
83
- operand1.eval(row) !~ operand2.eval(row)
84
- end
85
- end
86
-
87
- class In < Binary
88
- def eval(row)
89
- operand2.eval(row).include?(operand1.eval(row))
90
- end
91
- end
92
-
93
- class NotIn < Binary
94
- def eval(row)
95
- !(operand2.eval(row).include?(operand1.eval(row)))
96
- end
97
- end
98
- end
99
- end
@@ -1,27 +0,0 @@
1
- module Arel
2
- class Attribute
3
- def eval(row)
4
- row[self]
5
- end
6
- end
7
-
8
- class Value
9
- def eval(row)
10
- value
11
- end
12
- end
13
-
14
- class Ordering
15
- def eval(row1, row2)
16
- (attribute.eval(row1) <=> attribute.eval(row2)) * direction
17
- end
18
- end
19
-
20
- class Descending < Ordering
21
- def direction; -1 end
22
- end
23
-
24
- class Ascending < Ordering
25
- def direction; 1 end
26
- end
27
- end
@@ -1,9 +0,0 @@
1
- module Arel
2
- class Compound
3
- delegate :array, :to => :relation
4
-
5
- def unoperated_rows
6
- relation.call.collect { |row| row.bind(self) }
7
- end
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- module Arel
2
- class Insert < Compound
3
- def eval
4
- unoperated_rows + [Row.new(self, record.values.collect(&:value))]
5
- end
6
- end
7
- end
@@ -1,103 +0,0 @@
1
- module Arel
2
- module Predicates
3
- class Binary < Predicate
4
- def to_sql(formatter = nil)
5
- "#{operand1.to_sql} #{predicate_sql} #{operand1.format(operand2)}"
6
- end
7
- end
8
-
9
- class Unary < Predicate
10
- def to_sql(formatter = nil)
11
- "#{predicate_sql} (#{operand.to_sql(formatter)})"
12
- end
13
- end
14
-
15
- class Not < Unary
16
- def predicate_sql; "NOT" end
17
- end
18
-
19
- class CompoundPredicate < Binary
20
- def to_sql(formatter = nil)
21
- "(#{operand1.to_sql(formatter)} #{predicate_sql} #{operand2.to_sql(formatter)})"
22
- end
23
- end
24
-
25
- class Or < CompoundPredicate
26
- def predicate_sql; "OR" end
27
- end
28
-
29
- class And < CompoundPredicate
30
- def predicate_sql; "AND" end
31
- end
32
-
33
- class Polyadic < Predicate
34
- def to_sql(formatter = nil)
35
- "(" +
36
- predicates.map {|p| p.to_sql(formatter)}.join(" #{predicate_sql} ") +
37
- ")"
38
- end
39
- end
40
-
41
- class Any < Polyadic
42
- def predicate_sql; "OR" end
43
- end
44
-
45
- class All < Polyadic
46
- def predicate_sql; "AND" end
47
- end
48
-
49
- class Equality < Binary
50
- def predicate_sql
51
- operand2.equality_predicate_sql
52
- end
53
- end
54
-
55
- class Inequality < Binary
56
- def predicate_sql
57
- operand2.inequality_predicate_sql
58
- end
59
- end
60
-
61
- class GreaterThanOrEqualTo < Binary
62
- def predicate_sql; '>=' end
63
- end
64
-
65
- class GreaterThan < Binary
66
- def predicate_sql; '>' end
67
- end
68
-
69
- class LessThanOrEqualTo < Binary
70
- def predicate_sql; '<=' end
71
- end
72
-
73
- class LessThan < Binary
74
- def predicate_sql; '<' end
75
- end
76
-
77
- class Match < Binary
78
- def predicate_sql; 'LIKE' end
79
- end
80
-
81
- class NotMatch < Binary
82
- def predicate_sql; 'NOT LIKE' end
83
- end
84
-
85
- class In < Binary
86
- def to_sql(formatter = nil)
87
- if operand2.is_a?(Range) && operand2.exclude_end?
88
- GreaterThanOrEqualTo.new(operand1, operand2.begin).and(
89
- LessThan.new(operand1, operand2.end)
90
- ).to_sql(formatter)
91
- else
92
- super
93
- end
94
- end
95
-
96
- def predicate_sql; operand2.inclusion_predicate_sql end
97
- end
98
-
99
- class NotIn < Binary
100
- def predicate_sql; operand2.exclusion_predicate_sql end
101
- end
102
- end
103
- end