arel 5.0.1.20140414130214 → 6.0.0.beta1
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/.travis.yml +4 -2
- data/History.txt +9 -4
- data/Manifest.txt +9 -7
- data/README.markdown +85 -8
- data/Rakefile +1 -1
- data/arel.gemspec +15 -16
- data/lib/arel.rb +1 -12
- data/lib/arel/collectors/bind.rb +36 -0
- data/lib/arel/collectors/plain_string.rb +18 -0
- data/lib/arel/collectors/sql_string.rb +18 -0
- data/lib/arel/factory_methods.rb +1 -1
- data/lib/arel/insert_manager.rb +5 -1
- data/lib/arel/nodes.rb +41 -0
- data/lib/arel/nodes/and.rb +1 -5
- data/lib/arel/nodes/binary.rb +2 -0
- data/lib/arel/nodes/extract.rb +0 -2
- data/lib/arel/nodes/full_outer_join.rb +6 -0
- data/lib/arel/nodes/function.rb +0 -1
- data/lib/arel/nodes/insert_statement.rb +5 -2
- data/lib/arel/nodes/node.rb +5 -1
- data/lib/arel/nodes/right_outer_join.rb +6 -0
- data/lib/arel/nodes/window.rb +23 -5
- data/lib/arel/predications.rb +41 -33
- data/lib/arel/select_manager.rb +13 -37
- data/lib/arel/table.rb +13 -9
- data/lib/arel/tree_manager.rb +8 -2
- data/lib/arel/update_manager.rb +2 -2
- data/lib/arel/visitors.rb +0 -2
- data/lib/arel/visitors/bind_substitute.rb +9 -0
- data/lib/arel/visitors/bind_visitor.rb +10 -5
- data/lib/arel/visitors/depth_first.rb +60 -57
- data/lib/arel/visitors/dot.rb +84 -80
- data/lib/arel/visitors/ibm_db.rb +4 -2
- data/lib/arel/visitors/informix.rb +39 -21
- data/lib/arel/visitors/mssql.rb +41 -23
- data/lib/arel/visitors/mysql.rb +48 -22
- data/lib/arel/visitors/oracle.rb +33 -24
- data/lib/arel/visitors/postgresql.rb +15 -8
- data/lib/arel/visitors/reduce.rb +25 -0
- data/lib/arel/visitors/sqlite.rb +3 -2
- data/lib/arel/visitors/to_sql.rb +455 -248
- data/lib/arel/visitors/visitor.rb +2 -2
- data/lib/arel/visitors/where_sql.rb +3 -2
- data/test/attributes/test_attribute.rb +12 -3
- data/test/collectors/test_bind_collector.rb +70 -0
- data/test/collectors/test_sql_string.rb +38 -0
- data/test/helper.rb +10 -1
- data/test/nodes/test_bin.rb +2 -2
- data/test/nodes/test_count.rb +0 -6
- data/test/nodes/test_equality.rb +1 -1
- data/test/nodes/test_grouping.rb +1 -1
- data/test/nodes/test_infix_operation.rb +1 -1
- data/test/nodes/test_select_core.rb +7 -7
- data/test/nodes/test_sql_literal.rb +10 -6
- data/test/nodes/test_window.rb +9 -3
- data/test/support/fake_record.rb +16 -4
- data/test/test_factory_methods.rb +1 -1
- data/test/test_insert_manager.rb +33 -4
- data/test/test_select_manager.rb +164 -92
- data/test/test_table.rb +49 -4
- data/test/visitors/test_bind_visitor.rb +18 -10
- data/test/visitors/test_depth_first.rb +12 -0
- data/test/visitors/test_dot.rb +4 -4
- data/test/visitors/test_ibm_db.rb +11 -5
- data/test/visitors/test_informix.rb +14 -8
- data/test/visitors/test_mssql.rb +12 -8
- data/test/visitors/test_mysql.rb +17 -12
- data/test/visitors/test_oracle.rb +25 -21
- data/test/visitors/test_postgres.rb +50 -12
- data/test/visitors/test_sqlite.rb +2 -2
- data/test/visitors/test_to_sql.rb +177 -81
- metadata +24 -19
- data/lib/arel/deprecated.rb +0 -4
- data/lib/arel/expression.rb +0 -5
- data/lib/arel/sql/engine.rb +0 -10
- data/lib/arel/sql_literal.rb +0 -4
- data/lib/arel/visitors/join_sql.rb +0 -19
- data/lib/arel/visitors/order_clauses.rb +0 -11
- data/test/visitors/test_join_sql.rb +0 -42
data/lib/arel/table.rb
CHANGED
@@ -52,26 +52,22 @@ primary_key (#{caller.first}) is deprecated and will be removed in Arel 4.0.0
|
|
52
52
|
SelectManager.new(@engine, table)
|
53
53
|
end
|
54
54
|
|
55
|
-
def joins manager
|
56
|
-
if $VERBOSE
|
57
|
-
warn "joins is deprecated and will be removed in 4.0.0"
|
58
|
-
warn "please remove your call to joins from #{caller.first}"
|
59
|
-
end
|
60
|
-
nil
|
61
|
-
end
|
62
|
-
|
63
55
|
def join relation, klass = Nodes::InnerJoin
|
64
56
|
return from(self) unless relation
|
65
57
|
|
66
58
|
case relation
|
67
59
|
when String, Nodes::SqlLiteral
|
68
|
-
raise if relation.
|
60
|
+
raise if relation.empty?
|
69
61
|
klass = Nodes::StringJoin
|
70
62
|
end
|
71
63
|
|
72
64
|
from(self).join(relation, klass)
|
73
65
|
end
|
74
66
|
|
67
|
+
def outer_join relation
|
68
|
+
join(relation, Nodes::OuterJoin)
|
69
|
+
end
|
70
|
+
|
75
71
|
def group *columns
|
76
72
|
from(self).group(*columns)
|
77
73
|
end
|
@@ -112,6 +108,14 @@ primary_key (#{caller.first}) is deprecated and will be removed in Arel 4.0.0
|
|
112
108
|
InsertManager.new(@engine)
|
113
109
|
end
|
114
110
|
|
111
|
+
def update_manager
|
112
|
+
UpdateManager.new(@engine)
|
113
|
+
end
|
114
|
+
|
115
|
+
def delete_manager
|
116
|
+
DeleteManager.new(@engine)
|
117
|
+
end
|
118
|
+
|
115
119
|
def hash
|
116
120
|
# Perf note: aliases, table alias and engine is excluded from the hash
|
117
121
|
# aliases can have a loop back to this table breaking hashes in parent
|
data/lib/arel/tree_manager.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'arel/collectors/sql_string'
|
2
|
+
|
1
3
|
module Arel
|
2
4
|
class TreeManager
|
3
5
|
include Arel::FactoryMethods
|
@@ -13,7 +15,9 @@ module Arel
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def to_dot
|
16
|
-
|
18
|
+
collector = Arel::Collectors::PlainString.new
|
19
|
+
collector = Visitors::Dot.new.accept @ast, collector
|
20
|
+
collector.value
|
17
21
|
end
|
18
22
|
|
19
23
|
def visitor
|
@@ -21,7 +25,9 @@ module Arel
|
|
21
25
|
end
|
22
26
|
|
23
27
|
def to_sql
|
24
|
-
|
28
|
+
collector = Arel::Collectors::SQLString.new
|
29
|
+
collector = visitor.accept @ast, collector
|
30
|
+
collector.value
|
25
31
|
end
|
26
32
|
|
27
33
|
def initialize_copy other
|
data/lib/arel/update_manager.rb
CHANGED
@@ -7,12 +7,12 @@ module Arel
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def take limit
|
10
|
-
@ast.limit = Nodes::Limit.new(limit) if limit
|
10
|
+
@ast.limit = Nodes::Limit.new(Nodes.build_quoted(limit)) if limit
|
11
11
|
self
|
12
12
|
end
|
13
13
|
|
14
14
|
def key= key
|
15
|
-
@ast.key = key
|
15
|
+
@ast.key = Nodes.build_quoted(key)
|
16
16
|
end
|
17
17
|
|
18
18
|
def key
|
data/lib/arel/visitors.rb
CHANGED
@@ -6,9 +6,7 @@ require 'arel/visitors/postgresql'
|
|
6
6
|
require 'arel/visitors/mysql'
|
7
7
|
require 'arel/visitors/mssql'
|
8
8
|
require 'arel/visitors/oracle'
|
9
|
-
require 'arel/visitors/join_sql'
|
10
9
|
require 'arel/visitors/where_sql'
|
11
|
-
require 'arel/visitors/order_clauses'
|
12
10
|
require 'arel/visitors/dot'
|
13
11
|
require 'arel/visitors/ibm_db'
|
14
12
|
require 'arel/visitors/informix'
|
@@ -6,24 +6,29 @@ module Arel
|
|
6
6
|
super
|
7
7
|
end
|
8
8
|
|
9
|
-
def accept node, &block
|
9
|
+
def accept node, collector, &block
|
10
10
|
@block = block if block_given?
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
-
def visit_Arel_Nodes_Assignment o,
|
16
|
+
def visit_Arel_Nodes_Assignment o, collector
|
17
17
|
if o.right.is_a? Arel::Nodes::BindParam
|
18
|
-
|
18
|
+
collector = visit o.left, collector
|
19
|
+
collector << " = "
|
20
|
+
visit o.right, collector
|
19
21
|
else
|
20
22
|
super
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
|
-
def visit_Arel_Nodes_BindParam o,
|
26
|
+
def visit_Arel_Nodes_BindParam o, collector
|
25
27
|
if @block
|
26
|
-
@block.call
|
28
|
+
val = @block.call
|
29
|
+
if String === val
|
30
|
+
collector << val
|
31
|
+
end
|
27
32
|
else
|
28
33
|
super
|
29
34
|
end
|
@@ -7,13 +7,13 @@ module Arel
|
|
7
7
|
|
8
8
|
private
|
9
9
|
|
10
|
-
def visit o
|
10
|
+
def visit o
|
11
11
|
super
|
12
12
|
@block.call o
|
13
13
|
end
|
14
14
|
|
15
|
-
def unary o
|
16
|
-
visit o.expr
|
15
|
+
def unary o
|
16
|
+
visit o.expr
|
17
17
|
end
|
18
18
|
alias :visit_Arel_Nodes_Group :unary
|
19
19
|
alias :visit_Arel_Nodes_Grouping :unary
|
@@ -28,10 +28,10 @@ module Arel
|
|
28
28
|
alias :visit_Arel_Nodes_Top :unary
|
29
29
|
alias :visit_Arel_Nodes_UnqualifiedColumn :unary
|
30
30
|
|
31
|
-
def function o
|
32
|
-
visit o.expressions
|
33
|
-
visit o.alias
|
34
|
-
visit o.distinct
|
31
|
+
def function o
|
32
|
+
visit o.expressions
|
33
|
+
visit o.alias
|
34
|
+
visit o.distinct
|
35
35
|
end
|
36
36
|
alias :visit_Arel_Nodes_Avg :function
|
37
37
|
alias :visit_Arel_Nodes_Exists :function
|
@@ -39,27 +39,27 @@ module Arel
|
|
39
39
|
alias :visit_Arel_Nodes_Min :function
|
40
40
|
alias :visit_Arel_Nodes_Sum :function
|
41
41
|
|
42
|
-
def visit_Arel_Nodes_NamedFunction o
|
43
|
-
visit o.name
|
44
|
-
visit o.expressions
|
45
|
-
visit o.distinct
|
46
|
-
visit o.alias
|
42
|
+
def visit_Arel_Nodes_NamedFunction o
|
43
|
+
visit o.name
|
44
|
+
visit o.expressions
|
45
|
+
visit o.distinct
|
46
|
+
visit o.alias
|
47
47
|
end
|
48
48
|
|
49
|
-
def visit_Arel_Nodes_Count o
|
50
|
-
visit o.expressions
|
51
|
-
visit o.alias
|
52
|
-
visit o.distinct
|
49
|
+
def visit_Arel_Nodes_Count o
|
50
|
+
visit o.expressions
|
51
|
+
visit o.alias
|
52
|
+
visit o.distinct
|
53
53
|
end
|
54
54
|
|
55
|
-
def nary o
|
56
|
-
o.children.each { |child| visit child
|
55
|
+
def nary o
|
56
|
+
o.children.each { |child| visit child}
|
57
57
|
end
|
58
58
|
alias :visit_Arel_Nodes_And :nary
|
59
59
|
|
60
|
-
def binary o
|
61
|
-
visit o.left
|
62
|
-
visit o.right
|
60
|
+
def binary o
|
61
|
+
visit o.left
|
62
|
+
visit o.right
|
63
63
|
end
|
64
64
|
alias :visit_Arel_Nodes_As :binary
|
65
65
|
alias :visit_Arel_Nodes_Assignment :binary
|
@@ -67,6 +67,7 @@ module Arel
|
|
67
67
|
alias :visit_Arel_Nodes_DeleteStatement :binary
|
68
68
|
alias :visit_Arel_Nodes_DoesNotMatch :binary
|
69
69
|
alias :visit_Arel_Nodes_Equality :binary
|
70
|
+
alias :visit_Arel_Nodes_FullOuterJoin :binary
|
70
71
|
alias :visit_Arel_Nodes_GreaterThan :binary
|
71
72
|
alias :visit_Arel_Nodes_GreaterThanOrEqual :binary
|
72
73
|
alias :visit_Arel_Nodes_In :binary
|
@@ -78,18 +79,21 @@ module Arel
|
|
78
79
|
alias :visit_Arel_Nodes_Matches :binary
|
79
80
|
alias :visit_Arel_Nodes_NotEqual :binary
|
80
81
|
alias :visit_Arel_Nodes_NotIn :binary
|
82
|
+
alias :visit_Arel_Nodes_NotRegexp :binary
|
81
83
|
alias :visit_Arel_Nodes_Or :binary
|
82
84
|
alias :visit_Arel_Nodes_OuterJoin :binary
|
85
|
+
alias :visit_Arel_Nodes_Regexp :binary
|
86
|
+
alias :visit_Arel_Nodes_RightOuterJoin :binary
|
83
87
|
alias :visit_Arel_Nodes_TableAlias :binary
|
84
88
|
alias :visit_Arel_Nodes_Values :binary
|
85
89
|
|
86
|
-
def visit_Arel_Nodes_StringJoin o
|
87
|
-
visit o.left
|
90
|
+
def visit_Arel_Nodes_StringJoin o
|
91
|
+
visit o.left
|
88
92
|
end
|
89
93
|
|
90
|
-
def visit_Arel_Attribute o
|
91
|
-
visit o.relation
|
92
|
-
visit o.name
|
94
|
+
def visit_Arel_Attribute o
|
95
|
+
visit o.relation
|
96
|
+
visit o.name
|
93
97
|
end
|
94
98
|
alias :visit_Arel_Attributes_Integer :visit_Arel_Attribute
|
95
99
|
alias :visit_Arel_Attributes_Float :visit_Arel_Attribute
|
@@ -99,11 +103,11 @@ module Arel
|
|
99
103
|
alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
|
100
104
|
alias :visit_Arel_Attributes_Decimal :visit_Arel_Attribute
|
101
105
|
|
102
|
-
def visit_Arel_Table o
|
103
|
-
visit o.name
|
106
|
+
def visit_Arel_Table o
|
107
|
+
visit o.name
|
104
108
|
end
|
105
109
|
|
106
|
-
def terminal o
|
110
|
+
def terminal o
|
107
111
|
end
|
108
112
|
alias :visit_ActiveSupport_Multibyte_Chars :terminal
|
109
113
|
alias :visit_ActiveSupport_StringInquirer :terminal
|
@@ -112,7 +116,6 @@ module Arel
|
|
112
116
|
alias :visit_Arel_Nodes_SqlLiteral :terminal
|
113
117
|
alias :visit_Arel_Nodes_BindParam :terminal
|
114
118
|
alias :visit_Arel_Nodes_Window :terminal
|
115
|
-
alias :visit_Arel_SqlLiteral :terminal
|
116
119
|
alias :visit_BigDecimal :terminal
|
117
120
|
alias :visit_Bignum :terminal
|
118
121
|
alias :visit_Class :terminal
|
@@ -127,43 +130,43 @@ module Arel
|
|
127
130
|
alias :visit_Time :terminal
|
128
131
|
alias :visit_TrueClass :terminal
|
129
132
|
|
130
|
-
def visit_Arel_Nodes_InsertStatement o
|
131
|
-
visit o.relation
|
132
|
-
visit o.columns
|
133
|
-
visit o.values
|
133
|
+
def visit_Arel_Nodes_InsertStatement o
|
134
|
+
visit o.relation
|
135
|
+
visit o.columns
|
136
|
+
visit o.values
|
134
137
|
end
|
135
138
|
|
136
|
-
def visit_Arel_Nodes_SelectCore o
|
137
|
-
visit o.projections
|
138
|
-
visit o.source
|
139
|
-
visit o.wheres
|
140
|
-
visit o.groups
|
141
|
-
visit o.windows
|
142
|
-
visit o.having
|
139
|
+
def visit_Arel_Nodes_SelectCore o
|
140
|
+
visit o.projections
|
141
|
+
visit o.source
|
142
|
+
visit o.wheres
|
143
|
+
visit o.groups
|
144
|
+
visit o.windows
|
145
|
+
visit o.having
|
143
146
|
end
|
144
147
|
|
145
|
-
def visit_Arel_Nodes_SelectStatement o
|
146
|
-
visit o.cores
|
147
|
-
visit o.orders
|
148
|
-
visit o.limit
|
149
|
-
visit o.lock
|
150
|
-
visit o.offset
|
148
|
+
def visit_Arel_Nodes_SelectStatement o
|
149
|
+
visit o.cores
|
150
|
+
visit o.orders
|
151
|
+
visit o.limit
|
152
|
+
visit o.lock
|
153
|
+
visit o.offset
|
151
154
|
end
|
152
155
|
|
153
|
-
def visit_Arel_Nodes_UpdateStatement o
|
154
|
-
visit o.relation
|
155
|
-
visit o.values
|
156
|
-
visit o.wheres
|
157
|
-
visit o.orders
|
158
|
-
visit o.limit
|
156
|
+
def visit_Arel_Nodes_UpdateStatement o
|
157
|
+
visit o.relation
|
158
|
+
visit o.values
|
159
|
+
visit o.wheres
|
160
|
+
visit o.orders
|
161
|
+
visit o.limit
|
159
162
|
end
|
160
163
|
|
161
|
-
def visit_Array o
|
162
|
-
o.each { |i| visit i
|
164
|
+
def visit_Array o
|
165
|
+
o.each { |i| visit i }
|
163
166
|
end
|
164
167
|
|
165
|
-
def visit_Hash o
|
166
|
-
o.each { |k,v| visit(k
|
168
|
+
def visit_Hash o
|
169
|
+
o.each { |k,v| visit(k); visit(v) }
|
167
170
|
end
|
168
171
|
end
|
169
172
|
end
|
data/lib/arel/visitors/dot.rb
CHANGED
@@ -22,47 +22,50 @@ module Arel
|
|
22
22
|
@seen = {}
|
23
23
|
end
|
24
24
|
|
25
|
-
def accept object
|
26
|
-
|
27
|
-
to_dot
|
25
|
+
def accept object, collector
|
26
|
+
visit object
|
27
|
+
collector << to_dot
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
31
|
-
|
32
|
-
|
31
|
+
|
32
|
+
def visit_Arel_Nodes_Ordering o
|
33
|
+
visit_edge o, "expr"
|
33
34
|
end
|
34
35
|
|
35
|
-
def visit_Arel_Nodes_TableAlias o
|
36
|
-
visit_edge o,
|
37
|
-
visit_edge o,
|
36
|
+
def visit_Arel_Nodes_TableAlias o
|
37
|
+
visit_edge o, "name"
|
38
|
+
visit_edge o, "relation"
|
38
39
|
end
|
39
40
|
|
40
|
-
def visit_Arel_Nodes_Count o
|
41
|
-
visit_edge o,
|
42
|
-
visit_edge o,
|
41
|
+
def visit_Arel_Nodes_Count o
|
42
|
+
visit_edge o, "expressions"
|
43
|
+
visit_edge o, "distinct"
|
43
44
|
end
|
44
45
|
|
45
|
-
def visit_Arel_Nodes_Values o
|
46
|
-
visit_edge o,
|
46
|
+
def visit_Arel_Nodes_Values o
|
47
|
+
visit_edge o, "expressions"
|
47
48
|
end
|
48
49
|
|
49
|
-
def visit_Arel_Nodes_StringJoin o
|
50
|
-
visit_edge o,
|
50
|
+
def visit_Arel_Nodes_StringJoin o
|
51
|
+
visit_edge o, "left"
|
51
52
|
end
|
52
53
|
|
53
|
-
def visit_Arel_Nodes_InnerJoin o
|
54
|
-
visit_edge o,
|
55
|
-
visit_edge o,
|
54
|
+
def visit_Arel_Nodes_InnerJoin o
|
55
|
+
visit_edge o, "left"
|
56
|
+
visit_edge o, "right"
|
56
57
|
end
|
57
|
-
alias :
|
58
|
+
alias :visit_Arel_Nodes_FullOuterJoin :visit_Arel_Nodes_InnerJoin
|
59
|
+
alias :visit_Arel_Nodes_OuterJoin :visit_Arel_Nodes_InnerJoin
|
60
|
+
alias :visit_Arel_Nodes_RightOuterJoin :visit_Arel_Nodes_InnerJoin
|
58
61
|
|
59
|
-
def visit_Arel_Nodes_DeleteStatement o
|
60
|
-
visit_edge o,
|
61
|
-
visit_edge o,
|
62
|
+
def visit_Arel_Nodes_DeleteStatement o
|
63
|
+
visit_edge o, "relation"
|
64
|
+
visit_edge o, "wheres"
|
62
65
|
end
|
63
66
|
|
64
|
-
def unary o
|
65
|
-
visit_edge o,
|
67
|
+
def unary o
|
68
|
+
visit_edge o, "expr"
|
66
69
|
end
|
67
70
|
alias :visit_Arel_Nodes_Group :unary
|
68
71
|
alias :visit_Arel_Nodes_Grouping :unary
|
@@ -78,23 +81,25 @@ module Arel
|
|
78
81
|
alias :visit_Arel_Nodes_Rows :unary
|
79
82
|
alias :visit_Arel_Nodes_Range :unary
|
80
83
|
|
81
|
-
def window o
|
82
|
-
visit_edge o,
|
83
|
-
visit_edge o,
|
84
|
+
def window o
|
85
|
+
visit_edge o, "partitions"
|
86
|
+
visit_edge o, "orders"
|
87
|
+
visit_edge o, "framing"
|
84
88
|
end
|
85
89
|
alias :visit_Arel_Nodes_Window :window
|
86
90
|
|
87
|
-
def named_window o
|
88
|
-
visit_edge o,
|
89
|
-
visit_edge o,
|
90
|
-
visit_edge o,
|
91
|
+
def named_window o
|
92
|
+
visit_edge o, "partitions"
|
93
|
+
visit_edge o, "orders"
|
94
|
+
visit_edge o, "framing"
|
95
|
+
visit_edge o, "name"
|
91
96
|
end
|
92
97
|
alias :visit_Arel_Nodes_NamedWindow :named_window
|
93
98
|
|
94
|
-
def function o
|
95
|
-
visit_edge o,
|
96
|
-
visit_edge o,
|
97
|
-
visit_edge o,
|
99
|
+
def function o
|
100
|
+
visit_edge o, "expressions"
|
101
|
+
visit_edge o, "distinct"
|
102
|
+
visit_edge o, "alias"
|
98
103
|
end
|
99
104
|
alias :visit_Arel_Nodes_Exists :function
|
100
105
|
alias :visit_Arel_Nodes_Min :function
|
@@ -102,52 +107,52 @@ module Arel
|
|
102
107
|
alias :visit_Arel_Nodes_Avg :function
|
103
108
|
alias :visit_Arel_Nodes_Sum :function
|
104
109
|
|
105
|
-
def extract o
|
106
|
-
visit_edge o,
|
107
|
-
visit_edge o,
|
110
|
+
def extract o
|
111
|
+
visit_edge o, "expressions"
|
112
|
+
visit_edge o, "alias"
|
108
113
|
end
|
109
114
|
alias :visit_Arel_Nodes_Extract :extract
|
110
115
|
|
111
|
-
def visit_Arel_Nodes_NamedFunction o
|
112
|
-
visit_edge o,
|
113
|
-
visit_edge o,
|
114
|
-
visit_edge o,
|
115
|
-
visit_edge o,
|
116
|
+
def visit_Arel_Nodes_NamedFunction o
|
117
|
+
visit_edge o, "name"
|
118
|
+
visit_edge o, "expressions"
|
119
|
+
visit_edge o, "distinct"
|
120
|
+
visit_edge o, "alias"
|
116
121
|
end
|
117
122
|
|
118
|
-
def visit_Arel_Nodes_InsertStatement o
|
119
|
-
visit_edge o,
|
120
|
-
visit_edge o,
|
121
|
-
visit_edge o,
|
123
|
+
def visit_Arel_Nodes_InsertStatement o
|
124
|
+
visit_edge o, "relation"
|
125
|
+
visit_edge o, "columns"
|
126
|
+
visit_edge o, "values"
|
122
127
|
end
|
123
128
|
|
124
|
-
def visit_Arel_Nodes_SelectCore o
|
125
|
-
visit_edge o,
|
126
|
-
visit_edge o,
|
127
|
-
visit_edge o,
|
128
|
-
visit_edge o,
|
129
|
+
def visit_Arel_Nodes_SelectCore o
|
130
|
+
visit_edge o, "source"
|
131
|
+
visit_edge o, "projections"
|
132
|
+
visit_edge o, "wheres"
|
133
|
+
visit_edge o, "windows"
|
129
134
|
end
|
130
135
|
|
131
|
-
def visit_Arel_Nodes_SelectStatement o
|
132
|
-
visit_edge o,
|
133
|
-
visit_edge o,
|
134
|
-
visit_edge o,
|
135
|
-
visit_edge o,
|
136
|
+
def visit_Arel_Nodes_SelectStatement o
|
137
|
+
visit_edge o, "cores"
|
138
|
+
visit_edge o, "limit"
|
139
|
+
visit_edge o, "orders"
|
140
|
+
visit_edge o, "offset"
|
136
141
|
end
|
137
142
|
|
138
|
-
def visit_Arel_Nodes_UpdateStatement o
|
139
|
-
visit_edge o,
|
140
|
-
visit_edge o,
|
141
|
-
visit_edge o,
|
143
|
+
def visit_Arel_Nodes_UpdateStatement o
|
144
|
+
visit_edge o, "relation"
|
145
|
+
visit_edge o, "wheres"
|
146
|
+
visit_edge o, "values"
|
142
147
|
end
|
143
148
|
|
144
|
-
def visit_Arel_Table o
|
145
|
-
visit_edge o,
|
149
|
+
def visit_Arel_Table o
|
150
|
+
visit_edge o, "name"
|
146
151
|
end
|
147
152
|
|
148
|
-
def visit_Arel_Attribute o
|
149
|
-
visit_edge o,
|
150
|
-
visit_edge o,
|
153
|
+
def visit_Arel_Attribute o
|
154
|
+
visit_edge o, "relation"
|
155
|
+
visit_edge o, "name"
|
151
156
|
end
|
152
157
|
alias :visit_Arel_Attributes_Integer :visit_Arel_Attribute
|
153
158
|
alias :visit_Arel_Attributes_Float :visit_Arel_Attribute
|
@@ -156,16 +161,16 @@ module Arel
|
|
156
161
|
alias :visit_Arel_Attributes_Boolean :visit_Arel_Attribute
|
157
162
|
alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
|
158
163
|
|
159
|
-
def nary o
|
164
|
+
def nary o
|
160
165
|
o.children.each_with_index do |x,i|
|
161
|
-
edge(i) { visit x
|
166
|
+
edge(i) { visit x }
|
162
167
|
end
|
163
168
|
end
|
164
169
|
alias :visit_Arel_Nodes_And :nary
|
165
170
|
|
166
|
-
def binary o
|
167
|
-
visit_edge o,
|
168
|
-
visit_edge o,
|
171
|
+
def binary o
|
172
|
+
visit_edge o, "left"
|
173
|
+
visit_edge o, "right"
|
169
174
|
end
|
170
175
|
alias :visit_Arel_Nodes_As :binary
|
171
176
|
alias :visit_Arel_Nodes_Assignment :binary
|
@@ -184,7 +189,7 @@ module Arel
|
|
184
189
|
alias :visit_Arel_Nodes_Or :binary
|
185
190
|
alias :visit_Arel_Nodes_Over :binary
|
186
191
|
|
187
|
-
def visit_String o
|
192
|
+
def visit_String o
|
188
193
|
@node_stack.last.fields << o
|
189
194
|
end
|
190
195
|
alias :visit_Time :visit_String
|
@@ -193,7 +198,6 @@ module Arel
|
|
193
198
|
alias :visit_NilClass :visit_String
|
194
199
|
alias :visit_TrueClass :visit_String
|
195
200
|
alias :visit_FalseClass :visit_String
|
196
|
-
alias :visit_Arel_SqlLiteral :visit_String
|
197
201
|
alias :visit_Arel_Nodes_BindParam :visit_String
|
198
202
|
alias :visit_Fixnum :visit_String
|
199
203
|
alias :visit_BigDecimal :visit_String
|
@@ -201,23 +205,23 @@ module Arel
|
|
201
205
|
alias :visit_Symbol :visit_String
|
202
206
|
alias :visit_Arel_Nodes_SqlLiteral :visit_String
|
203
207
|
|
204
|
-
def visit_Hash o
|
208
|
+
def visit_Hash o
|
205
209
|
o.each_with_index do |pair, i|
|
206
|
-
edge("pair_#{i}") { visit pair
|
210
|
+
edge("pair_#{i}") { visit pair }
|
207
211
|
end
|
208
212
|
end
|
209
213
|
|
210
|
-
def visit_Array o
|
214
|
+
def visit_Array o
|
211
215
|
o.each_with_index do |x,i|
|
212
|
-
edge(i) { visit x
|
216
|
+
edge(i) { visit x }
|
213
217
|
end
|
214
218
|
end
|
215
219
|
|
216
|
-
def visit_edge o,
|
217
|
-
edge(method) { visit o.send(method)
|
220
|
+
def visit_edge o, method
|
221
|
+
edge(method) { visit o.send(method) }
|
218
222
|
end
|
219
223
|
|
220
|
-
def visit o
|
224
|
+
def visit o
|
221
225
|
if node = @seen[o.object_id]
|
222
226
|
@edge_stack.last.to = node
|
223
227
|
return
|