@@ -29,67 +29,25 @@ def visit_Arel_Nodes_Concat(o, collector)
29
29
visit o . right , collector
30
30
end
31
31
32
-
33
- # def prepare_update_statement(o)
34
- # if o.offset || has_group_by_and_having?(o) ||
35
- # has_join_sources?(o) && has_limit_or_offset_or_orders?(o)
36
- # super
37
- # else
38
- # o
39
- # end
40
- # end
41
-
42
32
def visit_Arel_Nodes_UpdateStatement ( o , collector )
43
-
44
-
45
-
46
-
47
-
48
- # binding.pry if $DEBUG
49
-
50
-
51
33
if has_join_sources? ( o ) && o . relation . left . instance_variable_get ( :@klass ) . composite_primary_key?
52
- _visit_Arel_Nodes_UpdateStatement ( o , collector )
34
+ update_statement_using_join ( o , collector )
53
35
else
54
36
if o . orders . any? && o . limit . nil?
55
37
o . limit = Nodes ::Limit . new ( 9_223_372_036_854_775_807 )
56
38
end
57
39
58
40
super
59
41
end
60
-
61
-
62
- # if o.key && o.key.is_a?(Arel::Attributes::Attribute) && o.key.relation.is_a?(Arel::Table) && o.key.relation.instance_variable_get(:@klass).composite_primary_key?
63
- # collector.retryable = false
64
- # _visit_Arel_Nodes_UpdateStatement(o, collector)
65
- # else
66
- # if o.orders.any? && o.limit.nil?
67
- # o.limit = Nodes::Limit.new(9_223_372_036_854_775_807)
68
- # end
69
- #
70
- # super
71
- # end
72
42
end
73
43
74
- def _visit_Arel_Nodes_UpdateStatement ( o , collector )
44
+ def update_statement_using_join ( o , collector )
75
45
collector << "UPDATE "
76
-
77
- # binding.pry if $DEBUG
78
-
79
- # if has_join_sources?(o)
80
- visit o . relation . left , collector
81
- # else
82
- # visit o.relation, collector
83
- # end
84
-
46
+ visit o . relation . left , collector
85
47
collect_nodes_for o . values , collector , " SET "
86
-
87
48
collector << " FROM "
88
49
visit o . relation , collector
89
-
90
50
collect_nodes_for o . wheres , collector , " WHERE " , " AND "
91
- # collect_nodes_for o.orders, collector, " ORDER BY "
92
- # maybe_visit o.limit, collector
93
51
end
94
52
95
53
def visit_Arel_Nodes_Lock ( o , collector )
0 commit comments