arel 7.1.4 → 9.0.0
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/History.txt +10 -18
- data/README.md +14 -3
- data/lib/arel/alias_predication.rb +1 -0
- data/lib/arel/attributes/attribute.rb +1 -0
- data/lib/arel/attributes.rb +1 -0
- data/lib/arel/collectors/bind.rb +6 -18
- data/lib/arel/collectors/composite.rb +32 -0
- data/lib/arel/collectors/plain_string.rb +2 -1
- data/lib/arel/collectors/sql_string.rb +1 -1
- data/lib/arel/collectors/substitute_binds.rb +28 -0
- data/lib/arel/compatibility/wheres.rb +1 -0
- data/lib/arel/crud.rb +1 -0
- data/lib/arel/delete_manager.rb +1 -0
- data/lib/arel/errors.rb +8 -0
- data/lib/arel/expressions.rb +1 -0
- data/lib/arel/factory_methods.rb +1 -0
- data/lib/arel/insert_manager.rb +6 -0
- data/lib/arel/math.rb +1 -0
- data/lib/arel/nodes/and.rb +1 -0
- data/lib/arel/nodes/ascending.rb +1 -0
- data/lib/arel/nodes/binary.rb +1 -0
- data/lib/arel/nodes/bind_param.rb +20 -2
- data/lib/arel/nodes/case.rb +1 -0
- data/lib/arel/nodes/casted.rb +2 -1
- data/lib/arel/nodes/count.rb +3 -0
- data/lib/arel/nodes/delete_statement.rb +1 -0
- data/lib/arel/nodes/descending.rb +1 -0
- data/lib/arel/nodes/equality.rb +1 -0
- data/lib/arel/nodes/extract.rb +1 -0
- data/lib/arel/nodes/false.rb +2 -0
- data/lib/arel/nodes/full_outer_join.rb +1 -0
- data/lib/arel/nodes/function.rb +3 -0
- data/lib/arel/nodes/grouping.rb +1 -0
- data/lib/arel/nodes/in.rb +1 -0
- data/lib/arel/nodes/infix_operation.rb +1 -0
- data/lib/arel/nodes/inner_join.rb +1 -0
- data/lib/arel/nodes/insert_statement.rb +1 -0
- data/lib/arel/nodes/join_source.rb +1 -0
- data/lib/arel/nodes/matches.rb +1 -0
- data/lib/arel/nodes/named_function.rb +1 -0
- data/lib/arel/nodes/node.rb +1 -0
- data/lib/arel/nodes/outer_join.rb +1 -0
- data/lib/arel/nodes/over.rb +1 -0
- data/lib/arel/nodes/regexp.rb +1 -0
- data/lib/arel/nodes/right_outer_join.rb +1 -0
- data/lib/arel/nodes/select_core.rb +1 -0
- data/lib/arel/nodes/select_statement.rb +1 -0
- data/lib/arel/nodes/sql_literal.rb +1 -0
- data/lib/arel/nodes/string_join.rb +1 -0
- data/lib/arel/nodes/table_alias.rb +1 -0
- data/lib/arel/nodes/terminal.rb +2 -0
- data/lib/arel/nodes/true.rb +2 -0
- data/lib/arel/nodes/unary.rb +1 -0
- data/lib/arel/nodes/unary_operation.rb +1 -0
- data/lib/arel/nodes/unqualified_column.rb +1 -0
- data/lib/arel/nodes/update_statement.rb +1 -0
- data/lib/arel/nodes/values.rb +1 -0
- data/lib/arel/nodes/values_list.rb +23 -0
- data/lib/arel/nodes/window.rb +2 -0
- data/lib/arel/nodes/with.rb +1 -0
- data/lib/arel/nodes.rb +2 -0
- data/lib/arel/order_predications.rb +1 -0
- data/lib/arel/predications.rb +1 -0
- data/lib/arel/select_manager.rb +2 -1
- data/lib/arel/table.rb +2 -13
- data/lib/arel/tree_manager.rb +3 -5
- data/lib/arel/update_manager.rb +1 -0
- data/lib/arel/visitors/depth_first.rb +1 -0
- data/lib/arel/visitors/dot.rb +2 -1
- data/lib/arel/visitors/ibm_db.rb +1 -0
- data/lib/arel/visitors/informix.rb +1 -2
- data/lib/arel/visitors/mssql.rb +1 -0
- data/lib/arel/visitors/mysql.rb +1 -0
- data/lib/arel/visitors/oracle.rb +7 -6
- data/lib/arel/visitors/oracle12.rb +2 -1
- data/lib/arel/visitors/postgresql.rb +2 -1
- data/lib/arel/visitors/reduce.rb +4 -2
- data/lib/arel/visitors/sqlite.rb +1 -0
- data/lib/arel/visitors/to_sql.rb +34 -49
- data/lib/arel/visitors/visitor.rb +4 -2
- data/lib/arel/visitors/where_sql.rb +1 -0
- data/lib/arel/visitors.rb +1 -0
- data/lib/arel/window_predications.rb +1 -0
- data/lib/arel.rb +4 -1
- metadata +22 -6
- data/lib/arel/visitors/bind_substitute.rb +0 -9
- data/lib/arel/visitors/bind_visitor.rb +0 -39
data/lib/arel/nodes/window.rb
CHANGED
data/lib/arel/nodes/with.rb
CHANGED
data/lib/arel/nodes.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# node
|
2
3
|
require 'arel/nodes/node'
|
3
4
|
require 'arel/nodes/select_statement'
|
@@ -43,6 +44,7 @@ require 'arel/nodes/function'
|
|
43
44
|
require 'arel/nodes/count'
|
44
45
|
require 'arel/nodes/extract'
|
45
46
|
require 'arel/nodes/values'
|
47
|
+
require 'arel/nodes/values_list'
|
46
48
|
require 'arel/nodes/named_function'
|
47
49
|
|
48
50
|
# windows
|
data/lib/arel/predications.rb
CHANGED
data/lib/arel/select_manager.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'arel/collectors/sql_string'
|
2
3
|
|
3
4
|
module Arel
|
@@ -106,7 +107,7 @@ module Arel
|
|
106
107
|
|
107
108
|
case relation
|
108
109
|
when String, Nodes::SqlLiteral
|
109
|
-
raise if relation.empty?
|
110
|
+
raise EmptyJoinError if relation.empty?
|
110
111
|
klass = Nodes::StringJoin
|
111
112
|
end
|
112
113
|
|
data/lib/arel/table.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
class Table
|
3
4
|
include Arel::Crud
|
@@ -13,7 +14,6 @@ module Arel
|
|
13
14
|
|
14
15
|
def initialize(name, as: nil, type_caster: nil)
|
15
16
|
@name = name.to_s
|
16
|
-
@columns = nil
|
17
17
|
@type_caster = type_caster
|
18
18
|
|
19
19
|
# Sometime AR sends an :as parameter to table, to let the table know
|
@@ -38,7 +38,7 @@ module Arel
|
|
38
38
|
|
39
39
|
case relation
|
40
40
|
when String, Nodes::SqlLiteral
|
41
|
-
raise if relation.empty?
|
41
|
+
raise EmptyJoinError if relation.empty?
|
42
42
|
klass = Nodes::StringJoin
|
43
43
|
end
|
44
44
|
|
@@ -106,16 +106,5 @@ module Arel
|
|
106
106
|
protected
|
107
107
|
|
108
108
|
attr_reader :type_caster
|
109
|
-
|
110
|
-
private
|
111
|
-
|
112
|
-
def attributes_for columns
|
113
|
-
return nil unless columns
|
114
|
-
|
115
|
-
columns.map do |column|
|
116
|
-
Attributes.for(column).new self, column.name.to_sym
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
109
|
end
|
121
110
|
end
|
data/lib/arel/tree_manager.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'arel/collectors/sql_string'
|
2
3
|
|
3
4
|
module Arel
|
4
5
|
class TreeManager
|
5
6
|
include Arel::FactoryMethods
|
6
7
|
|
7
|
-
attr_reader :ast
|
8
|
-
|
9
|
-
attr_accessor :bind_values
|
8
|
+
attr_reader :ast
|
10
9
|
|
11
10
|
def initialize
|
12
|
-
@ctx
|
13
|
-
@bind_values = []
|
11
|
+
@ctx = nil
|
14
12
|
end
|
15
13
|
|
16
14
|
def to_dot
|
data/lib/arel/update_manager.rb
CHANGED
data/lib/arel/visitors/dot.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
module Visitors
|
3
4
|
class Dot < Arel::Visitors::Visitor
|
@@ -277,7 +278,7 @@ module Arel
|
|
277
278
|
label = "<f0>#{node.name}"
|
278
279
|
|
279
280
|
node.fields.each_with_index do |field, i|
|
280
|
-
label
|
281
|
+
label += "|<f#{i + 1}>#{quote field}"
|
281
282
|
end
|
282
283
|
|
283
284
|
"#{node.id} [label=\"#{label}\"];"
|
data/lib/arel/visitors/ibm_db.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
module Visitors
|
3
4
|
class Informix < Arel::Visitors::ToSql
|
@@ -17,9 +18,7 @@ module Arel
|
|
17
18
|
end
|
18
19
|
def visit_Arel_Nodes_SelectCore o, collector
|
19
20
|
collector = inject_join o.projections, collector, ", "
|
20
|
-
froms = false
|
21
21
|
if o.source && !o.source.empty?
|
22
|
-
froms = true
|
23
22
|
collector << " FROM "
|
24
23
|
collector = visit o.source, collector
|
25
24
|
end
|
data/lib/arel/visitors/mssql.rb
CHANGED
data/lib/arel/visitors/mysql.rb
CHANGED
data/lib/arel/visitors/oracle.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
module Visitors
|
3
4
|
class Oracle < Arel::Visitors::ToSql
|
@@ -28,12 +29,12 @@ module Arel
|
|
28
29
|
collector = super(o, collector)
|
29
30
|
|
30
31
|
if offset.expr.is_a? Nodes::BindParam
|
31
|
-
offset_bind = nil
|
32
32
|
collector << ') raw_sql_ WHERE rownum <= ('
|
33
|
-
collector
|
33
|
+
collector = visit offset.expr, collector
|
34
34
|
collector << ' + '
|
35
|
-
collector
|
36
|
-
collector << ") ) WHERE raw_rnum_ >
|
35
|
+
collector = visit limit, collector
|
36
|
+
collector << ") ) WHERE raw_rnum_ > "
|
37
|
+
collector = visit offset.expr, collector
|
37
38
|
return collector
|
38
39
|
else
|
39
40
|
collector << ") raw_sql_
|
@@ -136,7 +137,7 @@ module Arel
|
|
136
137
|
array[i] << ',' << part
|
137
138
|
else
|
138
139
|
# to ensure that array[i] will be String and not Arel::Nodes::SqlLiteral
|
139
|
-
array[i] =
|
140
|
+
array[i] = part.to_s
|
140
141
|
end
|
141
142
|
i += 1 if array[i].count('(') == array[i].count(')')
|
142
143
|
end
|
@@ -144,7 +145,7 @@ module Arel
|
|
144
145
|
end
|
145
146
|
|
146
147
|
def visit_Arel_Nodes_BindParam o, collector
|
147
|
-
collector.add_bind(o) { |i| ":a#{i}" }
|
148
|
+
collector.add_bind(o.value) { |i| ":a#{i}" }
|
148
149
|
end
|
149
150
|
|
150
151
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
module Visitors
|
3
4
|
class Oracle12 < Arel::Visitors::ToSql
|
@@ -52,7 +53,7 @@ module Arel
|
|
52
53
|
end
|
53
54
|
|
54
55
|
def visit_Arel_Nodes_BindParam o, collector
|
55
|
-
collector.add_bind(o) { |i| ":a#{i}" }
|
56
|
+
collector.add_bind(o.value) { |i| ":a#{i}" }
|
56
57
|
end
|
57
58
|
end
|
58
59
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
module Visitors
|
3
4
|
class PostgreSQL < Arel::Visitors::ToSql
|
@@ -45,7 +46,7 @@ module Arel
|
|
45
46
|
end
|
46
47
|
|
47
48
|
def visit_Arel_Nodes_BindParam o, collector
|
48
|
-
collector.add_bind(o) { |i| "$#{i}" }
|
49
|
+
collector.add_bind(o.value) { |i| "$#{i}" }
|
49
50
|
end
|
50
51
|
|
51
52
|
def visit_Arel_Nodes_GroupingElement o, collector
|
data/lib/arel/visitors/reduce.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'arel/visitors/visitor'
|
2
3
|
|
3
4
|
module Arel
|
@@ -10,9 +11,10 @@ module Arel
|
|
10
11
|
private
|
11
12
|
|
12
13
|
def visit object, collector
|
13
|
-
|
14
|
+
dispatch_method = dispatch[object.class]
|
15
|
+
send dispatch_method, object, collector
|
14
16
|
rescue NoMethodError => e
|
15
|
-
raise e if respond_to?(
|
17
|
+
raise e if respond_to?(dispatch_method, true)
|
16
18
|
superklass = object.class.ancestors.find { |klass|
|
17
19
|
respond_to?(dispatch[klass], true)
|
18
20
|
}
|
data/lib/arel/visitors/sqlite.rb
CHANGED
data/lib/arel/visitors/to_sql.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'bigdecimal'
|
2
3
|
require 'date'
|
3
4
|
require 'arel/visitors/reduce'
|
@@ -75,15 +76,11 @@ module Arel
|
|
75
76
|
|
76
77
|
private
|
77
78
|
|
78
|
-
def schema_cache
|
79
|
-
@connection.schema_cache
|
80
|
-
end
|
81
|
-
|
82
79
|
def visit_Arel_Nodes_DeleteStatement o, collector
|
83
80
|
collector << 'DELETE FROM '
|
84
81
|
collector = visit o.relation, collector
|
85
82
|
if o.wheres.any?
|
86
|
-
collector <<
|
83
|
+
collector << WHERE
|
87
84
|
collector = inject_join o.wheres, collector, AND
|
88
85
|
end
|
89
86
|
|
@@ -169,34 +166,38 @@ module Arel
|
|
169
166
|
collector << "FALSE"
|
170
167
|
end
|
171
168
|
|
172
|
-
def
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
169
|
+
def visit_Arel_Nodes_ValuesList o, collector
|
170
|
+
collector << "VALUES "
|
171
|
+
|
172
|
+
len = o.rows.length - 1
|
173
|
+
o.rows.each_with_index { |row, i|
|
174
|
+
collector << '('
|
175
|
+
row_len = row.length - 1
|
176
|
+
row.each_with_index do |value, k|
|
177
|
+
case value
|
178
|
+
when Nodes::SqlLiteral, Nodes::BindParam
|
179
|
+
collector = visit(value, collector)
|
180
|
+
else
|
181
|
+
collector << quote(value)
|
182
|
+
end
|
183
|
+
collector << COMMA unless k == row_len
|
184
|
+
end
|
185
|
+
collector << ')'
|
186
|
+
collector << COMMA unless i == len
|
187
|
+
}
|
188
|
+
collector
|
188
189
|
end
|
189
190
|
|
190
191
|
def visit_Arel_Nodes_Values o, collector
|
191
192
|
collector << "VALUES ("
|
192
193
|
|
193
194
|
len = o.expressions.length - 1
|
194
|
-
o.expressions.
|
195
|
+
o.expressions.each_with_index { |value, i|
|
195
196
|
case value
|
196
197
|
when Nodes::SqlLiteral, Nodes::BindParam
|
197
198
|
collector = visit value, collector
|
198
199
|
else
|
199
|
-
collector << quote(value
|
200
|
+
collector << quote(value).to_s
|
200
201
|
end
|
201
202
|
unless i == len
|
202
203
|
collector << COMMA
|
@@ -286,12 +287,12 @@ module Arel
|
|
286
287
|
|
287
288
|
def visit_Arel_Nodes_With o, collector
|
288
289
|
collector << "WITH "
|
289
|
-
inject_join o.children, collector,
|
290
|
+
inject_join o.children, collector, COMMA
|
290
291
|
end
|
291
292
|
|
292
293
|
def visit_Arel_Nodes_WithRecursive o, collector
|
293
294
|
collector << "WITH RECURSIVE "
|
294
|
-
inject_join o.children, collector,
|
295
|
+
inject_join o.children, collector, COMMA
|
295
296
|
end
|
296
297
|
|
297
298
|
def visit_Arel_Nodes_Union o, collector
|
@@ -426,7 +427,8 @@ module Arel
|
|
426
427
|
end
|
427
428
|
|
428
429
|
def visit_Arel_SelectManager o, collector
|
429
|
-
collector <<
|
430
|
+
collector << '('
|
431
|
+
visit(o.ast, collector) << ')'
|
430
432
|
end
|
431
433
|
|
432
434
|
def visit_Arel_Nodes_Ascending o, collector
|
@@ -545,7 +547,7 @@ module Arel
|
|
545
547
|
end
|
546
548
|
if o.right.any?
|
547
549
|
collector << SPACE if o.left
|
548
|
-
collector = inject_join o.right, collector,
|
550
|
+
collector = inject_join o.right, collector, SPACE
|
549
551
|
end
|
550
552
|
collector
|
551
553
|
end
|
@@ -652,7 +654,7 @@ module Arel
|
|
652
654
|
else
|
653
655
|
collector = visit o.left, collector
|
654
656
|
collector << " = "
|
655
|
-
collector << quote(o.right
|
657
|
+
collector << quote(o.right).to_s
|
656
658
|
end
|
657
659
|
end
|
658
660
|
|
@@ -736,7 +738,7 @@ module Arel
|
|
736
738
|
def literal o, collector; collector << o.to_s; end
|
737
739
|
|
738
740
|
def visit_Arel_Nodes_BindParam o, collector
|
739
|
-
collector.add_bind(o) { "?" }
|
741
|
+
collector.add_bind(o.value) { "?" }
|
740
742
|
end
|
741
743
|
|
742
744
|
alias :visit_Arel_Nodes_SqlLiteral :literal
|
@@ -748,7 +750,7 @@ module Arel
|
|
748
750
|
if a && a.able_to_type_cast?
|
749
751
|
quote(a.type_cast_for_database(o))
|
750
752
|
else
|
751
|
-
quote(o
|
753
|
+
quote(o)
|
752
754
|
end
|
753
755
|
end
|
754
756
|
|
@@ -792,12 +794,9 @@ module Arel
|
|
792
794
|
end
|
793
795
|
alias :visit_Set :visit_Array
|
794
796
|
|
795
|
-
def quote value
|
797
|
+
def quote value
|
796
798
|
return value if Arel::Nodes::SqlLiteral === value
|
797
|
-
|
798
|
-
print_type_cast_deprecation
|
799
|
-
end
|
800
|
-
@connection.quote value, column
|
799
|
+
@connection.quote value
|
801
800
|
end
|
802
801
|
|
803
802
|
def quote_table_name name
|
@@ -846,20 +845,6 @@ module Arel
|
|
846
845
|
collector
|
847
846
|
end
|
848
847
|
end
|
849
|
-
|
850
|
-
def print_type_cast_deprecation
|
851
|
-
unless defined?($arel_silence_type_casting_deprecation) && $arel_silence_type_casting_deprecation
|
852
|
-
warn <<-eowarn
|
853
|
-
Arel performing automatic type casting is deprecated, and will be removed in Arel 8.0. If you are seeing this, it is because you are manually passing a value to an Arel predicate, and the `Arel::Table` object was constructed manually. The easiest way to remove this warning is to use an `Arel::Table` object returned from calling `arel_table` on an ActiveRecord::Base subclass.
|
854
|
-
|
855
|
-
If you're certain the value is already of the right type, change `attribute.eq(value)` to `attribute.eq(Arel::Nodes::Quoted.new(value))` (you will be able to remove that in Arel 8.0, it is only required to silence this deprecation warning).
|
856
|
-
|
857
|
-
You can also silence this warning globally by setting `$arel_silence_type_casting_deprecation` to `true`. (Do NOT do this if you are a library author)
|
858
|
-
|
859
|
-
If you are passing user input to a predicate, you must either give an appropriate type caster object to the `Arel::Table`, or manually cast the value before passing it to Arel.
|
860
|
-
eowarn
|
861
|
-
end
|
862
|
-
end
|
863
848
|
end
|
864
849
|
end
|
865
850
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Arel
|
2
3
|
module Visitors
|
3
4
|
class Visitor
|
@@ -26,9 +27,10 @@ module Arel
|
|
26
27
|
end
|
27
28
|
|
28
29
|
def visit object
|
29
|
-
|
30
|
+
dispatch_method = dispatch[object.class]
|
31
|
+
send dispatch_method, object
|
30
32
|
rescue NoMethodError => e
|
31
|
-
raise e if respond_to?(
|
33
|
+
raise e if respond_to?(dispatch_method, true)
|
32
34
|
superklass = object.class.ancestors.find { |klass|
|
33
35
|
respond_to?(dispatch[klass], true)
|
34
36
|
}
|
data/lib/arel/visitors.rb
CHANGED
data/lib/arel.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'arel/errors'
|
3
|
+
|
1
4
|
require 'arel/crud'
|
2
5
|
require 'arel/factory_methods'
|
3
6
|
|
@@ -21,7 +24,7 @@ require 'arel/delete_manager'
|
|
21
24
|
require 'arel/nodes'
|
22
25
|
|
23
26
|
module Arel
|
24
|
-
VERSION = '
|
27
|
+
VERSION = '9.0.0'
|
25
28
|
|
26
29
|
def self.sql raw_sql
|
27
30
|
Arel::Nodes::SqlLiteral.new raw_sql
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 9.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: minitest
|
@@ -55,6 +55,20 @@ dependencies:
|
|
55
55
|
- - ">="
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '0'
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: concurrent-ruby
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '1.0'
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '1.0'
|
58
72
|
description: |-
|
59
73
|
Arel Really Exasperates Logicians
|
60
74
|
|
@@ -85,11 +99,14 @@ files:
|
|
85
99
|
- lib/arel/attributes.rb
|
86
100
|
- lib/arel/attributes/attribute.rb
|
87
101
|
- lib/arel/collectors/bind.rb
|
102
|
+
- lib/arel/collectors/composite.rb
|
88
103
|
- lib/arel/collectors/plain_string.rb
|
89
104
|
- lib/arel/collectors/sql_string.rb
|
105
|
+
- lib/arel/collectors/substitute_binds.rb
|
90
106
|
- lib/arel/compatibility/wheres.rb
|
91
107
|
- lib/arel/crud.rb
|
92
108
|
- lib/arel/delete_manager.rb
|
109
|
+
- lib/arel/errors.rb
|
93
110
|
- lib/arel/expressions.rb
|
94
111
|
- lib/arel/factory_methods.rb
|
95
112
|
- lib/arel/insert_manager.rb
|
@@ -134,6 +151,7 @@ files:
|
|
134
151
|
- lib/arel/nodes/unqualified_column.rb
|
135
152
|
- lib/arel/nodes/update_statement.rb
|
136
153
|
- lib/arel/nodes/values.rb
|
154
|
+
- lib/arel/nodes/values_list.rb
|
137
155
|
- lib/arel/nodes/window.rb
|
138
156
|
- lib/arel/nodes/with.rb
|
139
157
|
- lib/arel/order_predications.rb
|
@@ -143,8 +161,6 @@ files:
|
|
143
161
|
- lib/arel/tree_manager.rb
|
144
162
|
- lib/arel/update_manager.rb
|
145
163
|
- lib/arel/visitors.rb
|
146
|
-
- lib/arel/visitors/bind_substitute.rb
|
147
|
-
- lib/arel/visitors/bind_visitor.rb
|
148
164
|
- lib/arel/visitors/depth_first.rb
|
149
165
|
- lib/arel/visitors/dot.rb
|
150
166
|
- lib/arel/visitors/ibm_db.rb
|
@@ -174,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
174
190
|
requirements:
|
175
191
|
- - ">="
|
176
192
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
193
|
+
version: 2.2.2
|
178
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
195
|
requirements:
|
180
196
|
- - ">="
|
@@ -182,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
198
|
version: '0'
|
183
199
|
requirements: []
|
184
200
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.6.12
|
186
202
|
signing_key:
|
187
203
|
specification_version: 4
|
188
204
|
summary: Arel Really Exasperates Logicians Arel is a SQL AST manager for Ruby
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module Arel
|
2
|
-
module Visitors
|
3
|
-
module BindVisitor
|
4
|
-
def initialize target
|
5
|
-
@block = nil
|
6
|
-
super
|
7
|
-
end
|
8
|
-
|
9
|
-
def accept node, collector, &block
|
10
|
-
@block = block if block_given?
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def visit_Arel_Nodes_Assignment o, collector
|
17
|
-
if o.right.is_a? Arel::Nodes::BindParam
|
18
|
-
collector = visit o.left, collector
|
19
|
-
collector << " = "
|
20
|
-
visit o.right, collector
|
21
|
-
else
|
22
|
-
super
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def visit_Arel_Nodes_BindParam o, collector
|
27
|
-
if @block
|
28
|
-
val = @block.call
|
29
|
-
if String === val
|
30
|
-
collector << val
|
31
|
-
end
|
32
|
-
else
|
33
|
-
super
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|