aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-08-19 10:38:07 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-08-19 10:38:07 -0700
commit3283adc6d0edcc873256c78842f8ddd233577d08 (patch)
treea92d64c67ea987f65a465dbac97195cde4fbc820 /lib/arel
parent6451188abf647d6aa855d22db8d2d62a2b2c4542 (diff)
parent06c92a8557f5171704a121d0f4412e4c1e9a9c2b (diff)
downloadrails-3283adc6d0edcc873256c78842f8ddd233577d08.tar.gz
rails-3283adc6d0edcc873256c78842f8ddd233577d08.tar.bz2
rails-3283adc6d0edcc873256c78842f8ddd233577d08.zip
Merge branch 'v1' of github.com:flavorjones/arel into v1
* 'v1' of github.com:flavorjones/arel: DeleteStatement deep copy cleaning up describe/it block names SelectCore deep copies attributes Statement nodes deep-copy AST nodes TreeManager classes deep-copy their statements.
Diffstat (limited to 'lib/arel')
-rw-r--r--lib/arel/nodes/delete_statement.rb5
-rw-r--r--lib/arel/nodes/insert_statement.rb6
-rw-r--r--lib/arel/nodes/select_core.rb7
-rw-r--r--lib/arel/nodes/select_statement.rb5
-rw-r--r--lib/arel/nodes/update_statement.rb6
-rw-r--r--lib/arel/tree_manager.rb5
6 files changed, 34 insertions, 0 deletions
diff --git a/lib/arel/nodes/delete_statement.rb b/lib/arel/nodes/delete_statement.rb
index 54bf513c2b..b65177af05 100644
--- a/lib/arel/nodes/delete_statement.rb
+++ b/lib/arel/nodes/delete_statement.rb
@@ -7,6 +7,11 @@ module Arel
@from = nil
@wheres = []
end
+
+ def initialize_copy other
+ super
+ @wheres = @wheres.map { |o| o.clone }
+ end
end
end
end
diff --git a/lib/arel/nodes/insert_statement.rb b/lib/arel/nodes/insert_statement.rb
index ed601aa841..8c6e1234d0 100644
--- a/lib/arel/nodes/insert_statement.rb
+++ b/lib/arel/nodes/insert_statement.rb
@@ -8,6 +8,12 @@ module Arel
@columns = []
@values = []
end
+
+ def initialize_copy other
+ super
+ @columns = @columns.map { |o| o.clone }
+ @values = @values.map { |o| o.clone }
+ end
end
end
end
diff --git a/lib/arel/nodes/select_core.rb b/lib/arel/nodes/select_core.rb
index 39145de697..7ebdab315d 100644
--- a/lib/arel/nodes/select_core.rb
+++ b/lib/arel/nodes/select_core.rb
@@ -8,6 +8,13 @@ module Arel
@projections = []
@wheres = []
end
+
+ def initialize_copy other
+ super
+ @froms = @froms.map { |o| o.clone }
+ @projections = @projections.map { |o| o.clone }
+ @wheres = @wheres.map { |o| o.clone }
+ end
end
end
end
diff --git a/lib/arel/nodes/select_statement.rb b/lib/arel/nodes/select_statement.rb
index 122f6275fe..50fef776f6 100644
--- a/lib/arel/nodes/select_statement.rb
+++ b/lib/arel/nodes/select_statement.rb
@@ -8,6 +8,11 @@ module Arel
@cores = cores
@limit = nil
end
+
+ def initialize_copy other
+ super
+ @cores = @cores.map { |o| o.clone }
+ end
end
end
end
diff --git a/lib/arel/nodes/update_statement.rb b/lib/arel/nodes/update_statement.rb
index 9f069cddb3..27e3e4e6ac 100644
--- a/lib/arel/nodes/update_statement.rb
+++ b/lib/arel/nodes/update_statement.rb
@@ -8,6 +8,12 @@ module Arel
@wheres = []
@values = []
end
+
+ def initialize_copy other
+ super
+ @wheres = @wheres.map { |o| o.clone }
+ @values = @values.map { |o| o.clone }
+ end
end
end
end
diff --git a/lib/arel/tree_manager.rb b/lib/arel/tree_manager.rb
index d2027bedfa..24df5e0c09 100644
--- a/lib/arel/tree_manager.rb
+++ b/lib/arel/tree_manager.rb
@@ -15,5 +15,10 @@ module Arel
viz = Visitors::ToSql.new @engine
viz.accept @head
end
+
+ def initialize_copy other
+ super
+ @head = @head.clone
+ end
end
end